schleifenINschleifen & queryIMquery

Schaelle

Mitglied
Hallo, ich hab ein SQL Query mit dem ich eine Spalte aus der DB raushole wo Member-ID's in der Form stehen: 1 - 2 -
Diese hol ich dan per Explode in das Array $a . Und aus dem Array soll dan per Attayschleife die Namen aus einer anderen Tabelle in der DB rausgeholt werden. Und mit einem Zeilenumbruch gestaltet. Nur leider gibt es mir einen SQL Fehler aus, nur weiss ich nicht warum, achso der wäre:
You have an error in your SQL syntax near '' at line 6
Das wäre dan das Query im Query.
Hoffe auch Hilfe :)

PHP:
	global $traintabelle;
	global $cfgtabelle;
	global $membertabelle;
	db();
	$tid = $_GET[tid];
   	$sql =   "
   		SELECT   $traintabelle.datum,
            		 $traintabelle.gameid,
            		 $traintabelle.squadid,
			 $traintabelle.anwesend,
			 $traintabelle.nichtanwesend,
			 $traintabelle.entschuldigt,
			 $traintabelle.nichtimsquad,
            		 $cfgtabelle.content AS sname,
            		 secInstance.content AS gname
   		FROM     $traintabelle

      		INNER JOIN $cfgtabelle
         	ON $traintabelle.squadid = $cfgtabelle.id

      		INNER JOIN $cfgtabelle AS secInstance
         	ON $traintabelle.gameid = secInstance.id

   		WHERE $traintabelle.id = $tid
   	;";
   	$result = mysql_query($sql) OR die(mysql_error());
	while($row = mysql_fetch_assoc($result)) {
		$game = $row[gname];
		$squad = $row[sname];
		$datum = $row[datum];
		$a_names = "";
		$a = explode (" - ", $row[anwesend]);
		foreach ($a as $value) {
		  $sql1 =  "SELECT
			     name
			    FROM
			     $membertabelle
			   WHERE
			     id = $value";
		  $getname = mysql_query($sql1) OR die(mysql_error());
		  while($getname = mysql_fetch_assoc($result)) {
		    $a_names .= $getname[name]."<br>";
		  }
		}
		$a = $a_names;
		eval ("dooutput(\"".gettemplate("train_more")."\");");
	}

mfg&thx
 
so wie das Kling verstösst deine Datenbankstrutur gegen die erste Normalform - alle Attribute müssen Atomar sein, was bei deinem "anwesend" niht der Fall ist. Eigentlich müsste das in einer extra Tabelle stehen, über die du das dann mit der $membertabelle joinen kannst.

Zu dem Fehler, ich würde drauf tippen das eine der beiden Variablen im Query leer ist. Um das besser zu sehen wo das Query leer ist, mach doch mal ein
die(mysql_error().": $sql1");
dann siehst du auch wie das Query mit den Variablenwerten aussieht.
 
Nunja. Kan schon sein, bin neu in sachen SQL.
Es gibt aus das die Var $value leer ist. Aber wen iich die Foreach-Schleife ohne 2tes Query ausgebe (nur "echo $value) werden die ID's aus der DB schön Explodet ausgegeben. warum werdn diese dan nicht ins 2te Query reingenommen? VarDump gibt rray(3) { [0]=> string(2) "16" [1]=> string(1) "1" [2]=> string(0) "" } aus, wobei in der DB "16 1" in der Zelle steht.

mfg
 
wie du siehst, hat das durch explode entstandene Array jedoch ein leeres Element am Ende, was beim Schleifendurchlauf dazu führt das du beim 3. mal einen Fehler bekommst, denn das dritte Element des Wertes ist ja auch leer.
Von Daher wäre die Frage, wie explode bei "16-1" dazu kommt drei statt zwei Elemente zu finden. Wie kommen denn die Werte wie 16-1 und so weiter in die Datenbank rein? Über ein Formluar, per hand o.ä.? Also nicht das ein \n oder sonstwas am ende steht.
 
Zurück