Comparer 2 tableaux

Résolu
cs_fmf Messages postés 27 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 27 février 2006 - 1 févr. 2006 à 11:55
cs_fmf Messages postés 27 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 27 février 2006 - 2 févr. 2006 à 14:48
voila en fait j ai 2 tableaux $tab1[] et $ tab2[]
a partir de requetes vers une base mysql j insere les donnees dans chacun des tableaux
tableau 1:
$i=0;
while($champ1=mysql_fetch_row($resultat1)){
$tab1[$i]=$champ1;
$i++;
}
tableau 2 :
$j=0;
while($champ2=mysql_fetch_row($resultat2)){
$tab2[$j]=$champ2;
$j++;
}
Jusque la tout va bien, un echo peut me le confirmer en affichant toutes les donnees des 2 tableaux
Ce que je voudrais c est afficher le tableau 1, et seulement les donnees du tableau 2 qui ne se trouvent pas dans le tableau 1
si quelqu un a la solution
merci

19 réponses

cs_fmf Messages postés 27 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 27 février 2006
1 févr. 2006 à 15:00
Ayé reussi, avec 1 seul tableau et quelques boucles le tour est joué
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 févr. 2006 à 12:07
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
1 févr. 2006 à 12:10
Salut,

tu peux déjà enlever les trucs inutiles :

while($champ1=mysql_fetch_row($resultat1)){
$tab1[]=$champ1;
}
tableau 2 :
while($champ2=mysql_fetch_row($resultat2)){
$tab2[]=$champ2;
}
ça fonctionnera aussi ;-)

Sinon pour comparer : http://fr.php.net/manual/fr/function.array-diff.php

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
1 févr. 2006 à 12:10
$nbtab1=mysql_num_rows($resultat1);
...
$j=0;
while($champ2=mysql_fetch_row($resultat2))
{
$trouve=0;
for($k=0;$k<$nbtab1;$k++)
{
if($champ2==$tab1[$k]) $trouve=1;
}
if($trouve==0)
{
$tab2[$j]=$champ2;
}
$j++;
}
bon il faut tester !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
1 févr. 2006 à 12:11
Malalam a été plus rapide ^^

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
1 févr. 2006 à 12:11
ERREUR/auteurdetail.aspx?ID=649802 $nbtab1=mysql_num_rows($resultat1);
...
$j=0;
while($champ2=mysql_fetch_row($resultat2))
{
$trouve=0;
for($k=0;$k<$nbtab1;$k++)
{
if($champ2==$tab1[$k]) $trouve=1;
}
if($trouve==0)
{
$tab2[$j]=$champ2;
$j++;
}
}
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
1 févr. 2006 à 12:16
Laisse tomber de toute façon ^^

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
1 févr. 2006 à 13:10
"while($champ1=mysql_fetch_row($resultat1)){
$tab1[]=$champ1;
}
tableau 2 :
while($champ2=mysql_fetch_row($resultat2)){
$tab2[]=$champ2;
}"

Y'a peut être moyen de détourner ca via mysql en premier non !
Les requètes SQL ne sont pas que la pour faire du SELECT * ou du SELECT COUNT() !

Je suis sur que y'a moyen d'éviter que tu te fasses chier à faire du traitement PHP.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
1 févr. 2006 à 13:31
Effectivement, dans ce cas il nous faudrait la structure des tables et aussi ce qu'il sélectionne avec ses requêtes :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 févr. 2006 à 13:37
Là je suis d'accord, je suis aussi certain que cette différence est faisable en sql.
0
cs_fmf Messages postés 27 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 27 février 2006
1 févr. 2006 à 14:05
Peut etre avec un 3°tableau
pour chaque ligne de tableau 1 on regarde si la valeur existe dans tableau 3, si elle n existe pas on l insere
puis de meme avec tableau 2
0
cs_fmf Messages postés 27 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 27 février 2006
1 févr. 2006 à 14:13
nan en fait c est con ce que je dit et d ailleurs ca suffirait avec deux tableaux
c est le coup de barre d apres manger ca
0
yergo Messages postés 135 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 18 avril 2006
1 févr. 2006 à 15:18
salut,
et si tu nous montrais comment t'as fait ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 févr. 2006 à 15:33
1 tableau et des boucles? Aie...
0
cs_fmf Messages postés 27 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 27 février 2006
1 févr. 2006 à 15:42
while(list($champ2)=mysql_fetch_row($resultat2))
{
$x=1;
for ($i = 0; $i < mysql_num_rows($resultat1); $i++){
if($tab1[$i]==$champ2)
{
$x=0;
}
}
if ($x!=0){
$nbcolumn++;
$tab1[$i+$nbcolumn]=$champ2;
}
}

$nboccurence = mysql_num_rows($resultat1)+$nbcolumn;
for ($i = 0; $i <= $nboccurence; $i++){
if ($tab1[$i]!=''){
echo $tab1[$i]."
";
}
}
}

bon je sais ca pue la bidouille, mais bon ca marche
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 9
1 févr. 2006 à 18:12
Quelle horreur

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
1 févr. 2006 à 20:11
C'est pire que ce que je pensais !!

STOP LA BIDOUILLE !!!! REGARDE TON CODE SQL POUR FAIRE CE QUE TU VEUX FAIRE !!

Rahhhhh !!!!
0
CyrVB Messages postés 26 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 21 mars 2006
2 févr. 2006 à 06:00
prenons 2 table SQL avec un champ nom



la table t1 contient a/b/c/d


la table t2 contient e/f/a


select * from t1 => affiche tout le contenu de t1

select * from t2 => affiche tout le contenu de t2



select nom from t2 where t2.nom not in (select nom from t1) => affiche uniquement les entrees de t2 qui ne sont pas dans t1

Donc ca retourne e/f seulement



select nom from t2 where t2.nom not in (select nom from t1) => affiche uniquement les entrees de t1 qui ne sont pas dans t2


Donc ca retourne b/c/d seulement



Autant faire le boulot pas SQL, y a peut etre encore plus rapide avec un left outer join




Cyril
0
cs_fmf Messages postés 27 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 27 février 2006
2 févr. 2006 à 14:48
le probleme c est que je choisi 2 champs de chacune des 2 tables dans ma requete, ca concerne les noms de domaines en fait
champ 1 = nom >>>exemple "google"
champ 2 = extension >>>>exemple ".com"
puis je les colle dans chaque ligne de tableau
$tab1[$i]=$nom . $extension;
j avais deja essaye par mysql avec des requetes imbriqué
0