Mysql_fetch_array(): et foreach()

Yo !! Messages postés 54 Statut Membre -  
 toto -
Bonjour,
J'ai un petit souci avec mon site internet j'ai deux message d'erreur et ca le fait pas trop car je trouve pas la solution pour résoudre mon probleme.

Voici le script :

$db=new DataBase;
//connexion à la base de donnée
$id_connex=$db->ConnexionDataBase($db);
$id_result=$db->LireTable($id_connex,$sql);

$tabmoto=mysql_fetch_array($id_result,MYSQL_ASSOC);

$html="<table bgcolor='#EDEDED' align='center' width='800px'><tr><td><ul>\n";
$i=0;
foreach($tabmoto as $t)
{
$html.="<li><font color='black' size='3' font-family='Georgia'><strong> - ".mysql_field_name($id_result, $i++)."</strong></font> : <font color='#981117' size='3'><strong>$t</strong></font></li>\n";
}
//lit dans le rep. la photo vignette
$replecture=lecture_rep($rep."/".$reppetit."/");
if($replecture!=-1)
{
//insert les photos à l'écran
foreach($replecture as $t)
{
if(is_file($rep."/".$reppetit."/".$t))
echo("<img src='".$rep."/".$reppetit."/$t'>\n");
}
}
function lecture_rep($rep)
{
if(is_dir($rep))
{
$dir = opendir($rep);
$i=0;
while ($f = readdir($dir))
{
$photo[$i]=$f;
$i++;
}
return $photo;
}
return -1;
}
$html.="</ul></td></tr></table>\n";
echo($html);
mysql_close();
?>

Et j'ai ceci en message d'erreur :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/motorev2/public_html/vendre/formmoto_etape3.php on line 237

Warning: Invalid argument supplied for foreach() in /home/motorev2/public_html/vendre/formmoto_etape3.php on line 241


Merci pour votre aide

--
Moto2Reve.com : Site internet de petites annonces moto 
Configuration: Windows Vista
Internet Explorer 7.0

19 réponses

  1. Apaachee Messages postés 261 Statut Membre 47
     
    Pour ta première erreur, cela arrive quand tu as 2 connexion actives sur ta BD SQL. Par exemple, Avant d'appeler uen fonction qui elle-même se connectera a ta BD, il faut que tu ai fermé toutes la connexion déja présente à ta BD.
    0
  2. Yo !! Messages postés 54 Statut Membre
     
    Donc je dois faire quoi?
    0
  3. Apaachee Messages postés 261 Statut Membre 47
     
    Ca simplifierait pas mal si tu mettais ton code entre balises

    LireTable($id_connex,$sql);


    Dans ta fonction LireTable, tu ne cherches pas a te reconnecter a ta BD ?
    0
  4. Yo !! Messages postés 54 Statut Membre
     
    $db=new DataBase; 
    //connexion à la base de donnée 
    $id_connex=$db->ConnexionDataBase($db); 
    $id_result=$db->LireTable($id_connex,$sql); 
    
    $tabmoto=mysql_fetch_array($id_result,MYSQL_ASSOC); 
    
    $html="<table bgcolor='#EDEDED' align='center' width='800px'><tr><td><ul>\n"; 
    $i=0; 
    foreach($tabmoto as $t) 
    { 
    $html.="<li><font color='black' size='3' font-family='Georgia'><strong> - ".mysql_field_name($id_result, $i++)."</strong></font> : <font color='#981117' size='3'><strong>$t</strong></font></li>\n"; 
    } 
    //lit dans le rep. la photo vignette 
    $replecture=lecture_rep($rep."/".$reppetit."/"); 
    if($replecture!=-1) 
    { 
    //insert les photos à l'écran 
    foreach($replecture as $t) 
    { 
    if(is_file($rep."/".$reppetit."/".$t)) 
    echo("<img src='".$rep."/".$reppetit."/$t'>\n"); 
    } 
    } 
    function lecture_rep($rep) 
    { 
    if(is_dir($rep)) 
    { 
    $dir = opendir($rep); 
    $i=0; 
    while ($f = readdir($dir)) 
    { 
    $photo[$i]=$f; 
    $i++; 
    } 
    return $photo; 
    } 
    return -1; 
    } 
    $html.="</ul></td></tr></table>\n"; 
    echo($html); 
    mysql_close(); 
    ?> 
    

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

    Posez votre question
  6. Yo !! Messages postés 54 Statut Membre
     
    Alors personne pour m'aider??
    0
  7. toto
     
    Bonjour

    Pas facile car on ne sait pas ce que c'est que ta classe DataBase. Le sais-tu, toi ?
    $id_connex=$db->ConnexionDataBase($db);

    Je trouve bizarre cette méthode qui prend l'objet lui-même comme paramètre, mais comme on ne connaît pas la classe tout est possible.
    $id_result=$db->LireTable($id_connex,$sql);

    Elle sort d'où la requête $sql ?
    0
  8. Yo !! Messages postés 54 Statut Membre
     
    Voila ma requete : qui vien juste avant le script que j'ai mis

    $sql="SELECT `annonce`.`titre` as `Titre de votre annonce`, 
    `annonce`.`Constructeur` as `Marque`, 
    `annonce`.`Modele` as `Modèle`,
    `annonce`.`Modele2` as `Autre Modèle`, 
    `annonce`.`Type` as Type, 
    `annonce`.`Km` as Kilométres, 
    `annonce`.`Année`, 
    `annonce`.`1ere immat` as `1ére Immatriculation`, 
    `annonce`.`Carnet` as `Carnet d'entretien`,  
    `annonce`.`garantie`,
    `annonce`.`Options`, 
    `annonce`.`Etat`, 
    `annonce`.`Nb de proprietaire` as `1ère main`,
    `annonce`.`Cylindrée`, 
    `annonce`.`Puissance`, 
    `annonce`.`Couleur`, 
    `annonce`.`tuning` as `Personnalisation / Tuning`, 
    `annonce`.`Prix`, 
    `annonce`.`texte` as `Commentaire`
    FROM `annonce`
    WHERE `annonce`.Id_annonce=".$Id_annonce.";";


    et voila pour la connexion :

    class DataBase
    /* Site web root localhost */
    {
    	var $database="Site_web";
    	var $connexion;
    	var $utilisateur="root";
    	var $pass="";
    	var $serveur="localhost";
    
    	//connexion à une base de donnée
    	function ConnexionDataBase($c)
    	{
    		//objetd de connexion
    		$c->connexion = mysql_connect($c->serveur,$c->utilisateur,$c->pass);
    		mysql_select_db($c->database,$c->connexion);
    		return $c->connexion;
    	}
    	
    	
    	function affiche($m)
    	{
    		//$database="moi";
    		echo $m->database."<br>";
    		echo $m->utilisateur."<br>";
    		echo $m->pass."<br>";
    		echo $m->serveur."<br>";
    	}
    	
    	function LireTable($idcon,$sql)
    	{
    		$rs=mysql_query($sql, $idcon);
    		return $rs;
    	}
    
    }

    0
  9. toto
     
    Fais les modifications suivantes :

    dans ConnexionDataBase :
    $c->connexion = mysql_connect($c->serveur,$c->utilisateur,$c->pass) or die (mysql_error());
    dans ta fonction LireTable
    $rs=mysql_query($sql, $idcon) or die(mysql_error());
    ça ne va pas résoudre le problème mais ça va donner des informations sur la cause
    0
  10. Yo !! Messages postés 54 Statut Membre
     
    Voici l'erreur : Unknown column '$Id_annonce' in 'field list'
    0
  11. Yo !! Messages postés 54 Statut Membre
     
    Voici le message d'erreur mais qui vien de la page d'avant en faite

    Unknown column '$Id_annonce' in 'field list'

    Donc voila mon script de la page d'avant :

    $Id_annonce=$_POST["Id_annonce"];
    $rep="../temporaire/".session_id();
    $repnormal="normal";
    
    
    $db=new DataBase;
    //connexion à la base de donnée
    $id_connex=$db->ConnexionDataBase($db);
    
    function lecture_rep($rep)
    	{
    		if(is_dir($rep))
    		{
    			$dir = opendir($rep);
    			$i=0;
    			while ($f = readdir($dir)) 
    			{
    				$photo[$i]=$f;	
    				$i++;
    			}
    			return $photo;
    		}
    			return -1;
    	}
    
    //lit dans le rep. la photo vignette
    	$replecture=lecture_rep($rep."/".$repnormal."/");
    	if($replecture!=-1)
    	{
    		//insert les photos à l'écran
    		foreach($replecture as $t)
    		{
    			if(is_file($rep."/".$repnormal."/".$t))
    			{
    				$handle = fopen ($rep."/".$repnormal."/".$t, "rb");
    				$contents = fread ($handle, filesize ($rep."/".$repnormal."/".$t));
    				fclose ($handle);
    				if(filetype($rep."/".$repnormal."/".$t)=='file')
    				{
    					$requete="insert into `photo`(photo,nom_photo,type_photo,taille_photo,Id_annonce)VALUES
    						('".addslashes($contents)."','$t','image/pjpeg','".filesize ($rep."/".$repnormal."/".$t)."',$Id_annonce);";
    					$db->LireTable($id_connex,$requete);
    				}
    			}
    		
    		}
    	}
    	else 
    			$db->LireTable($id_connex,"insert into `photo`(Id_annonce,nom_photo,type_photo,taille_photo,photo)
    										select $Id_annonce,nom_photo,type_photo,taille_photo,photo from `photo` where Id_photo=49");
    		
    	mysql_close();
    	
    	//header("location: formmoto_etape3.php?IId_annonce=$Id_annonce");
    	
    echo '<script language="Javascript">
    <!--
    document.location.replace("formmoto_etape3.php?IId_annonce=$Id_annonce");
    // -->
    </script>';	
    ?>
    0
  12. toto
     
    J'ai fait quelques essais, je ne vois pas.

    le message d'erreur dit-il bien Unknown column '$Id_annonce' in 'field list' ? Peux-tu donner le message complet ?
    Sur laquelle des requêtes y a-t-il une erreur ?
    Dans la dernière requête, est-ce bien un select $Id_annonce que tu veux et non pas un select Id_annonce ?
    0
  13. Yo !! Messages postés 54 Statut Membre
     
    C'est le message en entier il y a rien d'aute désolé
    0
  14. toto
     
    D'accord, mais tu peux peut-être dire sur quelle requête ?
    Si tu ne le sais pas, fais un echo htmlentities($sql); au début de la fonction LireTable
    0
  15. Yo !! Messages postés 54 Statut Membre
     
    en faite je ne pense pas que ca vienne d'une requete mais de l'ID_annonce car dans mon lien j'ai ca :

    formmoto_etape2.php?Id_annonce=$Id_annonce

    Et on voi bien qu'il ne prend pas l'ID_annonce dans le lien et je pense que c'est la ou est le souci

    Par contre comment recupérer l'ID ca je trouve pas
    0
  16. toto
     
    Mais si ça vient bien de la requête !
    Si tu as ?Id_annonce=$Id_annonce dans ton URL, alors je suppose que cette valeur se retrouve dans ta variable $Id_annonce, même si je ne vois pas comment puisque tu as $Id_annonce=$_POST["Id_annonce"]; au lieu de $Id_annonce=$_GET["Id_annonce"];.
    Dans ce cas, dans la sous-requête "select $Id_annonce,nom_photo,type_photo,taille_photo,photo from `photo` where Id_photo=49", la variable $Id_annonce est remplacée par sa valeur, c'est à dire...$Id_annonce
    Puisque ce $Id_annonce ,n'est pas entre apostrophes, il est pris comme un nom de champ. Et comme tu n'as pas de champ de ce nom là, il y a une erreur, qui correspond exactement au message indiqué.
    0
  17. Yo !! Messages postés 54 Statut Membre
     
    Si j'ai un champs nommé ID_annonce
    0
  18. toto
     
    Non, tu n'as pas de champ ID_annonce, tu as un champ Id_annonce
    Mais peu importe l'erreur de majuscule, le problème c'est que dans ta requête tu appelles ton champ $Id_annonce
    0
  19. Yo !! Messages postés 54 Statut Membre
     
    Donc je dois modifier quoi?
    0
  20. toto
     
    Sur un programme correct, on peut comprendre ce que l'auteur a voulu faire.
    Sur un programme avec des erreurs, on ne peut faire que des suppositions.
    Donc, sous toutes réserves :
    Je pense que le Id_annonce=$Id_annonce dont tu parles dans ton message 14 est incorrect, il devrait y avoir une valeur à la place de $Id_annonce. Cela vient probablement de la façon dont le lien a été créé, une chaîne entre apostrophes au lieu de double quotes et une variable PHP n'a pas été substituée.
    Je pense également que $Id_annonce est une erreur dans ta requête
    ...select $Id_annonce,nom_photo,type_photo,taille_photo,photo from `photo` where Id_photo=49");
    il devrait y avoir simplement Id_annonce.
    0