Smarty Problem

MsvP@habdichliebhasi

Erfahrenes Mitglied
Hi zusammen,

ich habe mal wieder ein Problem und das Schlimme ist, wäre es ein reines PHP/ MySql Problem, wäre es keines.

Aber unser Programmierer kam auf die Idee ein Template System mit Smarty anzuschleppen und ich bekomme eine Kriese nach der anderen.

Und zwar wollte ich eine ganz einfach DB Anfrage schalten:

Datenbankanfrage Landkarte sucht Koordinaten und IDs heraus, währen eine zweite Datenbankanfrage mittels der IDs den Koordinaten Personen hinzusortiert.

MySql -> Landkartenanfrage
while{
MySql -> Personenanfrage
}

Jetzt habe ich die erste Array Übergabe an Smartys hinbekommen:

PHP:
    $query = "SELECT ID, Wahlkreis, Coords FROM T_Wahlkreis";
    $wahlkreisqry = mysql_query($query) OR die(mysql_error());

    $wahlkreis = array();
    while($row = mysql_fetch_assoc($wahlkreisqry))
    {
     $wahlkreiskarte[] = $row;

   }


$smarty->assign('wahlkreiskarte', $wahlkreiskarte);


Die Abfrage um an die Personen zu kommen würde ich normalerweise in der "While-Schleife" schalten:

PHP:
$personwahl_anfrage= mysql_query ("SELECT ID, Vorname_Name FROM T_Person WHERE Wahlkreis_ID_1='$row[ID]'");


Aber an dieser Stelle weiß ich dann nicht, wie ich diese Ausgabe an Smarty übergeben soll, da diese ja inerhalb der While Schleife geschieht. Irgendwie stehe ich da auf dem Schlauch.


Vielen Dank für Eure Hilfe.

Liebe Grüße
Micha
 
Hi,

also als erstes kannst du das viel besser in einem Query abhandeln, nicht jedesmal eine extra Abfrage...

Die Ergebnisse schreibst du dann in ein assoziatives Array, welches du auch Smarty zuweist...


PHP:
    $query = "SELECT t.Vorname_Name, w.ID, w.Wahlkreis, w.Coords FROM T_Person as t, T_Wahlkreis as w WHERE t.Wahlkreis_ID_1= w.ID";
    $wahlkreisqry = mysql_query($query) OR die(mysql_error());


		$i = 0;    
    while($row = mysql_fetch_assoc($wahlkreisqry))
    {
    	foreach($row as $key => $value){
     		$wahlkreiskarte[$i][$key] = $value
     	}
   $i++;
    }


$smarty->assign('wahlkreiskarte', $wahlkreiskarte);

Im Template kannst du das ganze dann mit der Smarty-Funktion foreach wieder ausgeben lassen.


Gruß

.:lay-z-cow:.
 
Hier mal ein Ausschnitt aus meiner MySQL Klasse

PHP:
/**
	 * Liefert einen Datensatz als assoziatives Array
	 *
	 * @return Datensatz (array) oder False
	 */
	public function fetchAssoc(){
		if (is_resource($this->result)) {
			$row = mysql_fetch_assoc($this->result);
        }
        
        if (is_array($row)) {
        	$this->iteration++;
        	return $row; // normale while schleife die durchlaufen wird
        } else {
        	
        	return false;
        }
		
	}
	
	/**
	 * Erstelle ein Smarty Array
	 *
	 * @return array Datanbankeinträge
	 *
	 */
	public function toArray(){
		if(!isset($this->SmartyArray)) {
			$this->SmartyArray = array();
			
			while($row = $this->fetchAssoc()){
				$this->SmartyArray[] = $row;
			}
		}		
		return $this->SmartyArray;
		
	}

Der Aufruft geht dann folgendermaßen:

PHP:
$smarty->assign("daten",$database->toArray());
 
Zurück