kostenloser Webspace werbefrei: lima-city


while() verschachteln

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Ich habe gerade ein seltsames Problem. Ich habe zwei While-Schleifen verschachtelt, in denen ye eine MySQL-Query ausgeführt wird. Dabei werden zuerst Kategorien geladen und danach die Inhalte der Kategorien. Seltsamerweise, werden alle Kategorien geladen, yedoch nur der Inhalt der ersten Katgorie. Der Code sieht folgendermaßen aus:

    $i = 0;
    
    $catsql = mysql_query("SELECT
                           *
    
                           FROM
                           Buildings
    
                           WHERE
                           Kategorie = 'cat'
                          ");
    
    while($cat=mysql_fetch_assoc($catsql)) {
    
    $i++;
    
      echo "<fieldset class=building>";
      echo "<legend>".$cat['Name']."</legend>";
        echo "<table width=100%>";
        echo "<tr class=description>";
        echo "<td style=\"text-align:left;\">Gebäude</td>";
        echo "<td><img align=absmiddle src=bilder/pvc.gif alt=\"PVC\"></td>";
        echo "<td><img align=absmiddle src=bilder/beton.gif alt=\"Beton\"></td>";
        echo "<td><img align=absmiddle src=bilder/titan.gif alt=\"Titan\"></td>";
        echo "<td><img align=absmiddle src=bilder/gold.gif alt=\"Gold\"></td>";
        echo "<td><img align=absmiddle src=bilder/energie.gif alt=\"Energie\"></td>";
        echo "<td><img align=absmiddle src=bilder/nanoblack.gif alt=\"Nanoblack\"></td>";
        echo "<td>Bauen</td>";
        echo "</tr>";
    
          $bui[$i] = mysql_query("SELECT
                                  *
    
                                  FROM
                                  Buildings
    
                                  WHERE
                                  Kategorie = '".$cat['Name']."' AND
                                  Rasse = 'Necris'
    
                                  ORDER BY
                                  Name ASC
                                 ");
    
          while($building[$i]=mysql_fetch_assoc($bui[$i])) {
    
            echo "<tr>";
            echo "<td style=\"text-align:left;\">".$building[$i]['Name']."</td>";
            echo "<td>".$building[$i]['PVC']."</td>";
            echo "<td>".$building[$i]['Beton']."</td>";
            echo "<td>".$building[$i]['Titan']."</td>";
            echo "<td>".$building[$i]['Gold']."</td>";
            echo "<td>".$building[$i]['Energie']."</td>";
            echo "<td>".$building[$i]['Spezial']."</td>";
            echo "<td><input type=text size=5 maxlength=4 name=".$building[$i]['ID']."></td>";
            echo "</tr>";
    
          }
    
        echo "</table>";
      echo "</fieldset><br>";
    
    }

    Habe bereits alle Unterquerys und Unterwhiles mit Indizes versehen, so dass alle seperat existieren und sich nicht im Laufe der Schleife gegenseitig überschreiben. Trotzdem wird nur der Inhalt der ersten Kategorie ausgegeben. Findet einer den Fehler ?

    Liebe Grüße
    - VampireSilence
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. f************r

    Hi,

    was gibt das Script denn genau aus?

    in dem 2. while einfach <td></td> ???

    MfG

    Steffen
  4. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Nein, einfach garnichts. Als wäre die While-Schleife beim 2. Hauptdurchlauf einfach nicht mehr vorhanden.

    Liebe Grüße
    - VampireSilence
  5. Lass mich raten, dies soll ein BG werden und Du arbeitest noch net so lange mit HTML und PHP.

    Ich könnte jetzt zwar herrunter beten, dass das nichts bringt und so weiter. Aber Du wirst Dich eh nicht davon abhalten lassen. Deswegen hier ein paar Tipps:

    - Lern HTML und zwar richtig. Für PHP solltest Du dies beherschen und im Schlaf ein HTMLGrundgerüst hinstellen können.
    - Lern PHP und zwar richtig. Grade bei einem solch großen Projekt ist es wichtig alles Platz und Zeitsparend zu coden. Das was ich bisher da sehe, ist eine Katastrophe.
    - Benutze eine Template Engine, das spart Dir eine ganze menge Arbeit und noch mehr Nerven.
    - Baue PHP Anwendungen Idiotensicher. Irgendwann kommt immer ein Depp, der Dir mit einem Klick das System zerschießt.


    Klingt zwar ein wenig hart, ist auch so gemeint. Aber ich rede net gern durch nen Straus Blumen ;)
  6. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Ich arbeite seit ca. 5 Yahren mit HTML und seit 3 mit PHP, aber wenn du mir wenigstens die Lösung des Problems erklärst, kann ich darüber hinweg sehen. :P

    Liebe Grüße
    - VampireSilence
  7. f************r

    Hi,

    setze Errorreporting mal auf E_ALL, villeicht gibt PHP dann einen Helfenden Hinweis!

    MfG

    Steffen

    Beitrag zuletzt geändert: 19.3.2009 19:10:29 von fusballmanager
  8. Wenn Du schon seid 5 Jahren mit HTML arbeitest, warum verwendest Du dann immernoch ein Tabellenkonstrukt? Da geht doch die Übersicht völlig bei flöten. Dann kannst Du Dir auch gleich noch " im PHP abgewöhnen und statt dessen ' verwenden. Dadurch ersparst Du Dir das Escapen:
    echo = '<a href="blabla">Link</a>';

    Zum Beispiel, ist definitiv kürzer als:
    echo = "<a href=\"blabla\">Link</a>";

    Außerdem einfacher.

    Um aber Dein Problem zu lösen, müsste ich wissen wie die DB aussieht und was Du am Ende haben willst.
  9. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Ich verwende es, weil es für mich am übersichtlichsten Aussieht und das Escapen ist Gewohnheitssache. Wenn ich es anders mache, baue ich einfach viel öfter Fehler ein, als wenn ich es wie gewohnt mit \" schreibe, also bleibe ich dabei.

    Also zur DB:
    In der betreffenden Tabelle sind Gebäude mit den Spalten (ID, Name, Rasse, Kategorie) gelistet. Gebäude die selbst als Kategorie fungieren sollen, haben die Kategorie "cat". Anhand dessen lese ich sie auch zuerst aus. Danach Lese ich alle Gebäude aus, dessen Kategorie dem "Gebäudenamen" (eigtl ya Kategorienamen) entspricht. Bei der ersten Kategorie funktioniert das wie gesagt auch noch, nur bei der Zweiten und den Folgenden nicht mehr.

    @fussballmanagar
    Das hatte ich schon probiert, aber da wird auch nichts angezeigt.

    Liebe Grüße
    - VampireSilence
  10. f************r

    Hi,

    dann liegt der Fehler wahrscheinlich in der Datenbank, dass in der 2. Kategorie keine Gebäude für dir Rasse Necris vorhanden sind. Dann wird nämilch das 2. while erst garnicht ausgeführt!

    MfG

    Steffen
  11. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    Omfg, du hast Recht. -.-
    Yetzt wollte ich so schnell sein und hab dabei einfach vergessen bei den Testgebäude ne Rasse einzutragen. :redface:
    Dann bin ich wohl doch nich doof, sondern einfach nur senil. ^^"
    Trotzdem Danke an Alle !!
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!