Comparer 2 tableaux [Résolu]

Messages postés
27
Date d'inscription
mardi 17 janvier 2006
Dernière intervention
27 février 2006
- - Dernière réponse : cs_fmf
Messages postés
27
Date d'inscription
mardi 17 janvier 2006
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
Afficher la suite 

Votre réponse

19 réponses

Meilleure réponse
Messages postés
27
Date d'inscription
mardi 17 janvier 2006
Dernière intervention
27 février 2006
3
Merci
Ayé reussi, avec 1 seul tableau et quelques boucles le tour est joué

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_fmf
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
31
Commenter la réponse de malalam
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
12
0
Merci
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>
Commenter la réponse de cs_Anthomicro
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
4
0
Merci
$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 !
Commenter la réponse de sidf
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
12
0
Merci
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>
Commenter la réponse de cs_Anthomicro
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
4
0
Merci
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++;
}
}
Commenter la réponse de sidf
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
12
0
Merci
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>
Commenter la réponse de cs_Anthomicro
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Dernière intervention
18 avril 2015
3
0
Merci
"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.
Commenter la réponse de FhX
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
12
0
Merci
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>
Commenter la réponse de cs_Anthomicro
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
31
0
Merci
Là je suis d'accord, je suis aussi certain que cette différence est faisable en sql.
Commenter la réponse de malalam
Messages postés
27
Date d'inscription
mardi 17 janvier 2006
Dernière intervention
27 février 2006
0
Merci
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
Commenter la réponse de cs_fmf
Messages postés
27
Date d'inscription
mardi 17 janvier 2006
Dernière intervention
27 février 2006
0
Merci
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
Commenter la réponse de cs_fmf
Messages postés
137
Date d'inscription
vendredi 30 décembre 2005
Dernière intervention
18 avril 2006
0
Merci
salut,
et si tu nous montrais comment t'as fait ?
Commenter la réponse de yergo
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Dernière intervention
2 mars 2010
31
0
Merci
1 tableau et des boucles? Aie...
Commenter la réponse de malalam
Messages postés
27
Date d'inscription
mardi 17 janvier 2006
Dernière intervention
27 février 2006
0
Merci
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
Commenter la réponse de cs_fmf
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Dernière intervention
13 avril 2007
12
0
Merci
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>
Commenter la réponse de cs_Anthomicro
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Dernière intervention
18 avril 2015
3
0
Merci
C'est pire que ce que je pensais !!

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

Rahhhhh !!!!
Commenter la réponse de FhX
Messages postés
26
Date d'inscription
mercredi 8 janvier 2003
Dernière intervention
21 mars 2006
0
Merci
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
Commenter la réponse de CyrVB
Messages postés
27
Date d'inscription
mardi 17 janvier 2006
Dernière intervention
27 février 2006
0
Merci
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é
Commenter la réponse de cs_fmf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.