Compraison d'affichage de 2 résultat

Fermé
Ben314 Messages postés 2312 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 1 mai 2017 - 28 août 2014 à 11:04
Ben314 Messages postés 2312 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 1 mai 2017 - 30 août 2014 à 23:51
Bonjour

Voila j'affiche dans une page web 2 liste dans 2 tableau, liste récupérer depuis BD.
Les 2 liste affiche les résultat d'une même table, mais la première filtre les résultat via quelque jointure et l'autre les affiche tous...

Je cherche a faire en sorte que dans la liste 2 si il ya des "id" qui sont déjà présent dans la liste 1 l'affichage soit modifier

voici le code de mes 2 liste :

<?php

//requête SQL:
$sql2 = "SELECT *
FROM INSTRUMENT join est_pratiquer ON INSTRUMENT.id_instrument=est_pratiquer.id_instrument
join MEMBRES ON est_pratiquer.id_membre=MEMBRES.id_membre

WHERE MEMBRES.id_membre=".$idmembre."
ORDER BY nom_inst" ;

//exécution de la requête:
$requete2 = mysql_query( $sql2, $cnx ) ;

//affichage des données:
while( $result2 = mysql_fetch_object( $requete2 ) )
{
echo("
<tr>
<td width=\80%\">".$result2->nom_inst."</td>
<td width=\"20%\" align=\"right\"><a href=\"#\" onClick=\"confirme('".$result2->id_instrument."','".$idmembre."')\">SUPPRIMER</a></td>
</tr>
") ;
}
?>


<?php
//requête SQL:
$sql1 = "SELECT *
FROM INSTRUMENT
ORDER BY nom_inst" ;

//exécution de la requête:
$requete1 = mysql_query( $sql1, $cnx ) ;

//affichage des données:
while( $result1 = mysql_fetch_object( $requete1 ) )
{
echo("
<tr>
<td width=\"80%\">".$result1->nom_inst."</td>
<td width=\"20%\" align=\"right\"><a href=\"insert_2.php?idinstrument=".$result1->id_instrument."&idmembre=".$idmembre."\">AJOUTER</a></td>
</tr>
") ;
}
?>


Au final je voudrait que dans ma liste 2 le lien d'insertion ne soit pas affiché si "id_instruement" existe dans la liste 1...
Et c'est la que je bloque, j'ai bien tenté de créé un tableau avec les résultat de la liste 1 puis de faire un foreach dans le 2éme pour comparer mais je suis pas au niveau...

Merci d'avance
A voir également:

1 réponse

Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
Modifié par Fallentree le 28/08/2014 à 11:56
j'aurais dit une jointure https://sql.sh/cours/jointures
trois cas de jointure 1-n n-1 et n-n (presentation ACCESS)
pour ton cas LEFT JOIN (sans l'intersection de B) https://sql.sh/cours/jointures


$sql1 = "SELECT * 
FROM INSTRUMENT 
ORDER BY nom_inst
LEFT JOIN B ON INSTRUMENT.id_instrument=est_pratiquer.id_instrument 
WHERE est_pratiquer.id_instrument IS NULL
" ;
0
Ben314 Messages postés 2312 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 1 mai 2017 1 491
Modifié par Ben314 le 28/08/2014 à 12:08
euh tu n'a pas du comprendre ce que je voulais faire...
les requêtes fonctionne !! pis la vous parlait de la première liste ???
c'est au niveau de l'affichage de la seconde que je veut filtrer... (des TD,)
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
28 août 2014 à 13:00
<?php 

//requête SQL: 
$sql2 = "SELECT * 
FROM INSTRUMENT join est_pratiquer ON INSTRUMENT.id_instrument=est_pratiquer.id_instrument 
join MEMBRES ON est_pratiquer.id_membre=MEMBRES.id_membre 

WHERE MEMBRES.id_membre=".$idmembre."	
ORDER BY nom_inst" ; 

//exécution de la requête: 
$requete2 = mysql_query( $sql2, $cnx ) ; 

//affichage des données: 
while( $result2 = mysql_fetch_object( $requete2 ) ) 
{ 
echo(" 
<tr> 
<td width=\80%">".$result2->nom_inst."</td> 
<td width="20%" align="right"><a href="#" onClick="confirme('".$result2->id_instrument."','".$idmembre."')">SUPPRIMER</a></td> 
</tr> 
") ; 
} 
?> 


celle là ?
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
Modifié par Fallentree le 28/08/2014 à 13:01
Et au fait si les requetes fonctionnent mais que tu veux enlever des valeurs ...
"MODIFIES LA, TA REQUETE"
0
Ben314 Messages postés 2312 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 1 mai 2017 1 491
Modifié par Ben314 le 30/08/2014 à 12:25
non l'autre....
ouais tu a compris, enfin presque :) , je veut que la requête sql2 prenne en compte les résultat de la sql1, pour faire sauter les doublon dans sql1...

Mais la je voit pas trop en modifiant la requête....

j'avais plus penser à stocker les résultat (id) de la requête sql2 dans un "array", pour les ressortir sur la requête sql1 et faire un foreach de mon array et un if, si id existe n'affiche pas le résultat, sinon affiche le...
Mais j'ai un méchant problème avec les tableau (array) ^^

Merci beaucoup de votre aide
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
Modifié par Fallentree le 30/08/2014 à 13:28
https://sql.sh/cours/distinct
pour enlever les doublons d'une requête, il y a
SELECT DISTINCT ma_colonne
FROM nom_du_tableau
sinon tu peux faire une requête du genre
SELECT A.*,C.* From A, (SELECT * FROM B WHERE ID=52) as C WHERE A.id=C.id
je vais essayer de te trouver un exemple
0