Explorer plusieurs champs avec un seul script

Eléphanteau du PHP | 11 Messages

15 févr. 2006, 21:34

Bonjour !

Voici un script qui permet à partir d'un fichier Flash d'envoyer un numéro matricule "snum" afin de trouver dans le champ assoc (pour association) de la table "_annuaire" l'identité d'un élève possédant ce matricule.
<?php
$num = $_POST[ "snum" ];
$table = "_annuaire";
include 'key.php' ;
mysql_connect( $host ,$user ,$pass) or die( "cannot connect " .mysql_error () ); 
mysql_select_db( $db ) or die( "cannot select db " .mysql_error () ); 
$result =mysql_query ("SELECT * FROM $table WHERE assoc LIKE '$num' ORDER BY assoc, lastName, firstName, school " ) or die ( "select error " .mysql_error () ); 
if ( mysql_num_rows( $result ) > 0) {
while ($row =mysql_fetch_array ($result ) ) {
$flashstr .= $row ["assoc" ]." : ".$row ["lastName" ]." ".$row ["firstName" ]."  ".$row ["school" ]."-".$row ["promo" ]."<br />";
}
print ("&erreur=Cette liste n'est pas cliquable."."&compte=".mysql_num_rows($result)."&listetotale=".urlencode($flashstr));
}
else
print ("&erreur=Aucun élève répertorié."."&compte="."&listetotale=");
?>
Le problème : un élève peut avoir eu plusieurs matricules dans les écoles successivement fréquentées. Ceux-ci sont stockés dans trois autres champs que nous appellerons un, deux et trois pour simplifier.

Comment modifier le script pour qu'il explore successivement les quatre champs (assoc, un, deux, trois) et ainsi retourner un résultat offrant la certitude que le matricule cherché figure (ou ne figure pas) dans la table en question ?

Merci d'avance pour votre aide !

Eléphanteau du PHP | 27 Messages

15 févr. 2006, 22:21

Ta requete
$result =mysql_query ("SELECT * FROM $table WHERE assoc LIKE '$num' ORDER BY assoc, lastName, firstName, school " )
devient
$result =mysql_query ("SELECT * FROM $table WHERE assoc LIKE '$num' OR un LIKE '$num' OR deux LIKE '$num' OR trois LIKE '$num' ORDER BY assoc, lastName, firstName, school " );
Pour differencier d'ou ca vient tu testes suivant les resultats:
if(!mysql_num_rows( $result ))
        echo "d'ou ki sort cet eleve...";
else
{
        if($row['assoc'])
                echo "l'est dans cette ecole";
        if($row['un'])
                echo "l'est dans celle-ci"; 
        if($row['deux'])
                echo "l'est dans celle-là";
        //etc...
}


Enfin si le numero matricule est numerique, la requete suivante serait plus appropriee:
$result =mysql_query ("SELECT * FROM $table WHERE assoc=$num OR un=$num OR deux=$num OR trois=$num ORDER BY assoc, lastName, firstName, school " );
En esperant t'avoir aide.

Eléphanteau du PHP | 11 Messages

15 févr. 2006, 22:28

Enfin si le numero matricule est numerique, la requete suivante serait plus appropriee:
$result =mysql_query ("SELECT * FROM $table WHERE assoc=$num OR un=$num OR deux=$num OR trois=$num ORDER BY assoc, lastName, firstName, school " );
En esperant t'avoir aide.
Je te remercie pour ton travail.
Ta dernière requête est très intéressante.

Oui. le numéro matricule est numérique sauf dans un ou deux cas où il s'agit de combinaisons de chiffres et de lettres (exemple : 5172P ou SX324T). Mais je vais essayer ta version, ça ne coûte rien et je te tiendrai au courant.

Imagine un peu que je ne savais même pas qu'on pouvait employer OR !!! C'est te dire si je suis nul ! J'ai honte... :-)

Encore merci et à très bientôt.

Eléphanteau du PHP | 11 Messages

15 févr. 2006, 22:46

MER-VEIL-LEUX !!!
Ça fonctionne à la perfection. Clean and Speedy.
J'ai mis $num entre quotes : '$num'

Tu es un chef !
Encore merci.
Bonne soirée si tu es en France
(moi je suis au Québec et il est 15:45)

:-) :-) :-)