Bestätigungsmeldung
Leo
- php
Ein fröhliches Hallo an euch alle,
Ich möchte ja eigentlich nur eine simple Bestätigung in meine PHP-Seite einfügen, welche ausgeben sollte: Wenn nichts eingegeben = Meldung1; wenn richtig eingegeben und ausgeführt= Meldung2; wenn falsch eingegeben und nicht ausgeführt= Meldung3.
Nur so richtig bekomm ich das nicht geregelt, oder versuch ich da Äpfel mit Birnen zu vergleichen. Egal, ich sitz da schon drei Tage dran und hab jetzt aufgegeben, hoffe auf eure Unterstützung. Die PHP habe ich mal eingefügt (ist dem einen oder anderen wohl bekannt), das Problem seht ihr ganz unten zwischen den Pfeilen (-->? ?<--). Jetzt schon mal DANKE an alle, dir mir helfen wollen, Gruß Leo
<?PHP include ("db.php");
mysql_select_db("XXXXXXX") or die ("Die Datenbank existiert nicht");
if ($_GET['action'] == "mdel") {
if($_GET['mloe'] !=="") {
$sql = "DELETE FROM imo WHERE geheim ="$_GET[mloe]" ";
mysql_query($sql);
}
}
?>
<p>
<form method="GET" action="loeschen.php?action=mdel&geheim=loeschen">
<input type="hidden" name="action" value="mdel">
<input type="hidden" name="geheim" value="loeschen">
<table border="0">
<tr>
<td><font color="#000000", face="Verdana", size="2"><b>Antwort:</b></font></td>
<td><input size="14" type="text" name="mloe"/></td>
</tr>
<tr>
<td valign="middle"><br><input title="Absenden" width="75" type="submit" name="Submit" value="Löschen"/></td>
<td><br><input type="reset" value="Zurücksetzen" title="alle Eingaben löschen" name="reset"></td>
</tr>
</table>
</form>
<?PHP
/*
---------------------------------->?
if ($_GET['???'] == "")
{ echo "Antwort eingeben";}
elseif ($_GET['???'] == "???")
{ echo "Antwort richtig";}
elseif ($_GET['???'] != "???")
{ echo "Antwort falsch";}
?<--------------------------------
*/
?>
P.S. schreibt langsam, bin schon ALT
Mahlzeit Leo,
Ich möchte ja eigentlich nur eine simple Bestätigung in meine PHP-Seite einfügen, welche ausgeben sollte: Wenn nichts eingegeben = Meldung1; wenn richtig eingegeben und ausgeführt= Meldung2; wenn falsch eingegeben und nicht ausgeführt= Meldung3.
Du verarbeitest also irgendwo das, was der Benutzer eingegeben hat? Und abhängig von der Verarbeitung soll die eine oder andere Meldung ausgegeben werden?
Dann schreib doch einfach bei der Verarbeitung die Meldung in eine Variable und gib sie unten einfach aus:
> <?PHP include ("db.php");
>
$meldung = "Antwort eingeben"; // Standardwert
> mysql_select_db("XXXXXXX") or die ("Die Datenbank existiert nicht");
>
> if ($_GET['action'] == "mdel") {
$meldung = "Antwort falsch";
> if($_GET['mloe'] !=="") {
>
> $sql = "DELETE FROM imo WHERE geheim =\"$_GET[mloe]\" ";
// Du möchstest nicht einfach das, was der Benutzer eingegeben hat, an die Datenbank schicken. Du möchtest stattdessen, die Eingabe erst mit [link:http://de3.php.net/manual/de/function.mysql-real-escape-string.php@title=mysql_real_escape_string()] behandeln!
> mysql_query($sql);
// Hier musst Du prüfen, was genau [link:http://de3.php.net/manual/de/function.mysql-query.php@title=mysql_query() ]zurückgibt. Wenn mindestens eine Reihe geändert wurde (Stichwort: [link:http://de3.php.net/manual/de/function.mysql-affected-rows.php@title=mysql_affected_rows()]), kannst Du folgendes machen:
$meldung = "Antwort richtig";
> }
> }
> ?>
Jetzt musst Du nur noch an der Stelle, wo die Meldung stehen soll, folgendes schreiben:
echo $meldung;
MfG,
EKKi
Hallo EKKi,
Du verarbeitest also irgendwo das, was der Benutzer eingegeben hat? Und abhängig von der Verarbeitung soll die eine oder andere Meldung ausgegeben werden?
Genau so ist es. Danke für deine Antwort. Werde mich heute Abend mal hinsetzen und deinen Vorschlag versuchen umzusetzen. Die Links werde ich mir mal anschauen, daher wird eine weiter Antwort, ob's geklappt hat, wohl noch eine Weile dauern. Will's ja auch verstehen!!!
Ein GROßES Danke an dich EKKi,
Gruß Leo
Grüsse euch..
Ich noch mal, Leo. Also hat ja fast geklappt so wie es beschrieben war. Nur eines hat und kann so nicht funktionieren, die Abfrage "ob der eingegebene Wert" (in diesen Falle ein Klar-Text-Passwort) vorhanden ist. Wenn er vorhanden ist wird in der DB ein Eintrag gelöscht, wenn's den Wert nicht gibt, gibts auch keine Fehlermeldung. Ob das jemand verstanden hat? Sprich, wer ein Passwort kennt kann in der DB die dazugehörige Spalte löschen und es gibt eine Bestätigung. Hat man sich verschrieben oder gibt es das Passwort nicht, gibts auch keine Bestätigungsmeldung aber Unklarheit.
Nun die Frage von mir - Sollte das "DELETE FROM ..." nicht ausgeführt werden können, gibts dann von der DB eine Fehlermeldung zurück ( so wie bei mysql_affected_rows beschrieben: Falls die letze Anfrage fehlschlägt, liefert diese Funktion -1 zurück.) Dann könnte man doch diesen Fehlerwert mit dem zu erwarteten Fehlerwert vergleichen und auswerten. Und somit ein echo ausgeben.
Aber vielleicht gehts ja auch ganz anders, wer kann mich erhellen?
Danke, Leo
Die PHP:
<?PHP include ("db.php");
mysql_select_db("XXX") or die ("Die Datenbank existiert nicht");
if ($_GET['action'] == "mdel") {
$meldung = "<font size=2 color=#FF000000 face=Verdana><b>Fehler</b>, noch keine Eingabe erfolgt!</font>";
if ($_GET['mloe'] !=="") {
$sql = "DELETE FROM imo WHERE geheim ="$_GET[mloe]" ";
mysql_query($sql);
$meldung = "<font size=2 color=#FFFFFF face=Verdana>Ihre Anzeige wurde soeben gelöscht.</font>";
}
}
?>
<p>
<form method="GET" action="loeschen.php?action=mdel&geheim=loeschen">
<input type="hidden" name="action" value="mdel">
<input type="hidden" name="geheim" value="loeschen">
<table border="0">
<tr>
<td><font color="#000000", face="Verdana", size="2"><b>Passwort:</b></font></td>
<td><input size="14" type="text" name="mloe"/></td>
</tr>
<tr>
<td valign="middle"><br><input title="Absenden" width="75" type="submit" name="Submit" value="Löschen"/></td>
<td><br><input type="reset" value="Zurücksetzen" title="alle Eingaben löschen" name="reset"></td>
</tr>
</table>
</form>
<?PHP
echo $meldung;
?>
Mahlzeit Leo,
Ich noch mal, Leo. Also hat ja fast geklappt so wie es beschrieben war. Nur eines hat und kann so nicht funktionieren, die Abfrage "ob der eingegebene Wert" (in diesen Falle ein Klar-Text-Passwort) vorhanden ist.
Dann mach's doch anders. Die Abfrage, ob ein Wert vorhanden ist, macht man in SQL gemeinhin ungefähr auf folgende Weise:
SELECT COUNT(*) AS anzahl
FROM foo
WHERE bar = 'trödelöt';
Wo liegt Dein Problem?
Wenn er vorhanden ist wird in der DB ein Eintrag gelöscht, wenn's den Wert nicht gibt, gibts auch keine Fehlermeldung.
Wieso sollte es auch eine Fehlermeldung geben? Du gibst der Datenbank den Befehl, alle Datensätze zu löschen, auf die ein bestimmtes Kriterium zutrifft. Ob das jetzt 0, 1 oder 4782232 sind, spielt doch keine Rolle: wenn die Datenbank den Löschbefehl fehlerfrei durchführen konnte, wäre eine Fehlermeldung falsch. Allein aus dem Rückgabewert von mysql_affected_rows() kannst Du schließen, ob Datensätze gelöscht wurden.
Ob das jemand verstanden hat? Sprich, wer ein Passwort kennt kann in der DB die dazugehörige Spalte löschen und es gibt eine Bestätigung.
Die Bestätigung sieht dann so aus, dass der von mysql_affected_rows() zurückgegebene Wert > 0 ist.
Hat man sich verschrieben oder gibt es das Passwort nicht, gibts auch keine Bestätigungsmeldung aber Unklarheit.
Wieso? In dem Fall wäre der von mysql_affected_rows() zurückgegebene Wert = 0.
Nochmal: Wo liegt Dein Problem?
Nun die Frage von mir - Sollte das "DELETE FROM ..." nicht ausgeführt werden können, gibts dann von der DB eine Fehlermeldung zurück ( so wie bei mysql_affected_rows beschrieben: Falls die letze Anfrage fehlschlägt, liefert diese Funktion -1 zurück.)
Ja, wenn eine Funktion einen Fehler produziert, gibt's eine Fehlermeldung. Allerdings ist das bloße Nicht-Löschen von Datensätzen, weil keiner mit den von Dir gewünschten Kriterien existiert, kein Fehler.
Dann könnte man doch diesen Fehlerwert mit dem zu erwarteten Fehlerwert vergleichen und auswerten. Und somit ein echo ausgeben.
Häh?
$sql = "DELETE FROM imo WHERE geheim ="$_GET[mloe]" ";
Es ist immer noch eine wahnsinnig bescheuerte Idee, Benutzereingaben einfach ungeprüft an die Datenbank durchzureichen. Informiere Dich über die Benutzung von mysql_real_escape_string().
MfG,
EKKi