Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2011, 16h49   #1
Membre à l'essai
 
Benjamin
Inscription : novembre 2009
Messages : 122
Détails du profil
Informations personnelles :
Nom : Benjamin

Informations forums :
Inscription : novembre 2009
Messages : 122
Points : 23
Points : 23
Par défaut Problème de récupération de donnée après implode()

Bonjour,

J'avais un problème hier pour enregistrer un array dans ma bdd, j'ai trouvé la fonctoin implode, et tout va bien pour l'enregistrement, en revanche j'ai un problème pour utilisé ces données après.
Je souhaite afficher les prêts en cours pour l'utilisateur qui se logge, j'ai donc:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$req="SELECT L.id_personne, P.id_personne, Nom, Prenom, nom_materiel, M.id_materiel, PE.id_materiel, date_retour, login
	FROM personnes P, prets PE, Logins L, materiel M
	WHERE login = '".$cookieLOG."'
	AND L.id_personne = P.id_personne
	ORDER BY date_retour DESC";
 
	$resultat = mysql_query($req)or die(mysql_error());
 
	while($row = mysql_fetch_row($resultat)){
		echo "<tr>";
		echo "<td>$row[2]</td>";
		echo "<td>$row[3]</td>";
		echo "<td>$row[6]</td>";
		echo "<td>$row[7]</td>";
		echo "<td>__</td>";
		echo "</tr>";
	}
		mysql_close($link);*/
	?>
dans mon $row[7], je reçois bien mes id_materiel du prêt effectuer par l'utilisateur, cependant j'aimerais afficher les noms de materiels.

comment faire une requête pour traduire mes id_materiel en nom_materiel et les introduires dans ma requête ci-dessus.

J'ai tenter ceci:

Code :
1
2
3
4
5
6
7
8
9
$req = mysql_query("SELECT id_materiel, nom_materiel, L.id_personne, P.id_personne								  FROM personnes P, prets PE, Logins L 
WHERE L.id_personne = P.id_personne
AND P.id_personne = PE.id_personne
AND login = '".$cookieLOG."'");
 
  $requete1=mysql_query($req);
  while($row10 = mysql_fetch_array($requete1)){;
	echo $row10[1];
  }
Cependant cela ne fonctionne pas, j'ai aussi essayer la fonction explode() mais je ne comprend pas bien le but de cette fonction.

Je vous remercie pour votre attention
benjamin002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 16h55   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Mettre plusieurs valeurs dans un même champ est une mauvaise idée qui mène a ce genre de problème.
Il faut un enregistrement pour chaque id.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 17h08   #3
Membre à l'essai
 
Benjamin
Inscription : novembre 2009
Messages : 122
Détails du profil
Informations personnelles :
Nom : Benjamin

Informations forums :
Inscription : novembre 2009
Messages : 122
Points : 23
Points : 23
Voici ma table pret:
id_pret
date_depart
date_retour
num_BL
id_personne
id_materiel

pour un même id prêt je peux avoir plusieurs matériels prêtés, cela va me faire beaucoup de ligne si lors de l'enregistrement d'un prêt avec plusieurs matériels j'ai une ligne pour chaque matériel.

Aurais tu une solution approprié dont je n'aurai pas pensé?
benjamin002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 18h29   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il te faut une autre table pour stocker les id_materiel correspondant a chaque prêt (id,id_pret,id_materiel).

Une base de données est faite pour gérer de nombreuses lignes.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 14h39   #5
Membre à l'essai
 
Benjamin
Inscription : novembre 2009
Messages : 122
Détails du profil
Informations personnelles :
Nom : Benjamin

Informations forums :
Inscription : novembre 2009
Messages : 122
Points : 23
Points : 23
J'ai modifié mes plans et je souhaite modifier mes valeurs avant de les enregistrer dans ma bdd

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$Materiel = $_POST['list2']; //récupère les id_materiel(array) dans une variable
 
for($i=0; $i<count($Materiel); $i++){
	foreach ($Materiel[$i] as $value){
//Je traduis mes id en nom:
		$requete1=mysql_query("SELECT id_materiel, nom_materiel FROM materiel WHERE id_materiel = '".$value."'");
		$row2 = mysql_fetch_row($requete1);
		$id_materiel=$row2[1];
		echo $id_materiel;
 
	}
}
Cependant il m'affiche ce message:
Citation:
Warning: Invalid argument supplied for foreach() in
Je souhaites traduire mes id en nom avant de les enregistrer dans ma bdd, ai-je la bonne méthode?
benjamin002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 15h07   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Plutot
Code :
foreach ($Materiel as $value){
sans la boucle for
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 15h10   #7
Membre à l'essai
 
Benjamin
Inscription : novembre 2009
Messages : 122
Détails du profil
Informations personnelles :
Nom : Benjamin

Informations forums :
Inscription : novembre 2009
Messages : 122
Points : 23
Points : 23
Merci beaucoup sabotage, c'est parfait!
benjamin002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h42.


 
 
 
 
Partenaires

Hébergement Web