Mysql_fetch_array(): et foreach()
Fermé
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
-
3 janv. 2009 à 16:32
toto - 6 janv. 2009 à 11:38
toto - 6 janv. 2009 à 11:38
19 réponses
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
47
3 janv. 2009 à 16:37
3 janv. 2009 à 16:37
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.
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
3 janv. 2009 à 16:40
3 janv. 2009 à 16:40
Donc je dois faire quoi?
Apaachee
Messages postés
248
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 août 2011
47
3 janv. 2009 à 16:53
3 janv. 2009 à 16:53
Ca simplifierait pas mal si tu mettais ton code entre balises
Dans ta fonction LireTable, tu ne cherches pas a te reconnecter a ta BD ?
LireTable($id_connex,$sql);
Dans ta fonction LireTable, tu ne cherches pas a te reconnecter a ta BD ?
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
3 janv. 2009 à 18:36
3 janv. 2009 à 18:36
$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(); ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
4 janv. 2009 à 16:42
4 janv. 2009 à 16:42
Alors personne pour m'aider??
Bonjour
Pas facile car on ne sait pas ce que c'est que ta classe DataBase. Le sais-tu, toi ?
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.
Elle sort d'où la requête $sql ?
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 ?
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
4 janv. 2009 à 17:31
4 janv. 2009 à 17:31
Voila ma requete : qui vien juste avant le script que j'ai mis
et voila pour la connexion :
$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; } }
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
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
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
4 janv. 2009 à 17:51
4 janv. 2009 à 17:51
Voici l'erreur : Unknown column '$Id_annonce' in 'field list'
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
4 janv. 2009 à 17:52
4 janv. 2009 à 17:52
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 :
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>'; ?>
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 ?
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 ?
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
4 janv. 2009 à 18:34
4 janv. 2009 à 18:34
C'est le message en entier il y a rien d'aute désolé
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
Si tu ne le sais pas, fais un echo htmlentities($sql); au début de la fonction LireTable
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
4 janv. 2009 à 21:02
4 janv. 2009 à 21:02
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
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
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é.
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é.
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
5 janv. 2009 à 17:26
5 janv. 2009 à 17:26
Si j'ai un champs nommé ID_annonce
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
Mais peu importe l'erreur de majuscule, le problème c'est que dans ta requête tu appelles ton champ $Id_annonce
Yo !!
Messages postés
54
Date d'inscription
mercredi 16 juillet 2008
Statut
Membre
Dernière intervention
6 janvier 2009
6 janv. 2009 à 11:16
6 janv. 2009 à 11:16
Donc je dois modifier quoi?
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.
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.