Mysql_fetch_array

Fermé
Mickael86480 - 31 mai 2010 à 14:11
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 31 mai 2010 à 14:33
Bonjour, j'ai toujours cette erreur et je ne sais pas comment la résoudre:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

voici mon code:

if(isset($_POST['rec']) ) {
$Nomcommerce = $_POST['nom'];

$Requeteaffichage = "SELECT *
FROM t1
WHERE nom_com = '".$Nomcommerce."'";
$Recherchercommerce = (mysql_query($Requeteaffichage) or die(mysql_error()));
if ($Recherchercommerce >= 1){

while ($Donnees = mysql_fetch_array($Recherchercommerce)){
if ($Donnees['nom_com'] == $Nomcommerce) {

$Requeteafficher = "SELECT nom_com, adresse, activite, tel, mail, site, horaire
FROM t1
WHERE nom_com = '".$Nomcommerce."'";

$Commercetrouve = (mysql_query($Requeteafficher) or die(mysql_error()));

while ($data = mysql_fetch_array($Commercetrouve)){

echo ("<img id=fl src=img/commerces/".$data['id'].".jpg border=0 >");
echo ("Nom du commerce : <br>" . $data['nom_com']);
echo ("Adresse : <br>" . $data['adresse']);
echo ("Activité : <br>" . $data['activite']);
echo ("Téléphone : <br>" . $data['tel']);
echo ("Email : <br>" . $data['mail']);
echo ("Site internet : <br><br>" . $data['site']);
echo ("Horaire : <br> " . $data['horaire']);
}
}
else if($Donnees['nom_com'] != $Nomcommerce)

echo("Le commerce choisit n'est pas dans la base de données");
}
}
else echo("Le commerce demandé ne fait pas parti de la base de données");

}

merci d'avance

1 réponse

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
31 mai 2010 à 14:33
Bonjour,

On va pouvoir clarifier les choses en simplifiant ton code, qui me parait assez redondant sur quelques points.

Essaie de le remplacer par le code qui suit :
if(isset($_POST['rec']))
{
  $Nomcommerce = $_POST['nom'];

  $Requeteaffichage = "SELECT nom_com, adresse, activite, tel, mail, site, horaire 
    FROM t1 WHERE nom_com = '$Nomcommerce'";

  $Recherchercommerce = mysql_query($Requeteaffichage) or die(mysql_error());

  if (mysql_num_rows($Recherchercommerce) >= 1)
  {
    while ($Donnees = mysql_fetch_array($Recherchercommerce))
    {
      echo ("<img id=fl src=img/commerces/".$Donnees['id'].".jpg border=0 >");
      echo ("Nom du commerce : <br>" . $Donnees['nom_com']);
      echo ("Adresse : <br>" . $Donnees['adresse']);
      echo ("Activité : <br>" . $Donnees['activite']);
      echo ("Téléphone : <br>" . $Donnees['tel']);
      echo ("Email : <br>" . $Donnees['mail']);
      echo ("Site internet : <br><br>" . $Donnees['site']);
      echo ("Horaire : <br> " . $Donnees['horaire']);
    }
  }
  else echo("Le commerce demandé ne fait pas parti de la base de données");
} 


Ton problème venait de ton test « if ($Recherchercommerce >= 1) », car cette variable ne contient pas le nombre de ligne trouvées...
Ensuite, tu fais deux fois les mêmes requêtes, dont l'une au sein d'une boucle while, ce qui te donnerait un grand nombre de fois les mêmes résultats. Une seule requête suffit.

Un dernier point que je n'ai pas corrigé dans ton code, c'est dans l'affichage des résultat, il manque des <br> ou des <p> pour que ce soit propre... Mais tu le verras très vite.

Xavier
1