Problem mit neuem Provider?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit neuem Provider?

    Hallo,

    Seitdem ich meine Datenbank zu einem anderen Provider umgezogen habe funktioniert dieser Quelltext nicht mehr wie er soll:

    PHP Code:
    session_start();
        
    $password1="xxxxx";
        
    $database="usr_web281_1";
        
    mysql_connect('localhost','web281',$password1);
        @
    mysql_select_db($database) or die( "Unable to select database");
        
    $userlogin=$_POST['username'];
        
    $query="SELECT * FROM data_users WHERE username='$userlogin'";
        
    $result=mysql_query($query);
        
    $passwordx=mysql_result($result,$i,"user_password");
        
    $passwordins=$_POST['password'];
        
    $passwordmd=md5($passwordins); 
    Der Fehler liegt nach dieser Fehlermeldung:

    Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 3 in /home/www/web281/html/thema.php on line 10

    hier: $passwordx=mysql_result($result,$i,"user_password");

    Mir ist klar, dass die Variable $i nirgends definiert ist - allerdings hat das beim alten Provider nie Probleme gemacht. Weiß auch nicht für was man die in meinen Fall braucht - habe die Sachen teilweise übernommen und weiß nur, dass dort ja eigentlich die Zeilenangabe stehen soll. Macht hier aber keinen Sinn, weil ja nur eine Zeile aussortiert wird.

    Natürlich könnt ihr mir auch andere Vorschläge machen, wie ich hier auf die Daten der Datenbank zugreifen kann!

    Viele Grüße
    Daniel
    Last edited by dama; 01-10-2004, 17:02.

  • #2
    Wohl eher PHP, da es ein PHP und kein MySQL Fehler ist..


    Übergibst du $i per Parameter?

    Ansonsten: Einfach mal $i setzen, auf die Reihe, welche du auslesen willst..



    Außerdem:

    http://www.schattenbaum.net/php
    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

    Comment


    • #3
      hab ich auch schon probiert

      - einfach halt ganz normal so $i="1";

      des geht auch nicht.. praktisch die gleiche Fehlermeldung:

      Warning: mysql_result(): Unable to jump to row 1 on MySQL result index 3 in /home/www/web281/html/thema.php on line 11

      Comment


      • #4
        - einfach halt ganz normal so $i="1";
        was soll das? wozu bitte setzt du die zahl in anführungszeichen?

        was sagt mysql_error bei der vorangehenden query?
        Die Zeit hat ihre Kinder längst gefressen

        Comment


        • #5
          es kommt nur der gleiche Fehler wieder...

          allerdings, wenn es weiterhilft, es kommt auch immer ein zweiter Fehler:

          Cannot modify header information - headers already sent by (output started at /home/www/web281/html/thema.php:12) in /home/www/web281/html/thema.php on line 26

          Seltsamerweise wird aber seitdem ich das mit dem $i = 1 gesetzt habe der restliche Code ausgeführt - trotzdem ein Teil fehlt halt...

          was soll das? wozu bitte setzt du die zahl in anführungszeichen?
          tja, wenn man nicht mehr weiter weiß, dann probiert man alles mögliche

          Comment


          • #6
            es kommt nur der gleiche Fehler wieder...
            das kann nicht passieren. dann hast du es falsch eingesetzt.
            Last edited by derHund; 01-10-2004, 17:45.
            Die Zeit hat ihre Kinder längst gefressen

            Comment


            • #7
              ich hab das einfach aus der Doku übernommen

              echo mysql_errno() . ": " . mysql_error() . "\n";

              und so dann hinter des $result=mysql_query($query); geschrieben. In der Doku steht auch, dass bei keinem Fehler einfach "" ausgegeben wird.
              mysql_errno() hat 0: ausgegeben.

              und hab noch ne Frage, was soll denn die andere Fehlermeldung mit cannot modify header information bedeuten? - ist wahrscheinlich nur wegen der Datenausgabe vor dem header oder?
              Last edited by dama; 01-10-2004, 18:00.

              Comment


              • #8
                Original geschrieben von dama
                ich hab das einfach aus der Doku übernommen

                echo mysql_errno() . ": " . mysql_error() . "\n";

                und so dann hinter des $result=mysql_query($query); geschrieben. In der Doku steht auch, dass bei keinem Fehler einfach "" ausgegeben wird.
                mysql_errno() hat 0: ausgegeben.
                99% gibts keine Daten zum Auslesen. Mach echo $query; mal und poste die Ausgabe.
                und hab noch ne Frage, was soll denn die andere Fehlermeldung mit cannot modify header information bedeuten? - ist wahrscheinlich nur wegen der Datenausgabe vor dem header oder?
                Ziel erfasst und feuer

                Comment


                • #9
                  So, ich hab noch ein bisschen gefahndet...

                  wie ihr vielleicht schon bemerkt habt, ist das eine Seite für einen Login. Dazu wird beim Abschicken des Formulars die gleiche Seite einfach nochmals geladen. Das heißt aber auch, dass sonst, wenn die Seite nicht durch den Login-Klick reloaded wird, die Variable $userlogin nicht definiert ist ==> diese Ausgabe (halt der Fehler mit echo von $query):

                  mysql_result(): Unable to jump to row 1 on MySQL result index 3 in /home/www/web281/html/thema.php on line 11
                  SELECT * FROM data_users WHERE username=''

                  wenn jetzt die Seite aber durch einen Login-Klick reloaded wird, dann erhält die Variable den Wert des Benutzernamens
                  ==>
                  mysql_result(): Unable to jump to row 1 on MySQL result index 3 in /home/www/web281/html/thema.php on line 11
                  SELECT * FROM data_users WHERE username='admin'

                  Den User admin gibt es übrigens definitv in der Tabelle - also doch sonderbar, dass auch dann der Fehler erscheint oder?
                  Außerdem ist es egal, ob ich $i definiere oder nicht - der Effekt ist der gleiche.

                  Weiterhin sonderbar ist, dass diese Fehlermeldung
                  (
                  Cannot modify header information - headers already sent by (output started at /home/www/web281/html/thema.php:11) in /home/www/web281/html/thema.php on line 27
                  )
                  auch immer angezeigt wird, egal ob ich vorher Daten mit Echo oder anderem Ausgebe oder nicht - wo könnte es einen versteckte Datenausgabe geben.

                  Hier der Quellcode bis line 27 - lasst euch nicht von den vielen if Bedingungen da abschrecken. Das ist nötig, weil durch den Login immer parallel ein Forum eingeloggt und ausgeloggt wird.

                  PHP Code:
                  <?php  
                      session_start
                  ();
                      
                  $password1="xxxxxx";
                      
                  $database="usr_web281_1";
                      
                  $db mysql_connect(localhost,web281,$password1);
                      @
                  mysql_select_db($database) or die( "Unable to select database");
                      
                  $userlogin=$_POST['username'];
                      
                  //$i=1;
                      
                  $query="SELECT * FROM data_users WHERE username='$userlogin'";
                      
                  $result=mysql_query($query); 
                      
                  $passwordx=mysql_result($result,$i,"user_password");
                      
                  //echo $query;
                      //echo $userlogin;
                      
                  $passwordins=$_POST['password'];
                      
                  $passwordmd=md5($passwordins);     
                  if  (isset(
                  $_POST['login'])) 
                      {
                      if ( (
                  $passwordx == $passwordmd) )
                          {
                          
                  $_SESSION['username'] = $_POST['username'];
                          
                  $_SESSION['login_okay'] = true;
                          }
                      }
                  //um Forumlogout bei Datenbanklogout sicherzustellen:
                  if (!isset($_SESSION['login_okay']) and !isset($_GET['logout']) and
                   !isset(
                  $_GET['forumlogin']) and !isset($_POST['login']))
                      {
                  (
                  line 27)    header("Location: forum/login.php?logout=true");
                      }
                  Anscheinend sind die Fehlermeldungen jetzt auch noch überflüssig, denn es sind jetzt alle Funktionen voll verfügbar, aber die Fehler erscheinen halt immer!
                  Und wie gesagt, auf der Tripod Datenbank funktioniert alles einwandfrei...

                  Comment


                  • #10
                    1. Warum der Fehler kommt, wenn die Seite zum 1. Mal aufgerufen wird, hast du ja schon erkannt, also tu was dagegen.

                    2. wenn du weisst, dass es weder mit $i = 1 noch mit undefinierte $i funz, warum tutst du nicht dagegen? 2 Fragen, die dir dabei hilft, zum Ziel zu kommen:
                    --> 2.1: wieviele Datensätze liefert deine Query, wenn $userlogin definiert wäre.
                    --> 2.2: mit was für einen Indexwert fangen Arrays in PHP normalerweise an


                    Die Fehlermeldung wegen header kommt infolge der Fehlermeldung über mysql_result() vom Parser. Wenn alles glatt läuft, kommt sie nicht mehr, du brauchst dich also erstmal nicht um sie zu kümmern. Eigentlich musst du das auch wissen. Als Progger muss man zwischen echte Fehler und Folgefehler unterscheiden können

                    Comment


                    • #11
                      also erstmal habe ich hier deine Fragen beantwortet:
                      2.1: Es gibt nur einen Datensatz (mit mysql_num_rows() zur Sicherheit ausgelesen!)
                      2.2: Arrays fangen wohl mit Index 0 an bei php
                      ==> ich hab mal $i = 0 gesetzt, brachte allerdings auch keine Besserung

                      dann hab ich gedacht wenn der Scheiss(sorry für die Aussprache, aber wenn einen sowas 2 Stunden Arbeit kostet...)so nicht funktioniert, dann halt mit mysql_fetch_array! Und siehe da, damit gehts ohne Probleme. Also trotzdem mal vielen Dank für eure Hilfe!


                      Als Progger muss man zwischen echte Fehler und Folgefehler unterscheiden können
                      Wenn man sich erst seit 3 Wochen Progger nennen kann, dann lernt man noch viel dazu

                      Comment

                      Working...
                      X