Page 1 sur 1

tri avec 2 criteres

Posté : 26 mars 2010, 14:55
par aurel22
bonjour,

j ai une table carte avec les champs suivant:
id,champ1, champ2, champ3 etc jusqu a 20.
je voudrais recuperer les ligne de table ou il y a 2 chiffres selectionnner au depart.
par exemple retrouver uniquement les ligne ou il y a le chiffre 1 & le chiffre 14.

& me retourner le resultat du nombre de ligne ou cette combinaison apparait.

j ai fais ce script mais ile me donne aussi les lignes ou un des deux chiffres apparait, & moi c est uniquement les lignes ou les deux chiffres sont present que je veux.


<?php $select = ("SELECT * FROM carte ");
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

$fois_ensemble=0;
?>
<?php if($total) {

while($row = mysql_fetch_array($result)) {
if( in_array($chiffre_1,$row) && in_array($chiffre14,$row) )
{$fois_ensemble++;
}
}
?>
</p>
<p align="center"> le <span class="Style3"><?php echo $chiffre_1; ?></span> est sortit <span class="Style2"><?php echo $fois_ensemble;

}
else echo 'Pas d\'enregistrements dans cette table...';


mysql_free_result($result);

?>

Re: tri avec 2 criteres

Posté : 26 mars 2010, 16:36
par macgawel
Bonjour.

1. Merci d'utiliser les balises qui vont bien pour afficher le code - ici la balise
 (accessible via le bouton PHP).
Ce sera plus lisible :wink: 

2. Pour ton problème, je dirais que la réponse dépend de pas mal de facteurs...
- Tu peux modifier la table ?
- La table compte combien d'enregistrements (un ordre de grandeur suffit) ?
- Quelle est la fréquence de mise à jour de la table ?
- A quelle fréquence vas-tu passer ce script ?
- Les nombres que tu mets dans tes 20 champs, ils peuvent aller de combien à combien ?

Sinon, sur ton script :
[php]while($row = mysql_fetch_array($result)) {
   if( in_array($chiffre_1,$row) && in_array($chiffre14,$row) ) {
      $fois_ensemble++;
   }
}
1. Tu devrais initialiser la valeur de $fois_ensemble avant.
2. A priori la condition est bonne. Donc...
- fait un var_dump($row) au début de ton WHILE, histoire de vérifier
- rajoute un echo "les deux" après l'incrémentation de $fois_ensemble
- essaye en "divisant" le IF en deux :
while($row = mysql_fetch_array($result)) {
	var_dump($row);
	if (in_array ($chiffre_1,$row) ) {
		echo "$chiffre_1 trouvé !<br />";
		if (in_array ($chiffre14,$row) ) {
			echo "$chiffre14 trouvé !<br />";
			$fois_ensemble++;
		}
	}
}