| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

16-09-2009, 11:30
|
|
kleiner57990
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 16
|
|
echo erst dann ausgeben wenn mehre typen den wert von var entsprechen
Hallo an alle hab mal eine frage wie bekomme ich es in das wenn KNRANR und telefon falsch sind anstatt das jeweilige echo nur eins raus bekomme: (also mit nur eins meine ich dann letzteres also "BITTE ALLE ROT MARKIERTEN FELDER AUSFÜLLEN!"
<?php
if(isset($_POST["Senden"])){
if(isset($_POST["KNRANR"]) && $_POST["KNRANR"] =="") {
echo "Bitte Kunden bzw Abonummer angeben!";
$fehlerknranr =17;
$var = 99;
}}
?>
<?php
if(isset($_POST["Senden"])){
if(isset($_POST["telefon"])&& $_POST["telefon"] ==""){
echo "Bitte Telefon Nummer eingeben!";
$fehlertelefon =18;
$var = 99;
}}?>
<?php
if(isset($_POST["Senden"])){if((empty ($_POST)== ($var == 99))==""){
echo "Bitte alle rot markiete Felder ausfüllen";
}}
?>
Geändert von kleiner57990 (16-09-2009 um 11:36 Uhr)
|

16-09-2009, 11:53
|
|
Caine Luveno
Registrierter Benutzer
|
|
Registriert seit: May 2004
Beiträge: 40
|
|
Da hast du dir was zusammengebaut... Code Tags und Einrücken erleichtert das Lesen übrigens erheblich.
PHP-Code:
$errors = array();
if (isset($_POST['Senden']) {
$errors['knrank'] = !isset($_POST["KNRANR"]);
$errors['telefon'] = !isset($_POST["telefon"]);
}
if (count($errors) == 2) {
echo 'Bitte alle rot amrkierten Felder ausfüllen';
} else {
if ($errors['knrank'])
echo 'Bitte Kunden bzw Abonummer angeben!';
if ($errors['telefon'])
echo 'Bitte Telefon Nummer eingeben!';
}
Da du eher wie ein Neuling wirkst noch eine Erläuterung dazu:
Als erstes wird ein Array definiert welches alle Fehlerfelder beinhalten soll, denn count(isset()) kann man schlecht abfragen und count($_Post) ist auch unschön da Formulare manipulierbar sind.
Danach wird im Array gespeichert welche Felder undefiniert sind. Per count() kann man nun die Länge des Arrays und somit die Anzahl Fehler ermitteln und Abfragen oder ggf. individuelle Fehlermeldungen ausgeben.
|

16-09-2009, 12:12
|
|
kleiner57990
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 16
|
|
Ja bin ganz neu dabei ist jetzt die erste woche die ich damit arbeite:
ich habe nun folgendes eingegeben:
<?php
if(isset($_POST["Senden"])){
$errors['knrank'] = !isset($_POST["KNRANR"]);
$errors['telefon'] = !isset($_POST["telefon"]);
}
if (count($errors) == 2) {
echo 'Bitte alle rot amrkierten Felder ausfüllen';
} else {
if ($errors['knrank'])
echo 'Bitte Kunden bzw Abonummer angeben!';
if ($errors['telefon'])
echo 'Bitte Telefon Nummer eingeben!';
}
$fehlertelefon =18;
$fehlerknranr =17;
?>
Doch jetzt zeigt er mir telefon und KNRANR in meinem formular ob ausgefüllt oder nicht immer als rot (also falsch an)
PS: Da das formular länger ist habe ich ganz oben eine extra zeiele für die array angelegt.
<?php $errors = array() ?>
........(beginne des formular)
|

16-09-2009, 13:57
|
|
kleiner57990
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 16
|
|
Kann man das vlt nicht anders machen ohne diese array den damit komme ich nicht zurecht!
|

16-09-2009, 14:08
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
mit dem Array hat das vermutlich wenig zu tun. Ich denke, dass es an diesen beiden Variablen liegt:
Zitat:
Zitat von kleiner57990
$fehlertelefon =18;
$fehlerknranr =17;
|
Vorher wurden die im entsprechenden if-Block gesetzt, jetzt außerhalb. Daher werden die also immer belegt und sorgen vermutlich daher für die rote Kennzeichnung der Felder.
Ist es so besser?
PHP-Code:
if (isset($_POST["Senden"])) { $errors['knranr'] = !isset($_POST["KNRANR"]); $errors['telefon'] = !isset($_POST["telefon"]); } if (count($errors) == 2) { echo 'Bitte alle rot markierten Felder ausfüllen'; $fehlerknranr =17; $fehlertelefon =18; } else if ($errors['knranr']) { echo 'Bitte Kunden bzw Abonummer angeben!'; $fehlerknranr =17; } else if ($errors['telefon']) { echo 'Bitte Telefon Nummer eingeben!'; $fehlertelefon =18; }
Gruß,
Amica
|

16-09-2009, 15:49
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
@kleiner57990: Bitte nutze die [php]-Tags zur Formatierung von PHP-Code.
Und deine eigenen Aussagen brauchst du nicht in Fett und Rot schreiben - keine Angst, du wirst auch wenn du "normal" schreibst, nicht überlesen.
Bitte passe deine bisherigen Beiträge vor deiner nächsten Antwort entsprechend an.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

16-09-2009, 15:50
|
|
kleiner57990
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 16
|
|
Hab es jetzt so eingetippt wie du gesagt hast Amica.
Und ja es geht schon viel besser den jetzt erkennt er die fehler auch erst dann wenn ich auf Senden drücke was vorher nicht der fall war.
Jedenfalls Sind egal ob ich die felder ausfülle oder nicht er sieht sie nach dem klick auf Senden trotzdem als falsch an?
hast du vielleicht einen rat dazu?
PS: die zwei variabeln $fehler...dienen eigentlich nur dazu das später die namen auch in der passende farbe sind ihr mal mein eingegebener code vielleicht fällt dir ja da ein fehler auf:
<input name="telefon" type="text"
value="<?php
if (isset($_POST["telefon"])) {
echo $_POST["telefon"];
}
?>">
<?if($fehlertelefon ==18){?><font color="red"><?}?>
<br>
Telefon</p><?if($fehlertelefon ==18){?></font><?}?>
|

16-09-2009, 15:53
|
|
kleiner57990
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 16
|
|
Zitat:
Zitat von wahsaga
@kleiner57990: Bitte nutze die [php]-Tags zur Formatierung von PHP-Code.
Und deine eigenen Aussagen brauchst du nicht in Fett und Rot schreiben - keine Angst, du wirst auch wenn du "normal" schreibst, nicht überlesen.
Bitte passe deine bisherigen Beiträge vor deiner nächsten Antwort entsprechend an.
|
Ja mache ich kein thema.
PS:Sorry wegen rot und dicke buchstaben ich kopiere die quellecode einfach aus PHPEDIT raus und schreibe dann weiter dann zeigt er es von allein so an war keine absicht.
|

16-09-2009, 16:16
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von kleiner57990
Hab es jetzt so eingetippt wie du gesagt hast Amica.
er sieht sie nach dem klick auf Senden trotzdem als falsch an?
|
Sorry, hatte den oberen Teil von Caine übernommen, ohne drüber nachzudenken. Der ergibt aber keinen Sinn bzw. kann nicht so funktionieren, wie er wahrscheinlich soll.
Hier nochmal überarbeitet:
PHP-Code:
$errors = array("count" => 0);
if (isset($_POST["Senden"])) {
if (!isset($_POST["KNRANR"]) || !trim($_POST["KNRANR"])) {
$errors["count"]++;
$errors["knranr"] = true;
}
if (!isset($_POST["telefon"]) || !trim($_POST["telefon"])) {
$errors["count"]++;
$errors["telefon"] = true;
}
}
if ($errors["count"] == 2) {
echo 'Bitte alle rot markierten Felder ausfüllen';
$fehlerknranr =17;
$fehlertelefon =18;
}
else if (isset($errors['knranr'])) {
echo 'Bitte Kunden bzw Abonummer angeben!';
$fehlerknranr =17;
}
else if (isset($errors['telefon'])) {
echo 'Bitte Telefon Nummer eingeben!';
$fehlertelefon =18;
}
|

16-09-2009, 16:21
|
|
kleiner57990
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 16
|
|
Vielen vielen Danke Amica jetzt funktioniert es.
Kleine frage ist das jetzt ein großer aufwand mir grob zu erklären warum das jetzt funktioniert und der vorher nicht?
Den reinkopieren wie ich es gemacht habe damit es funktioniert ist ja schon möchte aber schon gerne kapieren was ich da überhaupt gemacht habe.
|

16-09-2009, 16:31
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Das count($errors) hat immer 2 ergeben, weil der Code von Caine so funktioniert, dass er die beiden Einträge im Array immer anlegt, und dabei nur mit Wahrheitswerten unterscheidet, ob der Fehler aufgetreten ist oder nicht.
Ich hab es jetzt so gemacht, dass ich das in ein if gepackt habe und dadurch wird nur was ins Array eingetragen, wenn wirklich der Fehler aufgetreten ist. Außerdem reicht es nicht, nur auf Anwesenheit des Feldes zu prüfen (isset), sondern man muss auch prüfen, ob der Wert leer ist oder nur Leerzeichen enthält, daher das trim.
Gruß,
Amica
|

16-09-2009, 16:40
|
|
kleiner57990
Registrierter Benutzer
|
|
Registriert seit: Sep 2009
Beiträge: 16
|
|
Okey hab es ungefähr kapiert. Nochmals vielen Dank.
|

16-09-2009, 16:43
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Privaten E-Mail-Support leiste ich nur, wenn ich es selbst und ausdrücklich anbiete.
Zitat:
Der fehler wird jetzt zwar echt dann angezeigt wenn ich auf Senden drück doch ob ich die felder ausfülle oder nicht am ende steht immer "Bitte füllen sie alle Felder aus!".
Hast du vielleicht eine idee wo das problem liegen könnte?
|
Du hast immer nur einen Teil des Codes gepostet. Eventuell ist da woanders noch eine Stelle, die das verursacht.
|

17-09-2009, 18:52
|
|
Caine Luveno
Registrierter Benutzer
|
|
Registriert seit: May 2004
Beiträge: 40
|
|
Zitat:
Zitat von AmicaNoctis
Das count($errors) hat immer 2 ergeben, weil der Code von Caine so funktioniert, dass er die beiden Einträge im Array immer anlegt, und dabei nur mit Wahrheitswerten unterscheidet, ob der Fehler aufgetreten ist oder nicht.
Ich hab es jetzt so gemacht, dass ich das in ein if gepackt habe und dadurch wird nur was ins Array eingetragen, wenn wirklich der Fehler aufgetreten ist. Außerdem reicht es nicht, nur auf Anwesenheit des Feldes zu prüfen (isset), sondern man muss auch prüfen, ob der Wert leer ist oder nur Leerzeichen enthält, daher das trim.
Gruß,
Amica
|
Jap... da hab ich gepennt... x). Da hab ich zwei mögliche Lösungsansätze in meinem Kopf miteinander vermischt.... denn eigentlich wollte ich auf $errors['wert'] true/false prüfen... oder halt alternativ nach seperaten if-abfragen nach count($errors) und das lief beides ineinander.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
|
|
|
|
PHP News
|