#1 18. März 2007 Datensatz in MySQL wird von PHP nicht erkannt Hi leute, ich hab da ein kleines problem, ich schreibe zurzeit an ner Website und wollte da eine funktion einbauen die ausließt ob ein Datensatz in der DB existiert. Wenn ja soll er auf die index.php verweisen und wenn noch keins existiert dann soll er auf index.php?show=einstellungen weiterverweisen. Ich hab den Code geschrieben aber es will einfach nicht funktionieren, ich hab echt keine ahnung warum das nicht geht. Er springt immer auf show=einstellungen, egal ob datensatz vorhanden oder nicht. Vielleicht könnt ihr mir mehr sagen. Der Code sieht folgt aus: PHP: <?php if( $access >= 2 ){ $sql65 = "SELECT ichbin FROM ssys_user WHERE id = ' $myid ' " ; $da22 = mysql_fetch_array ( $sql65 , $db ); if ( $da22 ) { header ( "Location: index.php" ); } else { header ( "Location: index.php?show=einstellungen" ); } } else { header ( "Location: index.php" ); } ?> + Multi-Zitat Zitieren
#2 18. März 2007 AW: Datensatz in MySQL wird von PHP nicht erkannt Er springt immer drauf, weil du TRUE zurückbekommst, wenn das Qry "funktioniert". Oder so.. wenn du gucken willst, ob der Eintrag vorhanden ist, mach es so: PHP: <? php $Qry = mysql_query ( "SELECT ID FROM `table` WHERE row = ' $Var ' LIMIT 1" ); $Count = mysql_num_rows ( $Qry ); if( $Count == 0 ) { // Existiert nicht }else { // Existiert } ?> + Multi-Zitat Zitieren
#3 18. März 2007 AW: Datensatz in MySQL wird von PHP nicht erkannt Hi danke für die antwort, aber irgendwie geht das auch nicht, der schmeißt das wie vorher auf show=einstellungen. Hab jetzt dein Code genommen und der sieht folgt aus: PHP: <? php if( $access >= 2 ){ $Qry = mysql_query ( "SELECT ichbin FROM ssys_user WHERE id = ' $myid ' LIMIT 1" ); $Count = mysql_num_rows ( $Qry , $db ); if( $Count == 0 ) { header ( "Location: index.php?show=einstellungen" );}else { header ( "Location: index.php" );}} ?> Hm mir fällt grad so spontan noch ein(was glaubich zum ergebniss relevant ist) das es immer die ID gibt und gepfüft werden soll ob sich in der bestimmten zelle ein datensatz befindet oder nicht. + Multi-Zitat Zitieren
#4 18. März 2007 AW: Datensatz in MySQL wird von PHP nicht erkannt was willst du uns sagen? jaja deutscher satzbau ist schwierig du hast ja anscheinend ne tabelle: id | ichbin | ... wenn es einen datensatz gibt der so aussieht $myid | bla | ... dann sollte es gehn. vllt hast du auch eien denkfehler! kannst ja mal n phpmyadmin-screenshot der tabelle machen. btw: PHP: $Count = mysql_num_rows ( $Qry , $db ); sicher, dass das geht? nach meinem wissen (& php.net) hat mysql_num_rows() nur ein argument, solltest du eig n error kriegen. besser wäre die db vorher mit mysql_select_db() auszuwählen (sonst kann ja auch kein query abgesendet werden). + Multi-Zitat Zitieren
#5 18. März 2007 AW: Datensatz in MySQL wird von PHP nicht erkannt probiers mit echo '<script language="javascript">window.location="index.php";</script>'; hat den selben effeckt und geht genau so schnell, evt klappt ja was bei den headern nicht... hast denn überhaupt ne verbindung zur datenbank hergestellt? + Multi-Zitat Zitieren
#6 18. März 2007 AW: Datensatz in MySQL wird von PHP nicht erkannt Also, @lolkind: Erstmal Screenshot http://img267.imageshack.us/img267/6876/adminuf9.jpg Und ja ich hab manchmal probleme mich richtig auszudrücken ^^ Da in der Tabelle unter ichbin befindet sich der datensatz der ausgelesen werden soll, und wenn diese zelle leer ist soll der auf ?show=einstellungen linken und wenn sich ein inhalt in dieser zelle befindet soll er auf die index.php linken. Bei mysql_num_rows() kommt kein fehler. $db beinhaltet die Verbindungsinformationen für die MySQL. mysql_select_db() liefert den gleichen effekt. @Murdoc-4D: Ne am header liegt es nicht, es liegt eher an der funktion. Die verbindung zu der DB müsste eigendlich soweit ich das weiß mit $db gewähleistet werden. THX für antworten + Multi-Zitat Zitieren
#7 18. März 2007 AW: Datensatz in MySQL wird von PHP nicht erkannt Wenn ich dich richtig verstanden habe, willst du gucken, ob eine Zelle in der Spalte der Tabelle der Datenbank leer ist. -> PHP: <? php // Connect. $Get = mysql_query ( "SELECT `row` FROM `spalte` WHERE ID = ' $ID ' LIMIT 1" ); $Got = mysql_fetch_array ( $Get );if(empty( $Got [ 'row' ]) || trim ( $Got [ 'row' ])== '' ) { header ( "Location: Die-Var-Ist-Leer.html" );}else { header ( "Location: Die-Var-Ist-Voll.html" );} ?> Try das. + Multi-Zitat Zitieren
#8 19. März 2007 AW: Datensatz in MySQL wird von PHP nicht erkannt JA ENDLICH, es funzt *juhu**freu* Super THX, bewertungen sind alle raus ! Der Code sieht folgt aus(für leute die das auch nutzen wollen ): PHP: <? php$Get = mysql_query ( "SELECT ichbin FROM ssys_user WHERE ID = ' $myid ' LIMIT 1" ); $Got = mysql_fetch_array ( $Get , $db );if(empty( $Got [ 'ichbin' ]) || trim ( $Got [ 'ichbin' ])== '' ) { header ( "Location: index.php?show=einstellungen" );}else { header ( "Location: index.php" );} ?> Und danke nochmal leute, ihr habt mir echt weitergeholfen. Gruß SpAwN + Multi-Zitat Zitieren
#9 19. März 2007 AW: Datensatz in MySQL wird von PHP nicht erkannt Korrekt ist dieser Quellcode aber auch nicht ganz. 1. Ist ID ein Integerwerte und dieser sollte in einer Where Bedingung nicht in '' stehen. 2. ID sollte ein Primary Key sein, der nicht zweimal in einer Tabelle existieren kann, somit ist LIMIT 1 unnütz und überflüssig. (Fehlerbehandlung sollte eigentlich auch noch vorhanden sein, lassen wir aber mal außen vor) 3. Bei der Arbeit mit Doppelten Anfühungszeichen empfiehlt sich die Verwendung von {} wenn eine Variable interpretiert werden soll. Spart in vielen Fällen ein paar Zeichen Code und hebt den eigenen Stil. 4. Die Funktion empty überprüft auch nach leeren Strings, prüft also ob $Got['ichbin'] '' ist. Die seperate Prüfung trim($Got['ichbin'])=='' ist somit unnötig. Zumal die Anwendung von trim auf einen möglichen Leerstrings total hirnrissig ist. 5. Mit fetch_array werden mehr Daten als nötig "gefetcht", fetch_assoc wäre hier die bessere Wahl. 6. Die Headerangabe ist nur mit einem absoulten Pfad korrekt, wird aber von vielen Browser, wegen diesem häufigen Programmierfehler, auch akzeptiert. 7. Die Headerangabe ist zusätzlich nur mit einem HTTP StatusCode syntaktisch vollkommen korrekt. Nicht als Meckern empfinden, ist nur konstruktive Kritik. PS: $myid nicht vergessen zu escapen .... + Multi-Zitat Zitieren