Stockage données suite requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Stockage données suite requête

Re: Stockage données suite requête

par almoha » 22 août 2010, 13:55

Merci à tous les intervenants, leur réponses m'ont bien aidé. Je me suis inspiré de la réponse de Igor206 et de Ryle pour construire le code suivant :
<?php
 
$db = mysql_connect("localhost","root", "")  or die ('erreur de connexion');
mysql_select_db('***',$db);
$select = "SELECT L.ID_LIVRE, C.NOM_CATEGORIE
FROM LIVRE L
 
INNER JOIN CLASSIFIE3 A ON A.ID_LIVRE = L.ID_LIVRE
INNER JOIN CATEGORIE C ON A.ID_CATEGORIE = C.ID_CATEGORIE";
$resultat = mysql_query($select);
	
// on déclare notre tableau avant de l'utiliser (évite les "notice")
$livre_categorie = array();


while ($data = mysql_fetch_array($resultat)){ // on parcours les enregistrements de ta requête

   // si le livre n'est pas encore déclaré dans le tableau, on déclare le sous tab
   if ( !isSet($livre_categorie[$data['ID_LIVRE']]) )
      $livre_categorie[$data['ID_LIVRE']] = array();

   // On ajoute ensuite dans le tableau du livre la catégorie
   $livre_categorie[$data['ID_LIVRE']][] = $data ['NOM_CATEGORIE'];
   
  echo $data['ID_LIVRE'].' : '.$data['NOM_CATEGORIE'].'<br/>';
 
  
}	
	
$select = "SELECT L.ID_LIVRE,  CB.NOM_CONTRIBUTEUR, CB.PRENOM_CONTRIBUTEUR, F.NOM_FONCTION
 
FROM LIVRE L
 
INNER JOIN PARTICIPE P ON P.ID_LIVRE = L.ID_LIVRE
INNER JOIN CONTRIBUTEURS CB ON CB.ID_CONTRIBUTEUR = P.ID_CONTRIBUTEUR      
INNER JOIN FONCTION F ON F.ID_FONCTION = P.ID_FONCTION";
$resultat = mysql_query($select);

// on déclare notre tableau avant de l'utiliser (évite les "notice")

$livre_contributeurs= array();	

while ($data = mysql_fetch_array($resultat)){ // on parcours les enregistrements de ta requête

   // si le livre n'est pas encore déclaré dans le tableau, on déclare le sous tab
   if ( !isSet($livre_contributeurs[$data['ID_LIVRE']]) )
      $livre_contributeurs[$data['ID_LIVRE']] = array();

   // On ajoute ensuite dans le tableau du livre le nom du contributeur,prénom et fonction
   $livre_contributeurs[$data['ID_LIVRE']][] = $data ['NOM_CONTRIBUTEUR'];
   $livre_contributeurs[$data['ID_LIVRE']][] = $data ['PRENOM_CONTRIBUTEUR'];
   $livre_contributeurs[$data['ID_LIVRE']][] = $data ['NOM_FONCTION'];
   
   
  echo $data['ID_LIVRE'].' : '.$data['PRENOM_CONTRIBUTEUR'].' '.$data['NOM_CONTRIBUTEUR'].' : '.$data['NOM_FONCTION'].'<br/>';

  
}
	
?>
L'affichage obtenu est du style :
(...)
239 : Romans
254 : Romans
255 : Romans
255 : Recueils nouvelles
etc

Puis :
(...)
239 : Edith Ochs : traducteur
239 : Arthur Phillips : auteur
254 : Maxime Chattam : auteur
255 : Jacques Baudou : prefaceur
255 : René Réouven : auteur
etc

Comment faire pour obtenir cet affichage (par ex. pour le id_livre 255) :

255 : Romans; recueil de nouvelles
auteur : René Réouven
prefaceur : Jacques Baudou

Merci pour toute aide complémentaire.

Re: Stockage données suite requête

par Ryle » 22 août 2010, 10:41

Tu sais déjà que ton résultat doit être un tableau de tableau, il te suffit donc d'agencer tes éléments en fonction :)
// on déclare notre tableau avant de l'utiliser (évite les "notice")
$livre_categorie = array();

while ($row = mysql_fetch .... ) { // on parcours les enregistrements de ta requête 

   // si le livre n'est pas encore déclaré dans le tableau, on déclare le sous tab
   if ( !isSet($livre_categorie[$row['ID_LIVRE']]) ) 
      $livre_categorie[$row['ID_LIVRE']] = array();

   // On ajoute ensuite dans le tableau du livre la catégorie
   $livre_categorie[$row['ID_LIVRE']][] = $row ['NOM_CATEGORIE'];
}

// Pour voir rapidement le résultat contenu dans le tableau
echo '<pre>';
print_r($livre_categorie);
echo '</pre>';

Re: Stockage données suite requête

par igor206 » 22 août 2010, 10:34

Salut,
voilà un code que j'utilise à toi de l'adapter à ce que tu veux:
<?php
$db = mysql_connect("localhost","user","password")  or die ('erreur de connexion');
mysql_select_db('tabase',$db);
$select = "SELECT * FROM tatable WHERE cequetuveux ='"cequetuveux"' ";
$resultat = mysql_query($select);
$nblignes = mysql_num_rows($resultat);


echo '<table width=850px" border="1" cellpadding="1" cellspacing="1" align="center">'."\n".'<tr bgcolor="#40A497"><td>id du livre</td><td>categorie</td></tr>'."\n";*//affichage de l'entete du tableau


for ($i=0;$i<$nblignes;$i=$i+1) {
		 $id =  mysql_result($resultat,$i,"id_livre");*//respecte les majuscules
		 $categorie =  mysql_result($resultat,$i,"nom_categorie");

echo "<tr><td><div align=\"center\">$id</td>
		 <td><div align\"center\">$categorie</td>
         </tr>";
}


while ($data=mysql_fetch_array($resultat)){
         echo ('<tr>
                        <td style="text-align=center">' .$data['id_livrel']. '</td>
                        <td style="text-align=center">' .$data['nom_categorie']. '</td>
                  </tr>');
}

echo "</table>";
mysql_close($db); 
?>
J'espère que cela va t'aider

Re: Stockage données suite requête

par xTG » 22 août 2010, 10:34

Voici un tutorial pour l'utilisation de PDO : http://www.phpfacile.com/creer_un_site_ ... pdo_2.php5
N'hésites pas à venir nous poser des questions après l'avoir parcouru. :)

Stockage données suite requête

par almoha » 22 août 2010, 09:32

Bonjour,

J'utilise la requête suivante :
$reponse = $bdd->query('SELECT L.ID_LIVRE, C.NOM_CATEGORIE
FROM LIVRE L
 
INNER JOIN CLASSIFIE3 A ON A.ID_LIVRE = L.ID_LIVRE
INNER JOIN CATEGORIE C ON A.ID_CATEGORIE = C.ID_CATEGORIE
')
				
or die(print_r($bdd->errorInfo()));
Dans PhpMyAdmin cela m'affiche :

ID_LIVRE // NOM_CATEGORIE

255 // Romans
255 // Recueils nouvelles
288 // Romans
310 // Romans
etc

Grâce à PHP, je souhaiterais lire la requête et stocker les données dans un tableau PHP.
Je crois que les données doivent être rangées sous la forme :
$livre_categorie(livre_id=>array(categories))
Mais je suis débutant et je n'arrive à écrire le code adéquat. Pouvez-vous m'aider ? Merci d'avance.