array Abfrage funktioniert nicht.

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

  • array Abfrage funktioniert nicht.

    Liebe Leute

    Ich bräuchte mal eure Hilfe. Ich habe eine Abfrage, mit der ich mir Tabellenzeilen anzeigen lasse. Ich mache 2 Mal genau das gleiche. Das erste Mal funktioniert es, das zweite Mal nicht.

    Der Fehler muss irgendwo in der while-Schlaufe liegen.

    Danke und Gruss,
    map

    Hier der Code:

    PHP-Code:
    $sql mysql_query("SELECT DESCRIPTION FROM E2_SCR_SP, E2_SCR_SP_JOIN WHERE tabID='$tabID' AND E2_SCR_SP_JOIN.spID=E2_SCR_SP.spID");
    $row mysql_fetch_row($sql);
    $desc=$row[0];

    if (
    $desc!="")
    {
      echo 
    '<b>'."Angstinhalte soziale Phobie".'</b></br></br>';
    }
    while(
    $row mysql_fetch_row($sql))
    {
      echo 
    "&minus; ".$row[0].$row[1].'<br />';
    }

    // bis hier klappts, die 2. Abfrage klappt nicht mehr.

    $sql=mysql_query("SELECT DESCRIPTION FROM E2_SCR_SPEC, E2_SCR_SPEC_JOIN WHERE tabID='$tabID' AND E2_SCR_SPEC_JOIN.specID=E2_SCR_SPEC.specID");
    $row mysql_fetch_row($sql);
    $speci=$row[0];

    if (
    $speci!="")
    {
      echo 
    '<b>'."</br>Angstinhalte spezifische Phobie".'</b></br></br>';
    }
    while(
    $row mysql_fetch_row($sql))
    {
      echo 
    "&minus; ".$row[0].$row[1].'<br />';

    Zuletzt geändert von wahsaga; 27.07.2012, 11:16. Grund: Code in PHP-Tags gesetzt, und eingerückt. Nächstes Mal bitte selber machen!

  • #2
    Was sagte denn mysql_error?

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Tipp: Benutze php tags damit es übersichtlicher wird

      Kommentar


      • #4
        Der mysql_error sagte gar nix. Wenn ich mir die Variable $speci vor der while-Schleife Anzeigen lasse, funktioniert das einwandfrei, in der Schleife aber nicht mehr. Ausgegeben wird durch diesen Code folgendes:

        "Angstinhalte soziale Phobie


        − vor anderen Leuten reden
        speci=Krankheiten

        Angstinhalte spezifische Phobie
        "

        Das Ziel wäre aber:

        "Angstinhalte soziale Phobie

        − vor anderen Leuten reden

        Angstinhalte spezifische Phobie


        - Krankeiten"

        Ich wäre sehr froh über weitere Ideen..

        Danke und Gruss,
        map

        PHP-Code:
        <?php 
        $sql 
        mysql_query("SELECT DESCRIPTION FROM E2_SCR_SP, E2_SCR_SP_JOIN  WHERE tabID='$tabID' AND E2_SCR_SP_JOIN.spID=E2_SCR_SP.spID") or die  (mysql_error());
        $row mysql_fetch_row($sql);
        $desc=$row[0];

        if (
        $desc!="")
        {
        echo 
        '<b>'."Angstinhalte soziale Phobie".'</b></br></br>';
        }
        while(
        $row mysql_fetch_row($sql))
        {
        echo 
        "&minus; ".$row[0].$row[1].'<br />';
        }

        $sql=mysql_query("SELECT DESCRIPTION FROM E2_SCR_SPEC, E2_SCR_SPEC_JOIN  WHERE tabID='$tabID' AND E2_SCR_SPEC_JOIN.specID=E2_SCR_SPEC.specID") or  die (mysql_error());
        $row mysql_fetch_row($sql) or die (mysql_error());
        $speci=$row[0];

        echo 
        "speci=".$speci.'<br>';
        if (
        $speci!="")
        {
        echo 
        '<b>'."</br>Angstinhalte spezifische Phobie".'</b></br></br>';
        }
        while(
        $row mysql_fetch_row($sql))
        {
        echo 
        "&minus; ".$row[0].$row[1].'<br />';
        }

        Kommentar


        • #5
          lass dir den erzeugten AbfrageText bitte ausgeben, kopiere ihn und ab damit in phpmyadmin -> SQL-Fenster .. bekommst du dort überhaupt mehrere Datensätze ?
          [font=Verdana]
          Wer LESEN kann, ist klar im Vorteil!
          [/font]

          Kommentar


          • #6
            Für dieses Beispiel bekomme genau einen Datensatz, eben "Krankheiten", was ich mir auf der Website Ausgeben lassen will.. oder verstehe ich dich nicht richtig?

            Kommentar


            • #7
              es könnte sein das er das JOIN als Befehl sieht oder ist das extra?

              Kommentar


              • #8
                Zitat von map Beitrag anzeigen
                Für dieses Beispiel bekomme genau einen Datensatz, eben "Krankheiten"
                Und genau diesen Datensatz holst du dir direkt nach der Abfrage bereits mit $row = mysql_fetch_row($sql);

                Wenn dann die While-Schleife kommt, steht der „Datensatz-Zeiger“ bereits hinter diesem einzigen Datensatz, den die Abfrage geliefert hat – folglich liefert das mysql_fetch_row in der Schleifenbedingung gleich von Anfang an false, und die Schleife wird gar nicht erst durchlaufen …


                P.S.: [php]-Tags in dein Anfangsposting eingefügt und den Code ein bisschen sinnvoll eingerückt habe ich jetzt mal für dich. Das nächste Mal machst du das bitte gleich unaufgefordert selber, Danke.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Vielen Dank! Ich denke jetzt komm ich von selbst weiter..

                  Kommentar


                  • #10
                    While-Schleife gibt nicht alle Elemente aus

                    Hallo allerseits,

                    habe schon wieder eine Frage. Meine While-Schleife gibt nicht alle Elemente aus. Es müssten 3 Datensätze ausgegeben werden, angezeigt werden aber nur 2. Woran könnte das liegen? Herzlichen Dank im Voraus!

                    Hier mein Code:
                    PHP-Code:
                    /* $sql=mysql_query("SELECT DESCRIPTION FROM E2_SCR_SPEC, E2_SCR_SPEC_JOIN WHERE tabID='$tabID' AND 
                    E2_SCR_SPEC_JOIN.specID=E2_SCR_SPEC.specID") or die (mysql_error());
                    $row = mysql_fetch_row($sql);
                    $speci=$row['0'];
                    $anzahl_speci=mysql_num_rows($sql);
                    echo "anzahl_speci= ".$anzahl_speci.'<br>';
                    if ($anzahl_speci!="")
                    {
                    echo '<b>'."Angstinhalte spezifische Phobie".'</b></br></br>';
                    }
                    if ($anzahl_speci==1)
                    {
                    echo "&minus; ".$speci.'<br />';
                    }
                    */ 
                    //bis hier Illustration, da ich nicht weiss, inwiefern die Abfrage eine Rolle spielt.

                    while($row mysql_fetch_row($sql))
                    {
                    echo 
                    "&minus; ".$row[0].$row[1].'<br />';
                    }
                    $db_close=mysql_close($con); 

                    Kommentar


                    • #11
                      Weil du bereits vorher schon mal mysql_fetch_row() aufrufst und somit den ersten Datensatz überspringst.

                      Dein Code ist übrigens furchtbar zu lesen. Bitte rücke ihn lesbar ein, wenn du willst, dass ihn auch andere Menschen lesen sollen.

                      Die mysql_* Funktionen sind veraltet und sollten nicht mehr verwendet werden. Verwendet stattdessen mysqli oder PDO.

                      Großgeschrieben Spalten- und Tabellennamen sind sehr ungünstig, da sie den SQL-Code schwer lesbar machen.

                      Du solltest richtige Joins (ANSI Join) statt diese schrecklichen Theta Style Joins verwenden.

                      Statt mysql_fetch_row() wäre es sinnvoller mysql_fetch_assoc() oder mysql_fetch_object() zu verwenden, weil Spaltennamen den Code übersichtlicher machen als durchnummerierte Spalten.

                      Eine Datenbankverbindung zu schließen ist in der Regel unnötig, weil dies PHP automatisch nach Ablauf des Scripts macht.
                      Zuletzt geändert von h3ll; 27.07.2012, 13:53.

                      Kommentar


                      • #12
                        Herzlichen Dank!

                        Kommentar


                        • #13
                          Zitat von map Beitrag anzeigen
                          Ich denke jetzt komm ich von selbst weiter..
                          Sieht nicht so aus … sonst hättest du ja keinen neuen Thread gebraucht, um dir genau das gleiche nochmal erklären zu lassen …

                          *zusammenführ*
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Lieber wahsaga

                            Okay, hatte es als neues Problem im selben Skript betrachtet. Aber werde in Zukunft gerne alle Fragen zu einem Skript im selben thread stellen. Und brav übersichtlich einrücken

                            Gruss,
                            map

                            Kommentar

                            Lädt...
                            X