Problem mit SQL Befehl in PHP

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

  • Problem mit SQL Befehl in PHP

    Hi leute!
    ich bin neu hier und möchte gleich mal erwähnen das ich kaum ahnung von PHP oder SQL hab und bitte deshalb um euer Verständniss.
    Ich habe allerdings schon einige erfahrung mit C++ und habe festgestellt PHP is nicht viel anders.

    Zu meinem Problem:
    Ich muss eine Datenbankanwendung mit Webinterface machen und habe schon beim Login prozess schwierigkeiten. Das script sollte nachsehen ob Name und PW stimmen. Dann ein cookie setzen und auf framesite.htm weiterleiten. fals der user nicht stimmt oder das PW soll ein entsprechender Fehler ausgegeben werden (User nicht gefunden oder PW ist falsch)

    Datenbank:
    Login_tab:
    User_ID: int, auto incement
    Name: text
    PW: text
    Admin: int (0 oder 1 für FALSE oder TRUE)

    PHP Code:

    connect_sql.inc :
    PHP-Code:
    <?
    $IP = "localhost";
    $User = "*****";
    $PW = "*********";
    $db = mysql_connect("$IP","$User","$PW") || die("MySQL konnte nicht geoeffnet werden");
    mysql_select_db("zeiterfassung") || die("Die Datenbank Zeiterfassung konnte nicht geoeffnet werden");
    ?>
    Login.php :
    PHP-Code:
    <?
    include("connect_sql.inc");

    extract($HTTP_POST_VARS);
    $username = $HTTP_POST_VARS["username"];
    $password = $HTTP_POST_VARS["password"];

    $sql = "SELECT * FROM login_tab WHERE Name ='$username' AND PW ='$password' ";
    $result = mysql_query($sql) || die("SQL Querry Fehlgeschlagen");
    $row = mysql_fetch_array($result) || die("Reihenermittlung fehlgeschlagen"); 

    If(mysql_num_rows($result) >= 1)
    {
    $UNr = $row["UNr"];
    setcookie("Usercookie",$UNr);
    echo "<meta http-equiv=\"refresh\" content=\"1;
    URL=framesite.htm\">";
    }
    else
    {
    echo "User nicht gefunden!";
    }
    ?>
    Fehlermeldung:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\FoxServ\www\Login.php on line 10
    Reihenermittlung fehlgeschlagen


    Ich bedanke mich schon mal im Vorraus und hoffe ihr könnt mir weiterhelfen
    Zuletzt geändert von Zeroskill; 17.02.2005, 11:58.
    Nicht der,
    der ständig Fragen stellt ist dumm,
    sondern der,
    der nichts gegen seine Unwissenheit tut.

  • #2
    Foxserv

    ach was ich vergessen hab ich verwende Foxserv^^
    Nicht der,
    der ständig Fragen stellt ist dumm,
    sondern der,
    der nichts gegen seine Unwissenheit tut.

    Kommentar


    • #3
      willkommen am board zeroskill.

      1. bitte: benutze bitte die php-tags beim posten von phpcode
      2. bitte: benutze anstatt deine eigenen fehlermeldungen bitte "or die (mysql_error());" um fehlermeldugnen der datenbank angezeigt zu bekommen.
      3. las dir zum debuggen deine variablen ausgeben. "echo $sql;" ....
      4. steht das gesuchte überhaupt in der datenbank?

      gruß
      jochen

      Kommentar


      • #4
        PHP-Code:
        $sql "SELECT * FROM login_tab WHERE Name ='$username' AND PW ='$password' ";
        $result mysql_query($sql) || die("SQL Querry Fehlgeschlagen");
        $row mysql_fetch_array($result) || die("Reihenermittlung fehlgeschlagen");

        If(
        mysql_num_rows($result) >= 1
        wenn du nur feststellen willst, ob name und pass richtig sind, solltest du die zeile mit fetch_array weglassen.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          habe nun die zeilen in der datei Login.php abgeändert bzw eingefügt:
          PHP-Code:
          <?
          $sql = "SELECT * FROM login_tab WHERE Name ='$username' AND PW ='$password' ";
          echo $sql;
          $result = mysql_query($sql) || die(mysql_error());
          echo $result;
          $row = mysql_fetch_array($result) || die(mysql_error());       //line 12
          echo $row;
          ?>
          und bekomme nun diesen fehler(bzw variablen ausgabe):

          SELECT * FROM login_tab WHERE Name ='admin' AND PW ='' 1
          Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\FoxServ\www\Login.php on line 12
          Zuletzt geändert von Zeroskill; 17.02.2005, 11:58.
          Nicht der,
          der ständig Fragen stellt ist dumm,
          sondern der,
          der nichts gegen seine Unwissenheit tut.

          Kommentar


          • #6
            Original geschrieben von derHund
            PHP-Code:
            $sql "SELECT * FROM login_tab WHERE Name ='$username' AND PW ='$password' ";
            $result mysql_query($sql) || die("SQL Querry Fehlgeschlagen");
            $row mysql_fetch_array($result) || die("Reihenermittlung fehlgeschlagen");

            If(
            mysql_num_rows($result) >= 1
            wenn du nur feststellen willst, ob name und pass richtig sind, solltest du die zeile mit fetch_array weglassen.
            ich brauche $row aber fürs cookie setzen
            Nicht der,
            der ständig Fragen stellt ist dumm,
            sondern der,
            der nichts gegen seine Unwissenheit tut.

            Kommentar


            • #7
              danke für eure hilfe, ich habe das problem nun gelöst.
              Nicht der,
              der ständig Fragen stellt ist dumm,
              sondern der,
              der nichts gegen seine Unwissenheit tut.

              Kommentar


              • #8
                danke, daß du die lösung gleich mit hingeschrieben hast.

                hol dir eben dein array nur, wenn auch wirklich ein ergebnis zurückkam.
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  Damit auch alle anderen von der Lösung profitieren können und um noch eine frage zu stellen hier meine aktuelle Login.php

                  PHP-Code:
                  <?
                  include("connect_sql.inc");
                  extract($HTTP_POST_VARS);
                  $HTTP_POST_VARS["username"];
                  $HTTP_POST_VARS["password"];
                  $password = md5($password);
                  $sql = "SELECT * FROM login_tab WHERE Name ='$username'";
                  $result = mysql_query($sql);
                  $row = mysql_fetch_array($result);

                  If(mysql_num_rows($result) >= 1)
                  {
                      If($row['PW'] == $password)
                      {
                          $UNr = $row['UNr'];
                          if($row['Admin'] == 1)
                              setcookie("Admincookie","1");
                          if(setcookie("Usercookie",$UNr)==FALSE)
                              echo "Fehler beim erstellen des cookies";
                          echo "<meta http-equiv=\"refresh\" content=\"1;
                          URL=framesite.htm\">";
                      }
                      else
                      {
                          echo "Falsches Passwort eingegeben";
                      }
                  }
                  else
                  {
                      echo "User nicht gefunden!";
                  }
                  ?>

                  <body bgcolor="#ccdddd">
                  </body>
                  Zuletzt geändert von Zeroskill; 17.02.2005, 11:58.
                  Nicht der,
                  der ständig Fragen stellt ist dumm,
                  sondern der,
                  der nichts gegen seine Unwissenheit tut.

                  Kommentar


                  • #10
                    So aber ich kenn mich gar nicht mit Cookies aus und will aber auf den nächsten seiten noch die UNr abfragen. Außerdem brauch ich das Admincookie um abzufragen ob der User ein admin ist. Leider haben die cookies wenn ich sie auf der nächsten seite aufrufen will scheinbar keinen inhalt.
                    Hier der Code der den inhalt der cookies ausgeben sollte:
                    PHP-Code:
                    <?
                    echo "UserID: ";
                    echo $_cookie['Usercookie'];
                    ?>
                    Aber neben UserID: wird nichts ausgeben. Vieleicht kann mir ja einer ganz genau erklären wie das mit cookies und Sessions so funzt, weil ich hab echt keine ahnung^^
                    Zuletzt geändert von Zeroskill; 17.02.2005, 11:59.
                    Nicht der,
                    der ständig Fragen stellt ist dumm,
                    sondern der,
                    der nichts gegen seine Unwissenheit tut.

                    Kommentar


                    • #11
                      ja, aber erst, wenn du anfängst, die php-tags des forums zu verwenden.

                      laß dir halt mittels print_r den inhalt von $_COOKIE ausgeben.
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        wie meinst du das mit php tags des forums?
                        ich verwende ja die tags von php <? und ?>
                        wenn ich den inhalt mittels print_r den inhalt von $_COOKIE ausgebe steht da nix.
                        Nicht der,
                        der ständig Fragen stellt ist dumm,
                        sondern der,
                        der nichts gegen seine Unwissenheit tut.

                        Kommentar


                        • #13
                          Original geschrieben von derHund
                          ja, aber erst, wenn du anfängst, die php-tags des forums zu verwenden.

                          laß dir halt mittels print_r den inhalt von $_COOKIE ausgeben.
                          hab glaub ich gefunden was du gemeint hast, und hab meine beiträge editiert. kann ich jetzt auf hilfe hoffen?
                          Nicht der,
                          der ständig Fragen stellt ist dumm,
                          sondern der,
                          der nichts gegen seine Unwissenheit tut.

                          Kommentar


                          • #14
                            Original geschrieben von Zeroskill
                            wie meinst du das mit php tags des forums?
                            http://www.php-resource.de/forum/sho...threadid=50454
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              So hab das Problem nun gelöst und weiß was ich falsch gemacht hatte....

                              ich hatte $_COOKIE bzw $_SESSION immer klein geschrieben (also $_cookie und $_session) und deswegen hatte php die werte nur als lokale variablen abgespeicher und so kann das ja nicht funzten ^^

                              Also da sieht man mal wieder wie Noobig man sein kann ....
                              Nicht der,
                              der ständig Fragen stellt ist dumm,
                              sondern der,
                              der nichts gegen seine Unwissenheit tut.

                              Kommentar

                              Lädt...
                              X