CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
18.05.2014, 18:59:38
|
Anfänger
|
|
Registriert seit: May 2014
Alter: 52
Beiträge: 7
|
|
Prüfung ausschließen wenn Feld nicht vorhanden
Hallo zusammen,
Da ich(wir) doch eher Anfänger sind denke ich das das der richtige Ort für meine Frage ist, auch wenn das Tehma eventuell doch schon etwas tiefgreifender wird.
Ein paar Freunde und ich basteln mit unseren rudimentären Kenntnissen an ein kleines Registrierungsformualr für unseren privaten Gebrauch. Aus oben bereits genannten Gründen haben wir dazu auch ein wenig aus dem netz als Vorlage genommen und an unsere Bedürfnisse angepasst.
Unter anderen soll in der Profilverwaltung des jeweiligen User auch das Geburtsdatum für Änderungen zur Verfügung stehen. Das klappt soweit auch ganz gut. Jedoch haben wir auch User als Paar berücksichtigt und bei denen sind ja 2 verschiedene BDay's vorhanden. Das einlesen und ändern klappt auch, jedoch sobald nur noch ein User als 'single' vorhanden ist scheitert es an der Prüfung der vorhandenen Felder im Formular.
Das heist wenn spalte 'Geschlecht' 'Paar' enthält zeige Geburtsdatum1 und Geburtsdatum2. Es wird dann vor dem ändern der daten geprüft ob die jeweiligen Felder (Tag, Monat, Jahr, Tag2, Monat2, Jahr2) vorhanden sind. Ist 'Geschlecht' nicht 'Paar' dann fallen die Felder Tag2, Monat2, Jahr2 weg.
Nun meine Frage wie ich die Prüfung von Tag2...etc. ausschließe wenn das Geschlecht nicht Paar ist.
Hier mal das was wir zusammen gezimmert haben. Ich weis. sicher nicht sehr elegant. Aber soll auch nur für ein kleines lokales Web herhalten. Sind natürlich auch für Voschläge zur besserung offen ;)
Ganz oben ist die Prüfung der Formularfelder zu finden.
Danke schon mal für etwaige Hilfe.
|
18.05.2014, 19:01:12
|
Anfänger
|
|
Registriert seit: May 2014
Alter: 52
Beiträge: 7
|
|
AW: Prüfung ausschließen wenn Feld nicht vorhanden
Da der Text offenbar zu lang war kommt ier jetzt der Code Teil 1. :)
PHP-Code:
<?php
// Daten ändern elseif(isset($_POST['submit']) AND $_POST['submit']=='Daten ändern'){ // Fehlerarray anlegen $errors = array(); // Prüfen, ob alle Formularfelder vorhanden sind if(!isset($_POST['Email'], $_POST['Show_Email'], $_POST['PLZ'], $_POST['Wohnort'], $_POST['Geschlecht'], $_POST['Monat'], $_POST['Jahr'], $_POST['Tag2'], $_POST['Monat2'], $_POST['Jahr2'], $_POST['MSN']))
// Ein Element im Fehlerarray hinzufügen $errors = "Bitte benutzen Sie das Formular aus Ihrem Profil"; else{ $emails = array(); $sql = "SELECT Email FROM User "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); while($row = mysql_fetch_assoc($result)) $emails[] = $row['Email']; // momentane Email-Adresse ausfiltern $sql = "SELECT Email FROM User WHERE ID = '".mysql_real_escape_string($_SESSION['UserID'])."' "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); $row = mysql_fetch_assoc($result);
if(trim($_POST['Email'])=='') $errors[]= "Bitte geben Sie Ihre Email-Adresse ein."; elseif(!preg_match('§^[\w\.-]+@[\w\.-]+\.[\w]{2,4}$§', trim($_POST['Email']))) $errors[]= "Ihre Email Adresse hat eine falsche Syntax."; elseif(in_array(trim($_POST['Email']), $emails) AND trim($_POST['Email'])!= $row['Email']) $errors[]= "Diese Email-Adresse ist bereits vergeben."; } if(count($errors)){ echo "Ihre Daten konnten nicht bearbeitet werden.<br>\n". "<br>\n"; foreach($errors as $error) echo $error."<br>\n"; echo "<br>\n". "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Profil</a>\n"; } else{ // Geburtsdatumsstring erstellen $Gebdatum = sprintf("%04d-%02d-%02d", $_POST['Jahr'], $_POST['Monat'], $_POST['Tag']); $Gebdatum2 = sprintf("%04d-%02d-%02d", $_POST['Jahr2'], $_POST['Monat2'], $_POST['Tag2']);
$sql = "UPDATE User SET Email = '".mysql_real_escape_string(trim($_POST['Email']))."', Show_Email = '".mysql_real_escape_string(trim($_POST['Show_Email']))."', Wohnort = '".mysql_real_escape_string(trim($_POST['Wohnort']))."', PLZ = '".mysql_real_escape_string(trim($_POST['PLZ']))."', Geschlecht = '".mysql_real_escape_string(trim($_POST['Geschlecht']))."', Gebdatum = '".mysql_real_escape_string(trim($Gebdatum))."', Gebdatum2 = '".mysql_real_escape_string(trim($Gebdatum2))."', MSN = '".mysql_real_escape_string(trim($_POST['MSN']))."' WHERE ID = '".mysql_real_escape_string($_SESSION['UserID'])."' "; mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); echo "Ihre Daten wurden erfolgreich gespeichert.<br>\n". "Zurück zu <a href=\"".$_SERVER['PHP_SELF']."\">Mein Profil</a><br>\n"; } } // Passwort ändern elseif(isset($_POST['submit']) AND $_POST['submit'] == 'Passwort ändern') { $errors=array(); // Altes Passwort zum Vergleich aus der Datenbank holen $sql = "SELECT Passwort FROM User WHERE ID = '".$_SESSION['UserID']."' "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); $row = mysql_fetch_assoc($result); if(!isset($_POST['Passwort'], $_POST['Passwortwiederholung'], $_POST['Altes_Passwort'])) $errors[]= "Bitte benutzen Sie das Formular aus Ihrem Profil."; else { if(trim($_POST['Passwort'])=="") $errors[]= "Bitte geben Sie Ihr Passwort ein."; elseif(strlen(trim($_POST['Passwort'])) < 6) $errors[]= "Ihr Passwort muss mindestens 6 Zeichen lang sein."; if(trim($_POST['Passwortwiederholung'])=="") $errors[]= "Bitte wiederholen Sie Ihr Passwort."; elseif(trim($_POST['Passwort']) != trim($_POST['Passwortwiederholung'])) $errors[]= "Ihre Passwortwiederholung war nicht korrekt."; // Kontrolle des alten Passworts if(trim($row['Passwort']) != md5(trim($_POST['Altes_Passwort']))) $errors[]= "Ihr altes Passwort ist nicht korrekt."; } if(count($errors)){ echo "Ihr Passwort konnte nicht gespeichert werden.<br>\n". "<br>\n"; foreach($errors as $error) echo $error."<br>\n"; echo "<br>\n". "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Profil</a>\n"; } else{ $sql = "UPDATE User SET Passwort ='".md5(trim($_POST['Passwort']))."' WHERE ID = '".$_SESSION['UserID']."' "; mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); echo "Ihr Passwort wurde erfolgreich gespeichert.<br>\n". "Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\">Profil</a>\n"; } } else {
$sql = "SELECT Nickname, Email, Show_Email, Wohnort, PLZ, Geschlecht, Gebdatum, Gebdatum2, MSN, Avatar FROM User WHERE ID = '".mysql_real_escape_string($_SESSION['UserID'])."' "; $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error()); $row = mysql_fetch_assoc($result); $bday = $row['Gebdatum'];
|
18.05.2014, 19:01:47
|
Anfänger
|
|
Registriert seit: May 2014
Alter: 52
Beiträge: 7
|
|
AW: Prüfung ausschließen wenn Feld nicht vorhanden
Und Teil 2
PHP-Code:
echo "<form ".
" name=\"Daten\" ".
" action=\"".$_SERVER['PHP_SELF']."\" ".
" method=\"post\" ".
" accept-charset=\"ISO-8859-1\">\n";
echo "<h5>Obligatorische Angaben</h5>\n";
echo "<span style=\"font-weight:bold;\">\n".
"Benutzername:\n".
"</span>\n";
echo htmlentities($row['Nickname'], ENT_QUOTES)."\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"Ihre.Adresse@Ihr-Anbieter.de\">\n".
"Email-Adresse:\n".
"</span>\n";
echo "<input type=\"text\" name=\"Email\" maxlength=\"70\" value=\"".htmlentities($row['Email'], ENT_QUOTES)."\">\n";
echo "<br>\n";
echo "<span>\n".
"Email-Adresse öffentlich anzeigen?:\n".
"</span>\n";
if($row['Show_Email']==1){
echo "<input type=\"radio\" name=\"Show_Email\" value=\"1\" checked> ja\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"0\"> nein\n";
}
else{
echo "<input type=\"radio\" name=\"Show_Email\" value=\"1\"> ja\n";
echo "<input type=\"radio\" name=\"Show_Email\" value=\"0\" checked> nein\n";
}
echo "<h5>Freiwillige Angaben</h5>\n";
echo "<span style=\"font-weight:bold;\">\n".
"PLZ:\n".
"</span>\n";
echo "<input type=\"text\" name=\"PLZ\" maxlength=\"70\" value=\"".htmlentities($row['PLZ'], ENT_QUOTES)."\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"Wohnort:\n".
"</span>\n";
echo "<input type=\"text\" name=\"Wohnort\" maxlength=\"70\" value=\"".htmlentities($row['Wohnort'], ENT_QUOTES)."\">\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\">\n".
"Ich/Wir bin/sind ein(e):\n".
"</span>\n";
echo htmlentities($row['Geschlecht'], ENT_QUOTES)."\n";
echo "<br>\n";
echo "Ändern: ";
if ($row['Geschlecht'] == "Frau")
{
echo "<input type=\"radio\" name=\"Geschlecht\" value=\"Frau\" checked> Frau\n";
} else {
echo "<input type=\"radio\" name=\"Geschlecht\" value=\"Frau\"> Frau\n";
}
if ($row['Geschlecht'] == "Mann")
{
echo "<input type=\"radio\" name=\"Geschlecht\" value=\"Mann\" checked> Mann\n";
} else {
echo "<input type=\"radio\" name=\"Geschlecht\" value=\"Mann\"> Mann\n";
}
if ($row['Geschlecht'] == "Paar")
{
echo "<input type=\"radio\" name=\"Geschlecht\" value=\"Paar\" checked> Paar\n";
} else {
echo "<input type=\"radio\" name=\"Geschlecht\" value=\"Paar\"> Paar\n";
}
echo "<br>\n";
$geschlecht = $row['Geschlecht'];
$datum1 = $row['Gebdatum'];
$datum2 = $row['Gebdatum2'];
if ($geschlecht == 'Paar') {
echo "<span style=\"font-weight:bold;\" ".
" title=\"Geburtsdatum angeben\">\n".
"Geburtsdatum von Ihr:\n".
"</span>\n";
echo "" . date_mybday($bday) . " <b>/</b>\n";
$age1 = new DateTime($row['Gebdatum']);
$age2 = new DateTime();
$interval = $age1->diff($age2);
echo $interval->format("%y Jahre");
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"Geburtsdatum angeben\">\n".
"Geburtsdatum ändern:\n".
"</span>\n";
echo "<br>\n";
//explode the mysql date
$mybd = explode("-", $row['Gebdatum']);
$monat = "$mybd[1]";
$tag = "$mybd[2]";
$jahr ="$mybd[0]";
$Monatsnamen = array(1 => 'Januar',
2 => 'Februar',
3 => 'März',
4 => 'April',
5 => 'Mai',
6 => 'Juni',
7 => 'Juli',
8 => 'August',
9 => 'September',
10 => 'Oktober',
11 => 'November',
12 => 'Dezember'
);
echo " <select name=\"Tag\">\n";
for($i=1;$i<=31;$i++){
$selected = ($i == $tag) ? " selected" : "";
echo " <option value='$i'" . $selected . ">".$i.".</option>n";
}
echo " </select>\n";
echo " <select name=\"Monat\">\n";
for($i=1;$i<=12;$i++){
$selected = ($i == $monat) ? " selected" : "";
echo " <option value='$i'" . $selected . ">".$Monatsnamen[$i]."</option>n";
}
echo " </select>\n";
echo " <select name=\"Jahr\">\n";
for($i=2000;$i>=1900;$i--){
$selected = ($i == $jahr) ? " selected" : "";
echo " <option value='$i'" . $selected . ">".$i."</option>n";
}
echo " </select>\n";
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"Geburtsdatum angeben\">\n".
"Geburtsdatum von Ihm:\n".
"</span>\n";
echo "" . date_mybday2($datum2) . " <b>/</b>\n";
$age12 = new DateTime($row['Gebdatum2']);
$age22 = new DateTime();
$interval = $age12->diff($age22);
echo $interval->format("%y Jahre");
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"Geburtsdatum angeben\">\n".
"Geburtsdatum ändern:\n".
"</span>\n";
echo "<br>\n";
//explode the mysql date
$datum2 = explode("-", $row['Gebdatum2']);
$monat2 = "$datum2[1]";
$tag2 = "$datum2[2]";
$jahr2 ="$datum2[0]";
$Monatsnamen = array(1 => 'Januar',
2 => 'Februar',
3 => 'März',
4 => 'April',
5 => 'Mai',
6 => 'Juni',
7 => 'Juli',
8 => 'August',
9 => 'September',
10 => 'Oktober',
11 => 'November',
12 => 'Dezember'
);
echo " <select name=\"Tag2\">\n";
for($i=1;$i<=31;$i++){
$selected = ($i == $tag2) ? " selected" : "";
echo " <option value='$i'" . $selected . ">".$i.".</option>n";
//echo "<option value=\"".$i."\">".$i.".</option>\n";
}
echo " </select>\n";
echo " <select name=\"Monat2\">\n";
for($i=1;$i<=12;$i++){
$selected = ($i == $monat2) ? " selected" : "";
echo " <option value='$i'" . $selected . ">".$Monatsnamen[$i]."</option>n";
}
echo " </select>\n";
echo " <select name=\"Jahr2\">\n";
for($i=2000;$i>=1900;$i--){
$selected = ($i == $jahr2) ? " selected" : "";
echo " <option value='$i'" . $selected . ">".$i."</option>n";
}
echo " </select>\n";
}
else {
echo "<span style=\"font-weight:bold;\" ".
" title=\"Geburtsdatum angeben\">\n".
"Geburtsdatum:\n".
"</span>\n";
echo "" . date_mybday($bday) . " <b>/</b>\n";
$age1 = new DateTime($row['Gebdatum']);
$age2 = new DateTime();
$interval = $age1->diff($age2);
echo $interval->format("%y Jahre");
echo "<br>\n";
echo "<span style=\"font-weight:bold;\" ".
" title=\"Geburtsdatum angeben\">\n".
"Geburtsdatum ändern:\n".
"</span>\n";
echo "<br>\n";
//explode the mysql date
$mybd = explode("-", $row['Gebdatum']);
$monat = "$mybd[1]";
$tag = "$mybd[2]";
$jahr ="$mybd[0]";
$Monatsnamen = array(1 => 'Januar',
2 => 'Februar',
3 => 'März',
4 => 'April',
5 => 'Mai',
6 => 'Juni',
7 => 'Juli',
8 => 'August',
9 => 'September',
10 => 'Oktober',
11 => 'November',
12 => 'Dezember'
);
echo " <select name=\"Tag\">\n";
echo " <option value=\"0\">Tag</option>\n";
for($i=1;$i<=31;$i++){
$selected = ($i == $tag) ? " selected" : "";
echo " <option value='$i'" . $selected . ">".$i.".</option>n";
}
echo " </select>\n";
echo " <select name=\"Monat\">\n";
echo " <option value=\"0\">Monat</option>\n";
for($i=1;$i<=12;$i++){
$selected = ($i == $monat) ? " selected" : "";
echo " <option value='$i'" . $selected . ">".$Monatsnamen[$i]."</option>n";
}
echo " </select>\n";
echo " <select name=\"Jahr\">\n";
echo " <option value=\"0\">Jahr</option>\n";
for($i=2000;$i>=1900;$i--){
$selected = ($i == $jahr) ? " selected" : "";
echo " <option value='$i'" . $selected . ">".$i."</option>n";
}
echo " </select>\n";
echo "<br>\n";
}
?>
|
18.05.2014, 21:03:33
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Prüfung ausschließen wenn Feld nicht vorhanden
Zitat:
Zitat von newbie42
Da der Text offenbar zu lang war kommt ier jetzt der Code Teil 1. :)
|
Alles viel zu lang. Ich analysiere doch kein halbgares Script, weilches länger als 2* pagedown ist.
|
19.05.2014, 00:41:13
|
Anfänger
|
|
Registriert seit: May 2014
Alter: 52
Beiträge: 7
|
|
AW: Prüfung ausschließen wenn Feld nicht vorhanden
sorry. dachte nur ich machs ausführlich. in den meisten foren wird ja gemeckert wenn man nur schnipsel postet.
ok. hier die kurzform.
ich versuche die felde Tag2, Monat2, Jahr2 bei der prüfung zu ignorieren wenn diese nicht vorhanden sind.
PHP-Code:
elseif(isset($_POST['submit']) AND $_POST['submit']=='Daten ändern'){
// Fehlerarray anlegen
$errors = array();
// Prüfen, ob alle Formularfelder vorhanden sind
if(!isset($_POST['Email'],
$_POST['Show_Email'],
$_POST['PLZ'],
$_POST['Wohnort'],
$_POST['Geschlecht'],
$_POST['Monat'],
$_POST['Jahr'],
$_POST['Tag2'],
$_POST['Monat2'],
$_POST['Jahr2'],
$_POST['MSN']))
// Ein Element im Fehlerarray hinzufügen
$errors = "Bitte benutzen Sie das Formular aus Ihrem Profil";
else{
|
19.05.2014, 01:26:04
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Prüfung ausschließen wenn Feld nicht vorhanden
Zitat:
Zitat von newbie42
sorry. dachte nur ich machs ausführlich. in den meisten foren wird ja gemeckert wenn man nur schnipsel postet.
|
Naja, es geht um ds Wesentliche. Dafür haben die PHP Götter Funktionen und Klassen (nach)erfunden.
Grundsätzlich: isset() ist schon mal nicht schlecht, aber es nutzt Dir nix, weil die Variable selbst wenn sie nur ein Leerzeichen enthält, von isset() ein true bekommt.
Teste die Variablen immer auf Plausibilität. Guck Dir das an:
http://de3.php.net/filter
http://de3.php.net/ctype
PHP-Code:
function checkPlz(){ return (filter_input(INPUT_POST, 'PLZ', FILTER_VALIDATE_INT)); }
oder (falls sich die Funktionen n PLZs stört, die mit einer 0 beginnen)
PHP-Code:
function checkPlz(){ id (empty($_POST['PLZ'])) return false; return ctype_digit($_POST['PLZ']); }
Du kannst nun das "Wächterprinzip" wählen:
Du rufst die erste Funktion auf. Diese ruft nur dann die nächste Funktion auf, wenn der Test === true war. Falls nicht, return false.
Dann reicht:
PHP-Code:
if (test() === false) echo "fehlerhafte Eingabe." else echo 'weiter im Text.'
|
19.05.2014, 23:12:19
|
Anfänger
|
|
Registriert seit: May 2014
Alter: 52
Beiträge: 7
|
|
AW: Prüfung ausschließen wenn Feld nicht vorhanden
ok. ich glaube zu verstehen das du mir sagen willst ich soll auch prüfen ob etwas sinnvolles in den feldern steht. hab ich auf meine liste. :)
aber hilft mir das weiter beim problem des ignorieren von
PHP-Code:
$_POST['Tag2'], $_POST['Monat2'], $_POST['Jahr2'],
wenn die felder gar nicht existieren? oder hab ich was übersehen?
weiter unten vor dem erstellen der dropdown felder sage ich ja
PHP-Code:
if ($geschlecht == 'Paar')
und das klappt ja auch. nur beim senden der neuen daten gibts dann fehler weil ja Tag2, Monat2 und Jahr2 nicht vorhanden sind wenn das geschlecht nicht Paar ist. ich dachte ich kann diese if Abfrage gleich irgendwie nochmals nutzen.
sorry wenn meine fragen bloed erscheinen, aber momentan ist alles, wie schon gesagt, ein wenig rudimentär. ich(wir) lesen uns aber rein in den stoff sofern es unsere zeit erlaubt.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:35:35 Uhr.
|