jenslm: zwei do-while-schleifen

also sowas hier funktioniert ja leider nicht:

  
  
if(isset($_GET['parameter']))  
{  
	$parameter = $_GET['parameter'];  
	$sql = "SELECT COUNT(id) FROM tab1 WHERE parameter = '$parameter' AND lang = '$lang'";  
	$result = mysql_query($sql);  
	$number = mysql_result($result, 0);  
	  
	if($number != 0)  
	{  
		$sql = "SELECT id, name FROM tab1 WHERE lang = '$lang'";  
		$result = mysql_query($sql, $database) or die(mysql_error());  
		$row = mysql_fetch_assoc($result);  
  
		do  
		{  
			if($row['id'] == $parameter)  
			{  
				echo "<li><a class=\"active\" href=\"irgendwohin\">".$row['name']."</a></li>\n";  
				  
				$sql = "SELECT id, name FROM tab2 WHERE lang = '$lang'";  
				$result = mysql_query($sql, $database) or die(mysql_error());  
				$row = mysql_fetch_assoc($result);  
				  
				echo "<ul>";  
				  
				do  
				{  
					echo "<li><a href=\"irgendwohin\">".$row['name']."</a></li>\n";  
				}  
				while ($row = mysql_fetch_assoc($result));  
				  
				echo "</ul>";  
				  
			}  
			  
			else  
			{  
				echo "<li><a href=\"irgendwohin\">".$row['name']."</a></li>\n";  
			}  
		}  
		while ($row = mysql_fetch_assoc($result));  
	}  
	  
	else  
	{  
		//unwichtig  
	}  
}  
  

wie koennte ich das loesen?
lg, jens

  1. Hi there,

    also sowas hier funktioniert ja leider nicht:

    wäre schön gewesen, wenn Du auch gesagt hättest, was nicht funktioniert. Ohne jetzt Deine Code studieren zu wollen aber:

      
    	$sql = "SELECT COUNT(id) FROM tab1 WHERE parameter = '$parameter' AND lang = '$lang'";  
      
      
    
    

    da sehe ich sofort und glaube nicht, daß Du einen Wert suchst, der $parameter lautet, oder? (Variablen zwischen einfachen Anführungszeichen werden nicht substituiert, abgesehen davon, daß das Setzen auch zwischen doppelte Anführungszeichen extrem schlechter Stil ist)

    wie koennte ich das loesen?

    irgendwer wird Dich schon noch auf die Tipps für Fragende hinweisen...

    1. Hi!

      $sql = "SELECT COUNT(id) FROM tab1 WHERE parameter = '$parameter' AND lang = '$lang'";

      da sehe ich sofort und glaube nicht, daß Du einen Wert suchst, der $parameter lautet, oder? (Variablen zwischen einfachen Anführungszeichen werden nicht substituiert, abgesehen davon, daß das Setzen auch zwischen doppelte Anführungszeichen extrem schlechter Stil ist)

      Zum einen stehen die Variablen aus PHP-Sicht zwischen doppelten Anführungszeichen, und zum anderen spricht außer persönlichem Empfinden nichts Generelles gegen eine solche Notation. Ein berechtigter Kritikpunkt wäre jedenfalls gewesen, dass der Kontextwechsel mal wieder nicht beachtet wurde.

      wie koennte ich das loesen?

      Wenn man Variablen wiederverwendet, die man für die äußere Schleife noch braucht, muss man sich nicht wundern.

      Lo!

  2. Hallo Jens,

    wie koennte ich das loesen?

    mit einem Join und einem Subselect. Es ist eine denkbar schlechte Idee, sowas mit PHP nachbauen zu wollen, nur weil man sich nicht mit der SQL-Syntax auseinanderesetzen will. Ich sehe jedenfalls keinen Bedarf für mehrfach geschachtelte Schleifen, in denen SQL-Statements abgefeuert werden.

    Hilfreich wäre es, ein paar Ausgangsdaten zu haben und das gewünschte Resultat.

    Freundliche Grüße

    Vinzenz