Ankündigung

Einklappen
Keine Ankündigung bisher.

datenbank und listbox

Einklappen

Neue Werbung 2019

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

  • datenbank und listbox

    Hallo!
    Nachdem ich nun den ganzen morgen gesucht habe und verschiedenes probiert habe, wende ich mich nun an euch.
    Ich habe 2 Datenbankabfragen:
    die 1. gibt mir 2 Personen zurück (A und B)
    die 2. gibt alle Personen zurück, die ich in der DB habe (A, B, C, ..., Z)
    Nun erstelle ich 2 Auswahlboxen.
    In der ersten steht die 1. Person korrekt drin, aber in der zweiten Box leider nichts. Es scheint, als würden die 2 Eintrage nicht durchlaufen und mein Code bleibt am 1. Eintrag stecken.
    Ich habe es schon mit mssql_fetch_array() versucht, aber es sieht genau gleich aus. Hat jemand eine Idee?

    Herzlichen Dank!
    aiksas


  • #2
    Kannst du bitte den Teil, des Codes posten?
    ACHTUNG!!! SIGNATUR!!!
    PHP-Code:
    var_dump($gehirn); exit; 
    0 ??? WTF ? nervtag.de | freutag.net | friendmetr.com

    Kommentar


    • #3
      hallo! Ja, hier mal der wichtige Ausschnitt:

      PHP-Code:
      $personen $opus->query("SELECT nr from $table_person where source_id = $source_id ");
      $personen_alle $opus->query("SELECT nr from personen_$la ");
      $anzahl_personen $opus->num_rows($personen);
      $anzahl_personen_alle $opus->num_rows($personen_alle);    
      if (
      $anzahl_personen == 0) {
              
      $anzahl_personen 1;
      }

      if (
      $anzahl_personen 0) {
         
      $i 0;
         while (
      $i $anzahl_personen) {    
                  
      $i++;
                  print (
      "<TR>\n  <TD>");
                  print (
      "$i. Personen:</TD>\n  <TD>");
                  print (
      "<SELECT NAME=\"publisher_personen[]\" SIZE=1>\n");
                  print (
      "<OPTION VALUE=\"0\">Bitte Personen w&auml;hlen \n");
                  
      $j 0;
                  
      $personen_nr trim($mrow[0]);
                  while (
      $j $anzahl_personen_alle) {
                      
      $j++;
             
      $mrow2 $opus->fetch_row($personen_alle);

                      if (
      $opt_inst 0) {
                          print (
      "<OPTION VALUE=\"$mrow2[0]\" \n"); 
                          if (
      trim($mrow2[0]) == trim($mrow[0])) {
                              print (
      " selected");
                          }
                          print (
      ">$mrow2[0] \n");
                      } else... 

      Kommentar


      • #4
        Meiner Meinung nach generiert das Script ungültigen HTML-Code. Die <option> muss wieder geschlossen werden </option>. Wenn Du Dir den generierten HTML-Code (Quelltext anzeigen) im Browser anschaust, sind die Personennummer in der Selectliste dann vorhanden?

        Beispiel aus selfhtml:

        Code:
        <select name="top5" size="5">
        <option>Heino</option>
        <option>Michael Jackson</option>
        <option selected>Tom Waits</option>
        <option>Nina Hagen</option>
        <option>Marianne Rosenberg</option>
        </select>
        Zum HTML Validieren
        http://validator.w3.org/



        Grüße
        Thomas

        Kommentar


        • #5
          Hallo!
          Das ist nur ein Code-Ausschnitt. Es wird gültiges HTML erzeugt. Nach dem else... kommt dann der Rest, also auch das schließende </option>.
          Dennoch:
          Die erste Auswahlliste wird korrekt gefüllt, die zweite nicht.
          Person A wird überprüft und in der ersten Auswahlliste auch selektiert.
          Person B wird ignoriert. Ich vermute stark, dass es an sowas wir fetch_array oder sowas liegen könnte. Ich habe es schon versucht, aber leider ohne Erfolg...

          Kommentar


          • #6
            Hi.

            Warum folgende Zeile?

            PHP-Code:
            <?php
            //..
            if ($anzahl_personen == 0) {
                    
            $anzahl_personen 1;
            }

            if (
            $anzahl_personen 0
            //...
            ?>
            Die zweite Bedingung ist doch in dem Fall immer gültig?!? Bisschen verwirrend der code! Was heißt "er bleibt beim ersten Durchlauf stecken"? Erstellt er nur eine Selectbox? Oder sind es 2 und die zweite ist nicht befüllt? Schon mal bei jeder Schleife testwerte ausgeben lassen?

            Wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Ja, in der Tat. Aber wenn anzahl_personen 0 ist, dann muss der Wert auf 1 gesetzt werden, damit das Programm nicht crashed.
              Nun zu der selectbox:
              die erste wird erstellt und Person A wird selektiert.
              die zweite wird zwar erstellt, aber mit leeren Daten.
              Ja, testwerte ausgegeben. Bei 2. Box leer...und hier eben meine Frage.
              Was mach ich falsch?

              Kommentar


              • #8
                Sicher, dass das so geht mit der Variablen?

                PHP-Code:
                <?php
                $opus
                ->query("SELECT nr from personen_$la "); 
                ?>
                Hast Du den Daten in deiner 2. Abfrage? Könnte dann wohl an deinem SQL Befehl liegen!

                Wolf29
                while (!asleep()) sheep++;

                Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                Kommentar


                • #9
                  ja, die Variablen werden korrekt umgesetzt.
                  Ich vermute, das der zweite Datensatz zum Abgleich für die 2. Selectbox nicht vorhanden ist, weil der Pointer nicht auf diese row springt...kann das sein?

                  Kommentar


                  • #10
                    Zitat von aiksas Beitrag anzeigen
                    Hallo!
                    Das ist nur ein Code-Ausschnitt. Es wird gültiges HTML erzeugt. Nach dem else... kommt dann der Rest, also auch das schließende </option>.
                    Dennoch:
                    Die erste Auswahlliste wird korrekt gefüllt, die zweite nicht.
                    Ist immer unguenstig etwas zu behaupten, was nicht der Fall ist ...
                    "Mein Name ist Lohse, ich kaufe hier ein."

                    Kommentar


                    • #11
                      Irgendwie fehlt Code bei Dir. Wo wird den z.B. die Variable $mrow[0] befüllt? Zusätzlich hast du ja auch noch $mrow2[0] oder soll das dasselbe sein?!? Wo wird $opt_inst befüllt usw.?

                      Wolf29
                      while (!asleep()) sheep++;

                      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                      Kommentar


                      • #12
                        @Chriz
                        ???? Was soll das denn???

                        Kommentar


                        • #13
                          $mrow = $opus->fetch_row($personen);
                          --> wird nach den Selects gefüllt
                          $mrow2 = $opus->fetch_row($personen_alle);
                          --> $mrow2 wird in der zweiten while() befüllt

                          $mrow beinhaltet Personen A und B
                          $mrow2 beinhaltet alle Personen aus der DB

                          Kommentar


                          • #14
                            $opt_inst kommt aus einer config-Datei

                            Kommentar


                            • #15
                              Mag kleinlich klingen, aber die Erfahrung lehrts einen hier im Forum schnell. Dein HTML ist nicht valide, siehe SIZE-Attribut. Dann behauptest du einfach es wäre valide und meinst dir damit einen Umbau zu ersparen, vielleicht ist es aber die Ursache des Fehlers.

                              Da machts halt wenig Sinn weiterzudiskutieren ...
                              "Mein Name ist Lohse, ich kaufe hier ein."

                              Kommentar

                              Lädt...
                              X