Checken ob mysql leer ist oder nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Checken ob mysql leer ist oder nicht

    HI@all,

    wollt ein kleines php skript schreiben, welches prüft ob schon ein User in der Datenbank exestiert oder nicht und soll, wenn er nicht exestiert, diese neu erstellen. Das ganze soll er aber erst machen, wenn der freischalte code (der über get mitgebracht wird) richtig ist.

    das ganze sieht bei mir so aus:

    PHP-Code:
    <?php
     
    include 'sessionhelpers.inc.php'

    // Hier wird geprüft ob es den User schon in der freigeschalteten datenbank userfre gibt !

     
    $sql="SELECT frei 

        FROM userfre 

            WHERE frei='"
    .$frei."' 

     LIMIT 1"


      
    $result mysql_query($sql) OR die(mysql_error());   

        if ( 
    mysql_num_rows($result)==1) { // hier wird jetzt geguckt ob der User schon freigeschaltet ist. Wenn er einen Datensatz findet: 1 wenn nicht -> else !

        
    echo "user scho frei";

      } else {

    // Ab hier wird der code geprüft welcher auch in der datenbank userfrei ist. Die USer in Datenbank userfrei sind noch nicht frei geschaltet! Er sucht dann den code der vom GET kommt in der datenbank.

      
    $sql="SELECT UserName 

        FROM userfrei 

            WHERE frei='"
    .$frei."' 

         LIMIT 1"


      
    $result mysql_query($sql) OR die(mysql_error());    

     while(
    $row mysql_fetch_assoc($result)) {    

        if ( 
    mysql_num_rows($result)==0) {

            echo 
    "Fehler, falsche freischaltecode";

        } else {

    // Wenn es den User noch nicht gibt und der Freischaltecode richtig war soll er den user freischalten, indem er die Daten in userfre packt.
     
     
    $sql="INSERT INTO userfre
            (UserName, UserPass, UserMail, frei, datum)
        VALUES
            ('"
    .$row['UserName']."',
            '"
    .$row['UserPass']."',
             '"
    .$row['UserMail']."',
            '"
    .$frei."',
            NOW())"
    ;

    echo 
    "freigeschaltet";

         }
         }
      }
    ?>
    Das ganze funktioniert so leider nicht.
    Er erkennt nicht ob er den User schon gibt oder ob der Freischaltecode richtig war/ist.
    Teoretisch sollte man soetwas doch mit folgender abfrage:
    if ( mysql_num_rows($result)==0) {
    regeln können oder? Wenn er einen datensatz findet dann 1 wenn er nichts finden soll dann 0.

    Wie könnte man noch prüfen ob der user vorhanden ist? bzw. ob der Code vom GET in der datenbank gefunden wird?

    mfg
    dominikoo

  • #2
    vorab: sind das 2 Tabellen userfre und userfrei oder ist das ein Tippfehler?

    Kommentar


    • #3
      glaube es ist ein tippfehler..

      bzl dein problem: ich würde das anders lösen..

      was haltest du davon:

      das feld mit dem usernamen unique machen und dann mit:

      PHP-Code:

      elseif(mysql_error() == "Duplicate entry 'username' for key 2")
      {
      //existiert bereits..
      }
      else
      {
      //noch frei..


      lg, harry d.

      Kommentar


      • #4
        Original geschrieben von icon
        PHP-Code:
        elseif(mysql_error() == "Duplicate entry 'username' for key 2"
        ich würde hier allerdings eher dazu tendieren, die fehlernummer auszuwerten, als den fehlertext abzufragen - also mysql_errno():
        Zuletzt geändert von wahsaga; 20.04.2004, 16:11.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          hmm.. da haste natürlich recht..!- wäre sicher sinnvoller..


          mfg.- harry d.

          Kommentar


          • #6
            Hi@all,

            danke für eure antworten!

            das mit dem usernamen klingt sinnvoll, ich werde das mal ausprobieren!

            Wegen dem angeblichen tippfehler, es ist keiner! In userfrei sind die user die noch nicht freigeschaltet sind und in userfre sind die user die schon freigeschaltet sind

            mit der userfrei vergleiche ich den freischalte code und in userfre sind dann die user die freigeschaltet wurden.

            Allerdings bleibt dann halt noch das vergleichen des codes, welches vom GET kommt und mit dem aus userfrei verglichen werden muss.
            Wie konnte ich das dann lösen?

            mfg
            dominikoo

            Kommentar


            • #7
              hat sich erledigt -> nächster post
              Zuletzt geändert von Dominikoo; 24.04.2004, 15:31.

              Kommentar


              • #8
                bin jetzt doch noch mal etwas weiter gekommen!
                Es funktioniert nun alles, nur das ich, wenn der code richtig ist, folgende fehlermeldung immer bekomme

                Code:
                Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /srv/www/admin/community/frei.php on line 18
                Bei mir schaut das ganze nun so aus:

                PHP-Code:
                <?php

                    $con
                mysql_connect('localhost','root','pass') or die(mysql_error()); 
                     
                mysql_select_db('community',$con) or die(mysql_error()); 

                 
                $sql="SELECT UserName, UserPass, UserMail 

                    FROM userfrei 

                        WHERE frei='"
                .$frei."' 

                     LIMIT 1"


                  
                $result mysql_query($sql) OR die(mysql_error());    

                    if ( 
                mysql_num_rows($result)==0) {

                    echo 
                "Code falsch";

                  } else {

                 while(
                $row mysql_fetch_assoc($result)) {   

                 
                 
                $sql="INSERT INTO userfre
                        (UserName, UserPass, UserMail, frei, datum)
                    VALUES
                        ('"
                .$row['UserName']."',
                        '"
                .$row['UserPass']."',
                         '"
                .$row['UserMail']."',
                        '"
                .$frei."',
                        NOW())"
                ;

                     
                $result mysql_query($sql); 

                if(
                mysql_errno() == "1062")

                   {
                    echo 
                "existiert bereits..";

                   } else {

                    echo 
                "freigeschaltet";


                    }

                    }

                  }

                ?>

                Kommentar

                Lädt...
                X