Bonjour,
...
$req1 = mysql_query ($sql1) or die (mysql_error());
// s'il y a des résultats
$i = 1;
while ($result = mysql_fetch_array($req1)){
echo " résultat trouvé ".$result["ID"]." ";
echo "<br/>";
$i++;
}
}
}
Ce code permet d'afficher une liste de résultats ... il fonctionne ...
Je souhaite ensuite faire une vérification pour chacun de ces résultats
...
$req1 = mysql_query ($sql1) or die (mysql_error());
// s'il y a des résultats
$i = 1;
while ($result = mysql_fetch_array($req1)){
echo " résultat trouvé ".$result["ID"]." ";
$sql6 = mysql_query ("SELECT * from alerte WHERE Numero_Alerte = ".$Dans_Alerte["Numero_Alerte"]." AND ID_de__anonce_deja_envoye = ".$result["ID"]);
$req6 = mysql_query($sql6) or die(mysql_error());
$data6 = mysql_fetch_assoc($req6);
if (isset($data6["Numero_Alerte"])){ echo $result["ID"]." déjà proposé pour ".$data["Numero_Alerte"]." ";}
if (!isset($data6["Numero_Alerte"])){ echo $result["ID"]." peut être proposé pour ".$data["Numero_Alerte"]." ";}
mysql_close($sql6);
echo "<br/>";
$i++;
}
}
}
C'est à dire que pour chaque résultat, je dois faire un SELECT pour faire une vérification... sauf quand le code suit la boucle et qu'il arrive la première fois sur le SELECT, il s'arrête là, et le reste de la boucle n'est pas affiché ni même d'ailleur le reste de la page...
Auriez vous une idée ?
Merci par avance pour votre aide
Bonjour,
Pourquoi ne pas faire une jointure directement sur la premiere requete ?
Du coup tu me fais douter... j'ai la possiblité de stocker les données dans une autre table...
Je me dit que ça bloque peut être justement le Select qui effectue la dernière vérification interoge la même table que la boucle de résultat ????
qu'en pensez vous ?
voici le code entier :
echo "Liste des résultats possibles :<br/>";
$req2 = mysql_query ("SELECT * from alerte WHERE ID_de__anonce_deja_envoye = '' ");
while ($Dans_Alerte = mysql_fetch_array($req2)) {
if (!empty ($Dans_Alerte["alerte_mail"])){
$sql1 = "SELECT * FROM gtable WHERE valide = 1 AND titre LIKE '%".$Dans_Alerte['R']."%' ";
//Si Cat est spécifié
if ($Dans_Alerte["categorie"] != 'cat'){
$sql1.= " AND categorie = '".$Dans_Alerte['categorie']."'";
}
//Si MRC est vide
if ($Dans_Alerte["MRC"] == ''){
if ($Dans_Alerte["Code_grande_region"] == 1){
$sql1.= " AND (mrc = '1' OR mrc = '2' OR mrc = '43' OR mrc = '95' OR mrc = '100') ";
}
if ($Dans_Alerte["Code_grande_region"] == 2){
$sql1.= "AND (mrc = '46' OR mrc = '48' OR mrc = '49' OR mrc = '74' OR mrc = '96') ";
}
if ($Dans_Alerte["Code_grande_region"] == 3){
$sql1.= "AND (mrc = '15' OR mrc = '16' OR mrc = '29' OR mrc = '31' OR mrc = '36' OR mrc = '88' OR mrc = '89') ";
}
if ($Dans_Alerte["Code_grande_region"] == 4){
$sql1.= "AND (mrc = '42' OR mrc = '59' OR mrc = '75' OR mrc = '77' OR mrc = '98' OR mrc = '103') ";
}
if ($Dans_Alerte["Code_grande_region"] == 5){
$sql1.= "AND (mrc = '17' OR mrc = '51' OR mrc = '53' OR mrc = '56' OR mrc = '68' OR mrc = '78' OR mrc = '99') ";
}
if ($Dans_Alerte["Code_grande_region"] == 6){
$sql1.= "AND mrc = '83' ";
}
if ($Dans_Alerte["Code_grande_region"] == 7){
$sql1.= "AND (mrc = '22' OR mrc = '44' OR mrc = '60' OR mrc = '85' OR mrc = '87') ";
}
if ($Dans_Alerte["Code_grande_region"] == 8){
$sql1.= "AND (mrc = '1' OR mrc = '2' OR mrc = '43' OR mrc = '95' OR mrc = '100') ";
}
if ($Dans_Alerte["Code_grande_region"] == 9){
$sql1.= "AND (mrc = '14' OR mrc = '33' OR mrc = '50' OR mrc = '72' OR mrc = '79' OR mrc = '97') ";
}
if ($Dans_Alerte["Code_grande_region"] == 10){
$sql1.= "AND (mrc = '21' OR mrc = '23' OR mrc = '26') ";
}
if ($Dans_Alerte["Code_grande_region"] == 11){
$sql1.= "AND (mrc = '7' OR mrc = '12' OR mrc = '32' OR mrc = '34' OR mrc = '55' OR mrc = '62') ";
}
if ($Dans_Alerte["Code_grande_region"] == 12){
$sql1.= "AND (mrc = '8' OR mrc = '11' OR mrc = '30' OR mrc = '40' OR mrc = '57' OR mrc = '61' OR mrc = '69' OR mrc = '71' OR mrc = '82' OR mrc = '92') ";
}
if ($Dans_Alerte["Code_grande_region"] == 13){
$sql1.= "AND mrc = '47' ";
}
if ($Dans_Alerte["Code_grande_region"] == 14){
$sql1.= "AND (mrc = '18' OR mrc = '24' OR mrc = '27' OR mrc = '66' OR mrc = '76' OR mrc = '81') ";
}
if ($Dans_Alerte["Code_grande_region"] == 15){
$sql1.= "AND (mrc = '4' OR mrc = '5' OR mrc = '19' OR mrc = '41' OR mrc = '64' OR mrc = '67' OR mrc = '80' OR mrc = '102') ";
}
if ($Dans_Alerte["Code_grande_region"] == 16){
$sql1.= "AND (mrc = '3' OR mrc = '9' OR mrc = '13' OR mrc = '35' OR mrc = '45' OR mrc = '52' OR mrc = '54' OR mrc = '63' OR mrc = '65' OR mrc = '70' OR mrc = '73' OR mrc = '86' OR mrc = '93' OR mrc = '94' OR mrc = '104') ";
}
if ($Dans_Alerte["Code_grande_region"] == 17){
$sql1.= "AND (mrc = '6' OR mrc = '10' OR mrc = '20' OR mrc = '28' OR mrc = '84') ";
}
}
//Si MRC n'est pas vide
if ($Dans_Alerte["MRC"] != ''){
$sql1.= " AND mrc = '".$Dans_Alerte['MRC']."'";
}
//Si MUN est spécifié
if ($Dans_Alerte["MUN"] != ''){
$sql1.= " AND municipalite = '".$Dans_Alerte['MUN']."'";
}
if ($Dans_Alerte["alerte_v"] == 'on'){
$v= 'v';
}
if ($Dans_Alerte["alerte_l"] == 'on'){
$l = 'l';
}
if ($Dans_Alerte["alerte_p"] == 'on'){
$p = 'p';
}
echo "<b>".$Dans_Alerte["Numero_Alerte"]." </b>";
echo $sql1;
$req1 = mysql_query ($sql1) or die (mysql_error());
// s'il y a des résultats
$i = 1;
while ($result = mysql_fetch_array($req1)){
echo " résultat trouvé ".$result["ID"]." ";
$sql6 = mysql_query ("SELECT * from alerte WHERE Numero_Alerte = ".$Dans_Alerte["Numero_Alerte"]." AND ID_de__anonce_deja_envoye = ".$result["ID"]);
$req6 = mysql_query($sql6) or die(mysql_error());
$data6 = mysql_fetch_assoc($req6);
if (isset($data6["Numero_Alerte"])){ echo $result["ID"]." déjà proposé pour ".$data["Numero_Alerte"]." ";}
if (!isset($data6["Numero_Alerte"])){ echo $result["ID"]." peut être proposé pour ".$data["Numero_Alerte"]." ";}
mysql_close($sql6);
echo "<br/>";
$i++;
}
}
}
En fait dès que je met une requete dans la boucle while, la lecture du code s'arrête là... si je met un echo ça fonctionne ... je vois pas ce qui cloche...
Oui car vous faite une requête avec le résultat d'une autre.
La seconde ligne est erronée.
$sql6 = mysql_query ("SELECT * from alerte WHERE Numero_Alerte = ".$Dans_Alerte["Numero_Alerte"]." AND ID_de__anonce_deja_envoye = ".$result["ID"]);
$req6 = mysql_query($sql6) or die(mysql_error());
Juste après vous pourriez simplifier le if(!isset... et if(isset... par un if(!isset... else...
Oui ce n'est pas la bonne méthode, en fait, il faut separer les données sur deux tables puis faire une jointure...
Merci de m'avoir aidé