[PHP, Mysql] Test if depuis donnée de table

Fermé
Profil bloqué - 14 févr. 2010 à 17:42
 Profil bloqué - 17 févr. 2010 à 23:20
Bonjour à vous,
je cherche a faire un test entre deux de mes base mysql, mon test doit verifier si lelien contenu dans la table a contient des enfants (sous-menu) dans une autre table.

J'ai donc pensez a faire:

if ($donnees_left_link['id'] == $donnees_left_link2['id'])


mais cela ne fonctionne malheureusement pas.
le but final de mon script et de mettre un lien different suivant le fait qu'il y est ou non un sous menu:

<?php
	$left_menu = mysql_query("Select id, title FROM jos_left ORDER BY id ASC") or die (mysql_error());
	$left_link = mysql_query("Select id, title, link FROM jos_left_link ORDER BY id ASC") or die (mysql_error());
	$left_link2 = mysql_query("Select id, title, link FROM jos_left_link2 ORDER BY id ASC") or die (mysql_error());
	$donnees_left_menu = mysql_fetch_array($left_menu);
	$donnees_left_link = mysql_fetch_array($left_link);
	$donnees_left_link2 = mysql_fetch_array($left_link2);
	
?>
<ul>
	<?php
		while ($donnees_left_menu)
		{
		echo'<div class="left_header_articles"></div><div class="right_header_articles"></div><div class="center_header_articles"></div><div class="left"><fieldset><legend>'.$donnees_left_menu['title'].'</legend>';
		while ($donnees_left_link)
		{
			if ($donnees_left_link['id'] == $donnees_left_link2['id'])
			{
			echo '<a href="'.$donnees_left_link['link'].'" onClick="showHide(this);return false">'.$donnees_left_link['title'].'</a>';
			}
			else
			{
			echo'<a href="'.$donnees_left_link['link'].'">'.$donnees_left_link['title'].'</a><br />';
			}
		}
		}
    ?>
</ul>

et cela coupler avec le code javascript suivant :

<script type="text/javascript">
function showHide(obj)
{
	var ns = obj.parentNode.nextElementSibling;
	if(ns.nodeName.toUpperCase() == "UL")
		ns.style.display = (ns.style.display == "block") ? "none" : "block";
}
</script>


qui permet d'afficher au clic les sous menu.

Ainsi, les liens comme accueil ne porterons pas le onclick qui desactive le lien et le remplace par le javascript.

Avez vous une idée concernant la structure du if a pratiquez?
A voir également:

4 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
14 févr. 2010 à 22:15
fais tout ça directement avec la requête mysql:

	$query="SELECT jos_left.id as left_id, jos_left.title as left.title,jos_left_link.link as left_link, jos_left_link2.link as left2_link, FROM jos_left,jos_left_link,jos_left_link2 WHERE jos_left.id = jos_left_link.id";


vas voir sur G...

requête sur deux tables
0
Profil bloqué
14 févr. 2010 à 23:02
Merci alain de ta reponse, mais je ne vaois pas ce que cela change, ma question est comment ecrire le if qui test si l'id du lien et redemander dans une autre table, la tu me fait tout mettre dans une reul requete qui est bien sauf quand on develloppe en apprentissage.

Donc comment faire cette structure if?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
15 févr. 2010 à 09:03
pourquoi veux tu absolument faire avec un if alors que mysql t'offre la possibilité d'extraire justement suivant la condition voulue ?

de plus tu as fait une erreur de principe:

$left_menu = mysql_query("Select id, title FROM jos_left ORDER BY id ASC") or die (mysql_error());
//tu as plusieurs enregistrement qui sont extraits et mis dans une zone mémoire
//par cette instruction ci dessous tu ne sort que la premiere ligne $donnees_left_menu est un array contenant la premiere ligne
$donnees_left_menu = mysql_fetch_array($left_menu);

?>
<ul>
<?php
//et la tu mets une belle boucle infinie, un while sans condition,, elle ne peut pas s'arréter
while ($donnees_left_menu)


Le principe a utiliser pour extraire de mysql:

$left_menu = mysql_query("SELECT id, title FROM jos_left ORDER BY id ASC") or die (mysql_error());
//tu as plusieurs enregistrement qui sont extraits et mis dans une zone mémoire

?>
<ul>
<?php
while ($donnees_left_menu = mysql_fetch_array($left_menu)){
//avec la boucle while on sort les enr de la zone mémoire ligne par ligne (et tant qu'il y en a)

//affichage

}

//mais attention mysql_fetch_array lit les enr mais a la fin de la boucle while le pointeur est à la derniere ligne, c'est a dire si tu recomences une deuxieme fois,tu ne lira plus rien
0
Profil bloqué
17 févr. 2010 à 23:20
ok mais ca ne me fait toujours pas un test entre l'ide du lien qui foit etre ecris et la table des possible enfants afin de determiner s'il en a ou non et ainsi ecrire le lien dans ca forme normale, href="blabla.php" ou dans ca forme de slide href="#" onclick.... qui permet d'afficher les enfants. ce que tu me donne, je l'est deja (al ecis il est vrai mais je ne veux pas metre les 47 niveaux d'enfants d'un coup. il faut donc un test ce que je demande depuis le premier message, comment ecrire le test.

si c'est effectivemùent dans ta reponses, decrit la car c'est completement cache dans ce cas.
0