Comparer 2 tableaux [Résolu]

cs_fmf 27 Messages postés mardi 17 janvier 2006Date d'inscription 27 février 2006 Dernière intervention - 1 févr. 2006 à 11:55 - Dernière réponse : cs_fmf 27 Messages postés mardi 17 janvier 2006Date d'inscription 27 février 2006 Dernière intervention
- 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
cs_fmf 27 Messages postés mardi 17 janvier 2006Date d'inscription 27 février 2006 Dernière intervention - 1 févr. 2006 à 15:00
3
Merci
Ayé reussi, avec 1 seul tableau et quelques boucles le tour est joué

Merci cs_fmf 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_fmf
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 1 févr. 2006 à 12:07
Commenter la réponse de malalam
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 1 févr. 2006 à 12:10
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
sidf 1218 Messages postés mardi 20 décembre 2005Date d'inscription 18 octobre 2012 Dernière intervention - 1 févr. 2006 à 12:10
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
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 1 févr. 2006 à 12:11
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
sidf 1218 Messages postés mardi 20 décembre 2005Date d'inscription 18 octobre 2012 Dernière intervention - 1 févr. 2006 à 12:11
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
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 1 févr. 2006 à 12:16
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
FhX 2368 Messages postés mercredi 13 octobre 2004Date d'inscription 18 avril 2015 Dernière intervention - 1 févr. 2006 à 13:10
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
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 1 févr. 2006 à 13:31
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
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 1 févr. 2006 à 13:37
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
cs_fmf 27 Messages postés mardi 17 janvier 2006Date d'inscription 27 février 2006 Dernière intervention - 1 févr. 2006 à 14:05
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
cs_fmf 27 Messages postés mardi 17 janvier 2006Date d'inscription 27 février 2006 Dernière intervention - 1 févr. 2006 à 14:13
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
yergo 137 Messages postés vendredi 30 décembre 2005Date d'inscription 18 avril 2006 Dernière intervention - 1 févr. 2006 à 15:18
0
Merci
salut,
et si tu nous montrais comment t'as fait ?
Commenter la réponse de yergo
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 1 févr. 2006 à 15:33
0
Merci
1 tableau et des boucles? Aie...
Commenter la réponse de malalam
cs_fmf 27 Messages postés mardi 17 janvier 2006Date d'inscription 27 février 2006 Dernière intervention - 1 févr. 2006 à 15:42
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
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 1 févr. 2006 à 18: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
FhX 2368 Messages postés mercredi 13 octobre 2004Date d'inscription 18 avril 2015 Dernière intervention - 1 févr. 2006 à 20:11
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
CyrVB 26 Messages postés mercredi 8 janvier 2003Date d'inscription 21 mars 2006 Dernière intervention - 2 févr. 2006 à 06:00
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
cs_fmf 27 Messages postés mardi 17 janvier 2006Date d'inscription 27 février 2006 Dernière intervention - 2 févr. 2006 à 14:48
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.