ilch Forum » Allgemein » HTML, PHP, SQL,... » list_get Problem

Geschlossen
  1. #1
    User Pic
    assault Hall Of Fame
    Registriert seit
    03.11.2006
    Beiträge
    2.925
    Beitragswertungen
    1 Beitragspunkte
    hi,
    ich wollt mich mal an php versuchen, jetzt steh ich aber vor einem Problem, ich will mir mit dem get_list()-Befehl etwas ausgeben, in der php-datei sieht der Code so aus:
    $erg = db_query('SELECT * FROM `prefix_gwclasses` ORDER BY name');
    while($row = db_fetch_assoc($erg)) {
     $tpl->list_get('attr_filter', array($row['name'], $row['attr_1'], $row['attr_2'], $row['attr_3'], $row['attr_4'], $row['attr_5']));
    }

    ( tpl->new() hab ich schon eingefügt)
    Wenn ich den aber nutzen würde, kommt diese Fehlermeldung:
    Warning: Invalid argument supplied for foreach() in C:\Programme\xampp\htdocs\scripte\daddel_ilch\include\includes\class\tpl.php on line 128

    hier mal beide Dateien: php & template

    und vielleicht noch was Wissenswertes: attr_5 ist manchmal leer falls es von Bedeutung ist.

    Wäre schön, wenn jmd das Problem findet, ich verzweifle daran grumml

    danke im voraus


    verwendete ilchClan Version: 1.1
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Dark Thomas Mitglied
    Registriert seit
    05.11.2007
    Beiträge
    173
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat geschrieben von assault

    hi,
    ich wollt mich mal an php versuchen, jetzt steh ich aber vor einem Problem, ich will mir mit dem get_list()-Befehl etwas ausgeben, in der php-datei sieht der Code so aus:
    $erg = db_query('SELECT * FROM `prefix_gwclasses` ORDER BY name');
    while($row = db_fetch_assoc($erg)) {
     $tpl->list_get('attr_filter', array($row['name'], $row['attr_1'], $row['attr_2'], $row['attr_3'], $row['attr_4'], $row['attr_5']));
    }

    ( tpl->new() hab ich schon eingefügt)
    Wenn ich den aber nutzen würde, kommt diese Fehlermeldung:
    Warning: Invalid argument supplied for foreach() in C:Programmexampphtdocsscriptedaddel_ilchincludeincludesclasstpl.php on line 128



    Der Fehler der dir da ausgegeben wird liegt aber in keiner der beiden dateien sondern in der Datei tpl.php etwas stimmt da mit der foreach()-Schleife nicht.

    Und warum willst du es mit dem befehl list_get() Ausgeben? Ich kenne diesen Befehl nicht und googel spuckt auch nur seltsame Ergebnisse aus.

    Evtl. gibt es eine andere Möglichkeit, Das ganze auszugeben.

    Wenn du mir sagst was der Befehl list_get() bewirkt kann ich vlll wieter helfen.

    Dark
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Nero Hall Of Fame
    Registriert seit
    12.11.2005
    Beiträge
    987
    Beitragswertungen
    0 Beitragspunkte
    hm...

    evt. funtzt es so:
    $erg = db_query('SELECT * FROM `prefix_gwclasses` ORDER BY name');
    $temp = '';
    while($row = db_fetch_assoc($erg)) {
     $temp .= $tpl->list_get('attr_filter', array($row['name'], $row['attr_1'], $row['attr_2'], $row['attr_3'], $row['attr_4'], (isset($row['attr_5'])?$row['attr_5']:-1));
    }


    Mfg Nero


    Zuletzt modifiziert von Nero am 03.02.2008 - 21:11:19
    ilch-Portal coming soon lachen

    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    assault Hall Of Fame
    Registriert seit
    03.11.2006
    Beiträge
    2.925
    Beitragswertungen
    1 Beitragspunkte
    @thomas:
    Ilch hat eigene Befehle, die alles ein bisschen vereinfachen (sollten) :
    externer Link

    @nero
    geht leider nicht
    außerdem müssen dann zuletzt drei Klammern sein, aber gleiches Ergebniss
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Nero Hall Of Fame
    Registriert seit
    12.11.2005
    Beiträge
    987
    Beitragswertungen
    0 Beitragspunkte
    aitsch

    es liegt anscheinend garnicht an dem list_get sondern daran, das du weiter unten ein nicht als array definierte variabel als array übergiebst.

    weil der Fehler scheint in dieser methode zu passieren:
    	function set_ar ($ar) {
    		foreach ($ar as $k => $v) {
    		  #$this->keys[$k] = unescape($v);
    			$this->keys[$k] = $v;
    		}
    	}


    Mfg Nero


    Zuletzt modifiziert von Nero am 03.02.2008 - 22:10:03
    ilch-Portal coming soon lachen

    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Naja wie Nero schon schrieb, du musst dann natürlich noch die $temp Variable ans Template übergeben.
    $tpl->set('attr_filter',$temp);


    Und das set_ar brauchst du doch gar nicht, da du die ganzen Sachen aus der Datenbank bzw. $row schon verarbeitet hast.

    Und die Ausgabe außerdem nach der Schleife machst und das $row nach letzter Ausführung der Schleife kein Array mehr sein sollte (die Schleife hat ja aufgehört, weil kein Array mehr erzeugt wurde), deswegen kommt sicherlich der Fehler auf den Nero hingewiesen hat.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    assault Hall Of Fame
    Registriert seit
    03.11.2006
    Beiträge
    2.925
    Beitragswertungen
    1 Beitragspunkte
    ZitatZitat geschrieben von Nero

    aitsch

    es liegt anscheinend garnicht an dem list_get sondern daran, das du weiter unten ein nicht als array definierte variabel als array übergiebst.


    hö... warum das denn?
    ich hab viel des Codes aus den Rules kopiert(auch der code beim zweiten while gehört dazu), dachte eigentlich das wäre alles soweit richtig grumml

    //edit:
    also, es gibt 2x set_ar_out() das erste gibt die rows des ersten arreys in dem if-teil aus, und das trotzdem, obwohl der arrey sofort geschlossen wurde und es auch nicht in dem if ist.
    dann das zweite set_ar_out() dass is soweit richtig

    ...und der problem code war über den zwei set_ar_out(), ich hab mal ein bisschen aufgeräumt, also jedes set_ar_out in den dazugehörigen teil getan(if & else dasselbe und rest verschieden)

    ich poste einfach mal den code ab tpl->new()

    <?php
    $tpl = new tpl ( 'gwskills', 1);
    #felder für das eintragen
    if ( empty($_GET['sid']) ) {
      $row = array();
    	$row['sub'] = 'Eintragen';
    	$row['name'] = '';
    	$row['class'] = '';
    	$row['casttime'] = '';
    	$row['energy'] = '';
    	$row['recharge'] = '';
    	$row['adrenalin'] = '';
    	$row['desc'] = '';
    	$row['image'] = '';
    	$tpl->set_ar_out($row,0);
    } else {
    	$abf = 'SELECT name,class,casttime,energy,recharge,adrenalin,desc,image,id as sid FROM `prefix_gwskills` WHERE id = "'.$_GET['sid'].'"';
    	$erg = db_query($abf);
    	$row = db_fetch_assoc($erg);
    	$row['sub'] = '&Auml;ndern';
    	$tpl->set_ar_out($row,0);
    }
    
    #while für die anzeiger existierender skills
    $clas = '';
    $erg = db_query('SELECT * FROM `prefix_gwskills` ORDER BY name');
    while ($row = db_fetch_assoc($erg) ) {
      $clas = ($clas == 'Cmite' ? 'Cnorm' : 'Cmite' ); 
    	$row['cssclass'] = $clas;
    	$tpl->set_ar_out($row,1);
    }
    #Select-while
    $temp =''; 
    $erg = db_query('SELECT * FROM `prefix_gwclasses` ORDER BY name');
    while($row = db_fetch_assoc($erg)) {
    	$temp .= $tpl->list_get('attr_filter', array($row['name'], $row['attr_1'], $row['attr_2'], $row['attr_3'], $row['attr_4'], (isset($row['attr_5'])?$row['attr_5']:-1)));
    # bei set_ar_out kommen fehler
    	$tpl->set_out('attr_filter',$temp,2);
    }
    
    $design->footer();
    ?>


    und das Problem ist jetzt: die liste wird nicht ausgelesen(is ja auch eigentlich klar, ohne set_ar_out


    Zuletzt modifiziert von assault am 03.02.2008 - 23:11:35
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    assault Hall Of Fame
    Registriert seit
    03.11.2006
    Beiträge
    2.925
    Beitragswertungen
    1 Beitragspunkte
    *push*
    Mittlerweile hab ich das Problem gelöst, nur 1. Fehler ist da noch:
    die liste gibt die Datensätze immer sofort aus, und speichert diese nicht um dann das gesamte auszugeben, sprich ich hab das so:
    1. Datensatz
    1. Datensatz
    2. Datensatz
    1. Datensatz
    2. Datensatz
    3. Datensatz
    ...

    und so sollte es aussehen:

    1. Datensatz
    2. Datensatz
    3. Datensatz
    ...

    //edit:
    ähm, ich(bzw. nero hat :)) hab gesagt, dass wenn attr_5 nicht existiert, dass es auch nicht ausgegeben werden soll. könnt ich auch sagen, dass falls es nicht existiert, 0 auszugeben.
    damit ich dann im template z.B . eine if-abfrage mach:
    (%6 = attr_5)
    {_if_%6!='0'}%6 anzeigen{/_endif}

    oder geht das nur mit variablen?


    Zuletzt modifiziert von assault am 05.02.2008 - 00:29:51
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Also ich vermute du hast mein Beitrag wegen der Zeit überlesen, kann das sein?

    Ansonsten würde ich eher mit empty anstatt mit isset prüfen, da die Variable, selbst wenn in der Datenbank nichts steht, gesetzt werden sollte und isset immer true zurück gibt.

    Ich glaube das mit der Template Bedingung sollte nicht gehen, weil er da nach einer {}-Variable sucht und nicht nach %??.

    Du könntest es natürlich alles ohne eine Liste und mit ein paar Explodes machen, dann könntest du es benutzen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    assault Hall Of Fame
    Registriert seit
    03.11.2006
    Beiträge
    2.925
    Beitragswertungen
    1 Beitragspunkte
    ne, dein ersten Post hab ich nicht übersehen, ich wusst nur nicht wirklich was damit anzufangen, da ich dachte, wenn man den nicht schon beim set() einen abschnitt zuweißt, werden auch die anderen in den abschnitt gepackt, aber das war ja nicht so.
    genau gesagt, ich hatte das tpl-system noch nicht ganz geschnallt...

    ich will mal versuchen, dass mit 'ner if-schleife zu machen, weil ich diese liste vll 2 mal verwenden will, und dann hat man weniger code, und das ist doch auch fein glücklich

    //edit:
    bevor sich jmd noch den Kopf zerbricht: alles geht jetzt lachen!


    Zuletzt modifiziert von assault am 05.02.2008 - 17:49:25
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten