SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 28.08.2007, 14:22:40
webgoddess webgoddess ist offline
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
Mit Zitat antworten
  #2  
Alt 28.08.2007, 14:32:53
feuervogel feuervogel ist offline
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?
Mit Zitat antworten
  #3  
Alt 28.08.2007, 14:43:38
webgoddess webgoddess ist offline
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?
Mit Zitat antworten
  #4  
Alt 28.08.2007, 14:53:10
Benutzerbild von z0iD
z0iD z0iD ist offline
Junior Member
 
Registriert seit: Mar 2006
Beiträge: 415
z0iD eine Nachricht über ICQ schicken
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.
Mit Zitat antworten
  #5  
Alt 28.08.2007, 15:09:48
Raketenmann Raketenmann ist offline
Junior Member
 
Registriert seit: Jun 2004
Beiträge: 473
AW: Weiterleitung nach mysql_error()

Zitat:
Zitat von webgoddess Beitrag anzeigen
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...
Mit Zitat antworten
  #6  
Alt 28.08.2007, 15:19:17
webgoddess webgoddess ist offline
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:&nbsp;</td>
        <td width="75%"><input type="text" name="name" value="$name" size="20" maxlength="100"></td>        
        </tr>
        <tr>
        <td width="25%" align="left">Email:&nbsp;</td>
        <td width="75%"><input type="text" name="email" value="$email" size="20" maxlength="50">
        </td>        
        </tr>
        <tr>
        <td width="25%" align="left">Passwort:&nbsp;</td>
        <td width="75%"><input type="password" name="password" value="$password" size="20" maxlength="20">
        </td>        
        </tr>
        <td width="25%" align="left">Passwort wiederholen:&nbsp;</td>
        <td width="75%"><input type="password" name="password2" value="$password2" size="20" maxlength="20">
        </td>        
        </tr>
        <td width="25%" align="right">&nbsp;</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
Mit Zitat antworten
  #7  
Alt 28.08.2007, 15:25:06
webgoddess webgoddess ist offline
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
Mit Zitat antworten
  #8  
Alt 28.08.2007, 15:39:16
webgoddess webgoddess ist offline
Anfänger
 
Registriert seit: Aug 2007
Beiträge: 7
AW: Weiterleitung nach mysql_error()

Zitat:
Zitat von Raketenmann Beitrag anzeigen
... 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
Mit Zitat antworten
  #9  
Alt 28.08.2007, 15:39:33
Benutzerbild von z0iD
z0iD z0iD ist offline
Junior Member
 
Registriert seit: Mar 2006
Beiträge: 415
z0iD eine Nachricht über ICQ schicken
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.
Mit Zitat antworten
  #10  
Alt 28.08.2007, 15:47:59
webgoddess webgoddess ist offline
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
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
URL einer Weiterleitung auslesen lucky8 PHP für Fortgeschrittene und Experten 2 03.02.2007 07:41:36
Weiterleitung mehrerer Domains auf Ziel-URL huene Off Topic Area 1 07.01.2006 12:08:12
header weiterleitung erst nach fünf sekunden?! Knisterkarl PHP Grundlagen 4 30.09.2005 14:34:02
Wohin führt eine Weiterleitung... Sebi PHP für Fortgeschrittene und Experten 1 18.08.2005 18:30:01
Weiterleitung verzögern bei header() Corvin PHP für Fortgeschrittene und Experten 3 06.07.2004 13:36:01


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:13:33 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt