Script de comparaison

jantonazzo Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 7 avril 2010 - 11 mai 2006 à 16:42
jantonazzo Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 7 avril 2010 - 12 mai 2006 à 12:50
Bonjour à tous.

J'effectue deux requets dans mon fichier où j'affiche le resultat apres chaque requet.

********************************************************************************
$sql = 'SELECT calendrier.date, documents.typedoc, documents.numdoc, documents.provenance, documents.fichier, documents.commentaire, clients.societe, etat_facture.numdoc, etat_facture.etat, etat_facture.numdoc
FROM calendrier, documents, clients, etat_facture
WHERE etat_facture.numdoc=documents.numdoc
AND calendrier.numdoc=documents.numdoc
AND documents.numcli=clients.numcli
AND societe like "'.trim($list).'"
ORDER BY `Date` DESC';


include('requestTreatment.php');

include('docHeaderTable.php');

while ($num_rows >= $compteur)
{
$file = $row['fichier'];
$file = substr($file, 8, -4);

include('docRows.php');


$compteur = $compteur + 1;
$row = mysql_fetch_array($req);
}


$sql = 'SELECT calendrier.date, documents.typedoc, documents.numdoc, documents.provenance, documents.fichier, documents.commentaire, clients.societe, etat_facture.numdoc, etat_facture.etat, etat_facture.numdoc
FROM calendrier, documents, clients, etat_facture
WHERE etat_facture.numdoc=documents.numdoc
AND calendrier.numdoc=documents.numdoc
AND documents.numcli=clients.numcli
AND commentaire like "%'.trim($list).'%"
ORDER BY `Date` DESC';


include('requestTreatment.php');


while ($num_rows >= $compteur)
{
$file = $row['fichier'];
$file = substr($file, 8, -4);

include('docRows.php');


$compteur = $compteur + 1;
$row = mysql_fetch_array($req);
}
********************************************************************************

Mon probleme est que il est possible qu'un des resultats de la 2eme requete soit identique à un des resultat de la 1ere requete.

Donc j'aimerais faire un script agissant sur la 2eme requete qui
comparait les "numdoc" (id unique de ma table documents)
afin de ne pas les afficher si ils existent dans la 1ere requete.

Si qq'un peut m'aider...

Merci d'avance!!!

9 réponses

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
11 mai 2006 à 17:01
je pense que 2 choix s'offre a toi a savoir:

- soit sauvegarder le resultat de la premiere requete

- soit imbriquer tes requetes.

-------------------------------------------------------------------------------------------------------

Il vaut mieux poser une question et passer pour bête que le rester
toute sa vie
0
jantonazzo Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 7 avril 2010
11 mai 2006 à 17:04
J'ai essayé de faire ça mais ça ne fonctionne qu'a moitié.
Apres la 1er requete:

$numdocReq1 = $row['numdoc'];

Apres la 2eme requete:

if($row['numdoc'] == $numdocReq1)
{


}
if($row['numdoc'] <> $numdocReq1)
{
while ($num_rows >= $compteur)
{
$file = $row['fichier'];
$file = substr($file, 8, -4);

include('docRows.php');

$compteur = $compteur + 1;
$row = mysql_fetch_array($req);
}
}
*******************************************

ça ne marche que sur un seul enregistrement,

Il y a peut etre un probleme de boucle.
0
jantonazzo Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 7 avril 2010
11 mai 2006 à 17:06
Tu pourrais m'aider pour imbriquer mes requetes stp?

Je pense que c'est la solution la plus light en code.
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
11 mai 2006 à 17:14
deja il faudrait que je comprenne pq tes requetes sont si lognues alors
que tu recupere que la valeur d un champ ... ensuite il faudrait
recherche pour un mot clef en SQL pour desinclure les reponses d une
variable a une requete enfin pour les imbriquer il suffit de faire un
squelette comme ca:



while(mysql_num....de la requete 1){

je recupere l id deja present dans une variable

je fais ma requete 2 avec la variable

while(mysql_num....de la requete 1){

j affiche

}

}

-------------------------------------------------------------------------------------------------------

Il vaut mieux poser une question et passer pour bête que le rester
toute sa vie
0

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

Posez votre question
jantonazzo Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 7 avril 2010
11 mai 2006 à 17:57
Elles sont si longues parce que je recupere 7 champs de 4 tables differentes.

le champs commun sur 3 tables est (numdoc)

Il est clé primaire sur un table et clée etrangere sur les 2 autres

Donc c'est sur celui là que je voudrais effectué le traitement.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 mai 2006 à 10:26
Hello,

j'ai pas tout suivi, un peu crevé, mais : tu ne peux pas faire 1 seule requête? Il me semble que seule un truc de ta clause where est différent. Donc, un OR sur ces 2 clauses OR (... AND ...) devrait te sortir tes résultats, sans doublon.


Sinon, il te suffit de mettre ton documents.numdoc dans un tableau (dans ta boucle : $iId[] = $row['numdoc_alias'] è- je mets alias parce que ta requête renvoie plusieurs champs numdoc, donc vaut mieux créer un alias si tu veux éviter une ambiguité).


Puis dans ta 2ème requête, tu ajoutes dans ta clause where un :


AND documents.numdoc NOT IN ('.implode (',', $iId).')

Vlà.
0
jantonazzo Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 7 avril 2010
12 mai 2006 à 12:03
Bonjour 58031 malalam,

J'ai commencé par là mais la requete ne part pas quand je met OR.

$sql = 'SELECT calendrier.date, documents.typedoc, documents.numdoc, documents.provenance, documents.fichier, documents.commentaire, clients.societe, etat_facture.numdoc, etat_facture.etat, etat_facture.numdoc
FROM calendrier, documents, clients, etat_facture
WHERE etat_facture.numdoc=documents.numdoc
AND calendrier.numdoc=documents.numdoc
AND documents.numcli=clients.numcli
AND societe like "'.trim($list).'"
OR commentaire like "%'.trim($list).'%"
ORDER BY `Date` DESC';

Si tu as une idée...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
12 mai 2006 à 12:46
AND (societe like "'.trim($list).'"
OR commentaire like "%'.trim($list).'%")

manque quand même les préfixes pour ces 2 champs.
0
jantonazzo Messages postés 46 Date d'inscription lundi 24 janvier 2005 Statut Membre Dernière intervention 7 avril 2010
12 mai 2006 à 12:50
Merci à tous,

Merci Maladam!
0
Rejoignez-nous