Smarty Problem bei der Useranordnung einer Squad Tabelle

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

  • Smarty Problem bei der Useranordnung einer Squad Tabelle

    Hi ,

    Ich werde schon seid längeren wegen einen Problem auf das ich keine Lösung weiß aufgehalten.

    Hoffentlich könnt ihr mir Helfen.

    Also ich will eine Squadliste erstellen , es bestehen Drei Mysql Tabellen:
    - User Tabelle ( Username , Userid usw )
    - Squad Tabelle ( Squadnamen und Beschreibung )
    - Squad User Zuteilungstabelle ( Mit der Squadid und Userid zum zuteilen der User die in der Squad sind)

    Jetzt will ich das die Squadnamen und darunter die dazugehörigen Mitglieder per Smarty ausgeben werden also habe ich folgenden PHP Code geschrieben :


    Code:
     $result = mysql_query('SELECT * FROM squads');
     while($row = mysql_fetch_assoc($result))
     {
    
       $result2 = mysql_query('SELECT * FROM squaduser WHERE squadid = '.$row['id'].'');
         while($row2 = mysql_fetch_assoc($result2))
         {
    	    $result3 = mysql_query('SELECT * FROM users WHERE id = '.$row2['userid'].'');
    		while($row3 = mysql_fetch_assoc($result3))
            {
    			$member[] = $row3;
    		}
         }
     
      $squads[] = $row;
    
     }
    
        $smarty->assign('member', $member);
        $smarty->assign('squads', $squads);
        $smarty->display('index.tpl');
    Und genau jetzt kommt ein Fehler nämlich das alle Namen die in den Squads drin sind unter jeden Squadnamen angezeigt werden.

    Nämlich so :

    Squad 1
    - Member1
    - Member2
    Squad 2
    - Member1
    - Member2
    Squad 3
    - Member1
    - Member2
    Webei es eigentlich so aussehen sollte weil Member 1 und Member 2 eigentlich nur zu Squad 1 Angehören und nicht zu Squad 2 oder Squad 3

    Squad 1
    - Member1
    - Member2
    Squad 2
    -
    Squad 3
    -
    Hier der HTML Code mit Smarty :

    Code:
    {section name=squads loop=$squads}
    
     <b>{$squads[squads].title}</b>
     <br />
    
        {section name=member loop=$member}
         <i>{$member[member].username}</i>
        {/section}
    
    {/section}
    Ich würde mich sehr über Hilfe freuen den ich weiß nicht mehr weiter

  • #2
    Kenn mich mit Smarty nicht so aus, aber auch dort muss es eigentlich eine Reset-Methode geben, die dafür sorgt, dass die werte (nachdem sie dem übergeordneten Block zugeordnet wurden) wieder zurück gesetzt werden.

    Kommentar


    • #3
      Habe noch nie was von diesen reset methoden in smarty gehört , hat vielleicht einer Ahnung ob es das überhaupt in Smarty gibt?

      Kommentar


      • #4
        Na, irgendwie musst du das ganze auf jeden fall zurücksetzen können.

        BTW: hab mir gerade mal den ersten Teil deines Codes angeguckt. Verschachtelte DB-Queries? Sehr gut. sagen wir du hast 10 sqads mit je 10 Usern, da produzierst du mit deinem code mal eben 1+10+10 Anfragen an die DB. Supi!

        Kommentar


        • #5
          Re: Smarty Problem bei der Useranordnung einer Squad Tabelle

          wasn das auch für ein Array? OO,
          wie wäre es mit einem Multidimensionalen Array?

          PHP-Code:
          <?php

          $result 
          mysql_query('SELECT * FROM squads');
          while(
          $row mysql_fetch_assoc($result)) {
              
          $row['members'] = array();
              
          $result2 mysql_query('SELECT * FROM squaduser WHERE squadid = '.$row['id'].'');
              while(
          $row2 mysql_fetch_assoc($result2)) {
                  
          $result3 mysql_query('SELECT * FROM users WHERE id = '.$row2['userid'].'');
                  while(
          $row3 mysql_fetch_assoc($result3)) {
                      
          $row['members'][] = $row3;
                  }
              }
              
          $squads[] = $row;
          }

          $smarty->assign('squads'$squads);
          $smarty->display('index.tpl');

          ?>


          und hier nochmal eine kleine Optimierung, das verschnellert wenigstens den letzten Query, bzw. die letzten Queries ....
          PHP-Code:
          <?php

          $result 
          mysql_query('SELECT * FROM squads');
          while(
          $row mysql_fetch_assoc($result)) {
              
          $row['members'] = array();
              
              
          $temp = array();
              
          $result2 mysql_query('SELECT * FROM squaduser WHERE squadid = '.$row['id'].'');
              while(
          $row2 mysql_fetch_assoc($result2)) {
                  
          $temp[] = $row2['userid'];
              }
              
              
          $result2 mysql_query('SELECT * FROM users WHERE id IN (' implode(', '$temp) . ')');
              while(
          $row2 mysql_fetch_assoc($result2)) {
                  
          $row['members'][] = $row2;
              }
              
              
          $squads[] = $row;
          }

          $smarty->assign('squads'$squads);
          $smarty->display('index.tpl');

          ?>


          btw. smarty-Code dafür
          Code:
          {section name=squads loop=$squads}
          
           <b>{$squads[squads].title}</b>
           <br />
          
              {section name=members loop=$squads[squads].members}
               <i>{$squads[squads].members[members].username}</i>
              {/section}
          
          {/section}
          sollte zumindest ... *grade keine Lust hat zu testen*

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Ja , Es funktioniert , es kommen halt nur noch zwei QUERY Fehlermeldungen:

            Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in xxx on line xxx
            Zuletzt geändert von index.php; 30.12.2005, 22:12.

            Kommentar


            • #7
              Original geschrieben von index.php
              Ja , Es funktioniert , es kommen halt nur noch zwei QUERY Fehlermeldungen:



              tjo, wie wäre es mit
              echo mysql_error()
              wie auch im sticky-Thread steht? >_>

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar

              Lädt...
              X