[PHP] Datensatz in MySQL wird von PHP nicht erkannt

Dieses Thema im Forum "Webentwicklung" wurde erstellt von SpAwN2k1, 18. März 2007 .

Schlagworte:
  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" ); }
    ?>
     
  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
    }
    ?>
     
  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.
     
  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).
     
  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?
     
  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
     
  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.
     
  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
     
  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 ....
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.