Ankündigung

Einklappen
Keine Ankündigung bisher.

Smarty + MySQL = immer falsche Ausgabe

Einklappen

Neue Werbung 2019

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

  • Smarty + MySQL = immer falsche Ausgabe

    Hallo,
    ich arbeite inzwischen ca. 1 Woche mit Smarty und schreibe damit ein kleines Script für meine Gilde (ja wow verseucht ;( ). Einzelne Datenbankausgaben mit Smarty und MySQL sind kein Problem da funktioniert alles super, aber wenn ich nun 2 Arrays ausgeben m�chte bekomme ich Probleme könnte evtl. daran liegen das ich nicht so gut mit Arrays umgehen kann
    Also folgendes:
    Ich habe eine Tabelle in der Datenbank:
    id, mainid, name, beschreibung, typ
    mit typ wird unterschieden ob es eine kategorie ist oder eine unterkategorie wenn 1 dann kategorie wenn 0 dann unterkat.
    Meine .tpl Datei:
    Code:
    <table border="0"class="news" align="center" bgcolor="#000000">
    {section name=cat loop=$cat}
    <tr bgcolor="#888888"><td>{$smarty.section.cat.index} - {$cat[cat].name}
    {$cat[cat].beschreibung}</td></tr>
    {section name=cat2 loop=$cat2}
    <tr><td bgcolor="#bbbbbb">{$smarty.section.cat2.index} - {$cat2[cat2].name}</td></tr>
      {/section}
    {/section}
    </table>
    wenn ich dieses nun mit php und smarty realisieren möchte bekomme ich es nicht hin ohne smarty wunderbar ? Ich habe auch schon mit der Debug Funktion von Smarty daran gearbeitet aber es es bleibt immer nur eine unterkategorie es werden nie alle angezeigt.
    Gibt es da vielleicht eine ganz einfache Lösung soetwas zu schreiben mit php und smarty?

    mfg m0use`

  • #2
    Was sollen wir denn jetzt daran machen .. bzw. DAMIT !??!?

    Solltest uns vllt auch deine PHP Datei posten ... bzw. nur den entsprechenden Abschnitt .. und denn nochmal genau in kurzform deine Frage weil :

    Ich will 'n Array ausgeben .. und da klappts : bei 2 Arrays klappts nicht ? Warum ?

    Damit können wir nix anfangen ..

    Kommentar


    • #3
      *g* ganz den php teil vergessen sorry
      Also hier der php abschnitt:

      PHP-Code:
      <?php
        $gs_boards 
      mysql_query("SELECT id,name,beschreibung,typ FROM gs_boards WHERE typ = 1");
        
      $boards = array();
        while (
      $board_row mysql_fetch_assoc($gs_boards)) {
          
      $boards[] = $board_row;
         }
            
      $gs_boards2 mysql_query("SELECT id,name,beschreibung,typ FROM gs_boards WHERE typ = 1");
            while (
      $board_row2 mysql_fetch_assoc($gs_boards2)) {
              
      $gs_boards3 mysql_query("SELECT id,mainid,name,beschreibung,typ FROM gs_boards WHERE mainid = 1"); #'".$board_row2['id']."'");
              
      $boards3 = array();
              while (
      $board_row3 mysql_fetch_assoc($gs_boards3)) {
                
      $boards3[] = $board_row3;
                for (
      $x=0;$x<count($boards);$x++){    
                  
      $gs_boards4 mysql_query("SELECT id,mainid,name,beschreibung,typ FROM gs_boards WHERE typ = 0 AND mainid = '".$board_row2['id']."'");
                  
      $boards4 = array();
                  while (
      $board_row4 mysql_fetch_assoc($gs_boards4)) {
                    
      $boards4[] = $board_row4;
                  }
                }
             }
        }
      ?>
      Die Variablennamen sind ein bisschen komisch aber sind nur vorrübergehend so, weil ich am testen bin.

      Kommentar


      • #4
        Re: Smarty + MySQL = immer falsche Ausgabe

        Zitat von m0use`
        evtl. daran liegen das ich nicht so gut mit Arrays umgehen kann
        Dann gehört der Fred ins Anfänger-Forum: verschoben!

        Kommentar


        • #5
          OMFG ...


          4 verschachtelte Querys ?!?!?!?



          Nee oder ?!?!?!?!

          Kuckst du hier und das bitte für JEDES DER 4 QUERYS

          http://www.phpfriend.de/forum/ftopic57412.html

          Kommentar


          • #6
            Wo werden eigentlich die Daten aus dem PHP Skript an Smarty übergeben und warum haben die Smarty Variabeln die du verwendest hast im Template rein garnichts mit dennen vom PHP Skript zu tun?

            Kommentar


            • #7
              Zitat von M3g4Star
              Kuckst du hier und das bitte für JEDES DER 4 QUERYS

              http://www.phpfriend.de/forum/ftopic57412.html
              hab ich gemacht und es kam keine Fehlermeldung also gibts vllt. noch so ein tut für Arrays oder so was mir weiterhelfen könnte, sehe ja ein das diese 4 verschachtelten querys mist sind nur wie bekomme ich dann z.B. die daten daraus?
              Weshalb ist das hier eigentlich nen Fred und kein Thread?!

              m0use`

              Kommentar


              • #8
                Kommentiere mal Deinen Code in der Form:
                - Ziel des Skripts
                - zerfällt in die Aufgaben a,b,c
                - a: Beschreibung von a
                - Code für den Block a, ggf mit weiteren Anmerkungen
                - b: Beschreibung von b
                - Code für den Block b, ggf
                usw usw usw

                Kommentar


                • #9
                  Okay also so habe ich es in php gemacht ohne smarty und da funktioniert es auch ohne Probleme:
                  PHP-Code:
                  <?php
                  //hier wird die kategorie ausgegeben
                    
                  $sql "SELECT id,name,beschreibung,typ FROM gs_boards WHERE typ = 1";
                    
                  $boardtyp1 mysql_query($sql) or die("Error using mysql_query($sql): ".mysql_error());
                    while (
                  $boardtyp1_row mysql_fetch_assoc($boardtyp1)) {
                  ?>
                  <table border="0" width="60%">
                  <tr><td bgcolor="#dddddd"><? echo $boardtyp1_row['name']; ?></td></tr>
                  </table>
                  <?php
                  // hier wird die unterkategorie ausgegeben
                    
                  $sql "SELECT id,name,beschreibung,typ FROM gs_boards WHERE typ = 0 AND mainid = '".$boardtyp1_row['id']."'";
                    
                  $boardtyp0 mysql_query($sql) or die("Error using mysql_query($sql): ".mysql_error());
                    while (
                  $boardtyp0_row mysql_fetch_assoc($boardtyp0)) {
                  ?>
                  <table border="0" width="60%">
                  <tr><td bgcolor="#bbbbbb"><? echo $boardtyp0_row['name']; ?></td></tr>
                  </table>
                  <?php
                    
                  }
                  }
                  ?>
                  So sieht dann die ausgabe aus:

                  Kommentar


                  • #10
                    Die daten an Smarty übergeben ist eigentlich ganz easy :wink: hier ein beispiel ..

                    Code:
                    $smarty_array = array();
                    
                    $sql_abfrage = ...
                    while($result = deine Funktion($sql_abfrage))
                    {
                        $smarty_array[] = array(
                          'id' => $result['name_id'],
                          'text' => $result['name']);
                    }
                    
                    $smarty->assign('meine_daten', $smarty_array);
                    so mit smarty ausgeben ..

                    Code:
                    {foreach name=irgendwas item=data from=$meine_daten}
                    ID: {$data.id}
                    
                    TEXT: {$data.text}
                    {foreach}
                    Ich lerne PHP und es macht mir Spass!

                    Kommentar


                    • #11
                      Hi phpbeginner,
                      so mache ich es auch aber dann habe ich nicht wie im bild die ausgabe in der oberen kategorie 3 und unten eine unterkategorie sondern oben und unten die kategorie threaddata die anderen oberen drei werden gar nicht berücksichtigt.

                      mfg m0use`

                      Kommentar


                      • #12
                        Das ist seltsam, da der Code so funktioniert.
                        http://bruchpilot.br.funpic.de/beispiele/m0use1/

                        Kommentar


                        • #13
                          In deinem Beispiel @ Bruchpilot wird aber doch gar nicht die unterkategorie erwähnt oder seh ich das falsch? So funktioniert das auch bei mir aber ich möchte auch noch die unterkategorie mitangezeigt haben. Das verursacht aber diese komische anzeige siehe meinem vorletzten post.

                          Kommentar


                          • #14
                            {/foreach}

                            Kommentar


                            • #15
                              Ja ich habe es auch schon mit foreach und section probiert
                              so siehts momentan aus mit php und smarty:

                              PHP-Code:
                              <?
                                $sql = "SELECT id,mainid,name,beschreibung,typ FROM gs_boards WHERE typ = 1";
                                $boardtyp1 = mysql_query($sql) or die("Error using mysql_query($sql): ".mysql_error());
                                $kli = array();
                                while ($boardtyp1_row = mysql_fetch_array($boardtyp1)) {
                                  $kli[] = array(
                                    'id' => $boardtyp1_row['id'],
                                    'mainid' => $boardtyp1_row['mainid'],
                                    'name' => $boardtyp1_row['name'],
                                    'beschreibung' => $boardtyp1_row['beschreibung']); 

                                $sql = "SELECT id,mainid,name,beschreibung,typ FROM gs_boards WHERE typ = 0 AND mainid = '".$boardtyp1_row['id']."'";
                                echo $sql;
                                $boardtyp0 = mysql_query($sql) or die("Error using mysql_query($sql): ".mysql_error());
                                $klio = array();
                                while ($boardtyp0_row = mysql_fetch_array($boardtyp0)) {
                                  $klio[] = array(
                                    'id' => $boardtyp0_row['id'],
                                    'mainid' => $boardtyp0_row['mainid'],
                                    'name' => $boardtyp0_row['name'],
                                    'beschreibung' => $boardtyp0_row['beschreibung']); 
                                }
                              }
                              ?>
                              Smarty - html:
                              PHP-Code:
                              <table border="0" cellspacing="1" cellpadding="2" width="70%" class="news" align="center" bgcolor="#000000">
                              {
                              section name=boards loop=$boards}
                              <
                              tr bgcolor="#888888"><td>{$smarty.section.boards.index} - [url="{$boards[boards].id}"]{$boards[boards].name}[/url]
                              [
                              i]{$boards[boards].beschreibung}[/i]</td></tr>
                              {
                              section name=boards2 loop=$boards2}
                              <
                              tr><td bgcolor="#bbbbbb">{$smarty.section.boards2.index} - {$boards2[boards2].name}</td></tr>
                                {/
                              section}
                              {/
                              section}
                              </
                              table

                              Kommentar

                              Lädt...
                              X