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 |
28.08.2007, 14:22:40
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 7
|
|
Weiterleitung nach mysql_error()
Hallo ich habe folgendes Problem.
Ich habe eine sql Abfrage die von einem mysql_error() abgefangen wird, wenn ein doppelter Eintrag vorliegt. Das funktioniert auch.
Wenn das passiert, steht auf der Seite dann "Insert-Fehler: Duplicate entry 'k@w.de' for key 2". Ich möchte aber dass in diesem Fall wieder automatisch die Seite mit dem Startformular erscheint.
Die soll natürlich nicht erscheinen, wenn die sql-Abfrage durchgeht.
Wahrscheinlich mal wieder ganz einfach und ich seh den Baum vor lauter Wäldern nicht :-)
Gruß webgoddess
|
28.08.2007, 14:32:53
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Weiterleitung nach mysql_error()
wenn du probleme mit deinem fahrrad hast, tauchst du dann auch ohne rad in der betreffenden werkstatt auf?
|
28.08.2007, 14:43:38
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 7
|
|
AW: Weiterleitung nach mysql_error()
Ich habe die letzten 2 Stunden damit verbracht in diesem Forum nach einem ähnlichen Beitrag zu suchen, weil ich niemandem auf die Nerven gehen wollte.
Solche nichtssagenden Bemerkungen kannst du dir sparen. Sie bringen mich nicht weiter und füllen nur unnötig das Forum.
Irgendwelche konstruktiven Vorschläge? Oder kannst du vielleicht in Klartext erklären was du meinst?
|
28.08.2007, 14:53:10
|
|
Junior Member
|
|
Registriert seit: Mar 2006
Beiträge: 415
|
|
AW: Weiterleitung nach mysql_error()
Der Beitrag von feuervogel ist sogar hoch konstruktiv. Was er versucht Dir diskret zu sagen ist, dass wir Dir alle nicht sagen können was da falsch läuft, wenn Du nicht Deinen Quelltext veröffentlichst. Genausowenig wie die Fahrradwerkstatt Dein Rad nicht reparieren kann, wenn Du es nicht dabei hast.
__________________
Bitte sprich entweder deutsch oder englisch mit mir, aber nicht beides gleichzeitig.
----------
Bitte vor dem Fragen lesen: Wie man Fragen richtig stellt.
|
28.08.2007, 15:09:48
|
Junior Member
|
|
Registriert seit: Jun 2004
Beiträge: 473
|
|
AW: Weiterleitung nach mysql_error()
Zitat:
Zitat von webgoddess
Ich habe eine sql Abfrage die von einem mysql_error() abgefangen wird, wenn ein doppelter Eintrag vorliegt. Das funktioniert auch.
|
Schön, dass es funktioniert, aber wäre es nicht irgendwie cleverer, doppelte Einträge gar nicht erst entstehen zu lassen, wenn sie sowie einen Fehler auslösen?
Zu deiner Frage:
mysql_error() fängt nix ab, sondern gibt etwas aus. Der Programmteil in dem sich mysql_error() befindet, fängt etwas ab und kann somit auch irgendwas anderes machen als den Fehler auszugeben...
|
28.08.2007, 15:19:17
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 7
|
|
AW: Weiterleitung nach mysql_error()
Na wenn's nur das ist... warum sagt er das denn nicht. Ich dachte dass Weiterleitung von php-Seiten nach sql error eine Standardanwendung ist. Bin mir nicht sicher, ob mein Quelltext hier weiterhilft. Aber hier isser:
PHP-Code:
$eingabefehler = false;
$author = $_POST["author_add"];
$name = $_POST["name"];
$email = $_POST["email"];
$password = $_POST["password"];
$password2 = $_POST["password2"];
if(isset($author)){
include('account_add.php');
}
echo <<<HTMLCODE
<h3>Neuen Familienaccount erstellen</h3>
<form action="$PHP_SELF" method="POST">
<input type="hidden" name="author_add" value="1">
<table border="0" width="600">
<tr>
<td width="25%" align="left">Familienname: </td>
<td width="75%"><input type="text" name="name" value="$name" size="20" maxlength="100"></td>
</tr>
<tr>
<td width="25%" align="left">Email: </td>
<td width="75%"><input type="text" name="email" value="$email" size="20" maxlength="50">
</td>
</tr>
<tr>
<td width="25%" align="left">Passwort: </td>
<td width="75%"><input type="password" name="password" value="$password" size="20" maxlength="20">
</td>
</tr>
<td width="25%" align="left">Passwort wiederholen: </td>
<td width="75%"><input type="password" name="password2" value="$password2" size="20" maxlength="20">
</td>
</tr>
<td width="25%" align="right"> </td>
<td width="75%"><input type="submit" name="submit" value="Account anlegen">
</td>
</tr>
</table>
</form>;
Das ist die Datei mit dem Formular. Wenn das Formular abgeschickt wird, und author gesetzt ist, wird account_add.php aufgerufen.
Die siht so aus
PHP-Code:
//vorher sind Abfragen leere Felder usw. Wenn alles ausgefüllt ist kommt
if($eingabefehler == false)
{
$name = htmlentities($name);
$email = htmlentities($email);
$password = htmlentities($password);
$sql = "INSERT INTO familie VALUES (0, '$name', '$email', '$password')";
mysql_query($sql) or die ("Insert-Fehler: " . mysql_error());
unset($author_add, $name, $email, $password, $password2);
echo "<meta http-equiv='refresh' content='1;URL=member_new.php?name=$name'>";
}
Funktioniert auch einwandfrei. Wenn aber die übergebene Email schon in DB vorhanden ist (Feld ist Unique) bekomme ich die Fehlermeldung:
Zitat:
Insert-Fehler: Duplicate entry 'k@w.de' for key 2
|
Das ist auch noch richtig.
Jetzt das Problem. Ich möchte nicht dass der User, dem das passiert auf der Seite mit der Fehlermeldung hängen bleibt, sondern dass die Seite nach Erscheinen der Fehlermeldung wieder zurück auf die Formularseite umgeleitet wird.
Hoffe ich konnte das einigermaßen erklären.
Gibt's da irgendein Standardbefehl in PHP oder Mysql? Ich kenne leider keinen.
Gruß webgoddess
|
28.08.2007, 15:25:06
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 7
|
|
AW: Weiterleitung nach mysql_error()
Hallo Raketenmann,
du hast mich auf die Idee gebracht. Hatte mich total in dem mysl_error verrannt.
Ich werde mal ausprobieren das vorher auszuschließen. Falls ich dort nicht weiterkomme melde ich mich nochmal.
Danke für den Hinweis.
webgoddess
|
28.08.2007, 15:39:16
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 7
|
|
AW: Weiterleitung nach mysql_error()
Zitat:
Zitat von Raketenmann
... wäre es nicht irgendwie cleverer, doppelte Einträge gar nicht erst entstehen zu lassen, wenn sie sowie einen Fehler auslösen?
|
Spitze, funktioniert. Hätte ich auch selber drauf kommen können.
Trotzdem würde mich nochmal interessieren, ob ich nach "or die" wenn es denn passiert sagen kann wenn "die" dann mach dies, oder so ähnlich?
Für die die es interessiert, wie ich mein Problem gelöst habe:
PHP-Code:
$sql = "SELECT * FROM familie";
$result = mysql_query($sql) or die ("Select-Fehler: " . mysql_error());
$row = mysql_fetch_array($result);
while($row = mysql_fetch_array($result))
{
if ($row[email] == $email)
{
echo "Email ist schon in der Datenbank vorhanden<br>";
$eingabefehler = true;
}
}
Danke nochmal,
webgoddess
|
28.08.2007, 15:39:33
|
|
Junior Member
|
|
Registriert seit: Mar 2006
Beiträge: 415
|
|
AW: Weiterleitung nach mysql_error()
Dein Quelltext (der zweite) hilft hier ungemein. Du beendest das Skript ja abrupt mit einem die();. Da ist es klar, dass die Seite unverändert bleibt. Zur Lösung bleiben Dir zwei Möglichkeiten (auch wenn die erste stümperhaft ist, soll sie der Vollständigkeit halber erwähnt werden);
Mgk 1: Eine HTML Seite mit der Fehlermeldung im <body> ausliefern. In einem <meta> einstellen, dass nach einer bestimmten Zeit zum Formular zurückgesprungen wird.
Mgk 2: Mit einem
PHP-Code:
header('Location: bla.php?errormsg='.$fehler);
zur Formularseite zurückkehren und erst dort die Fehlermeldung ausgeben.
Möglichkeit 1 ist allein schon aus Gründen der Barrierefreiheit nicht zu empfehlen. Woher willst Du wissen wie lange Dein Besucher zum lesen braucht? Allgemein ist von dem allseits beliebten "refresh" Befehl im <meta> Element abzuraten. Nicht nur, dass er total nervig ist, nein, er zerstört den Zurückknopf des Browsers was zu erheblicher Verwirrung des Benutzers führen kann.
__________________
Bitte sprich entweder deutsch oder englisch mit mir, aber nicht beides gleichzeitig.
----------
Bitte vor dem Fragen lesen: Wie man Fragen richtig stellt.
|
28.08.2007, 15:47:59
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 7
|
|
AW: Weiterleitung nach mysql_error()
Hi z0iD,
tschuldigung dass ich so blöd frage, aber wie schreibe ich das denn?
Statt
PHP-Code:
mysql_query($sql) or die ("Insert-Fehler: " . mysql_error());
einfach
PHP-Code:
mysql_query($sql) or header('Location: bla.php?errormsg='.$fehler);
?
Und wo kriege ich $fehler her?
Geändert von webgoddess (28.08.2007 um 15:48:47 Uhr)
Grund: falsch kopiert
|
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 22:13:33 Uhr.
|