Comment faire une table interne en php? - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Comment faire une table interne en php?

Par Kao92 -  7 reponses -  Le 10/05/2011 -  Flux RSS - 

Bonjour,

 Voila une question sur laquelle je galère depuis quelques bonnes minutes vu que je commence tout juste a pousser mes connaissances php.

 Lorque l'on récupère le resultat d'une requete sql, on peut accèder au resultat par une simple boucle.

while($tableau)

{

  echo $tableau['nom de la colonne 1']; 

  echo $tableau['nom de la colonne 2']; 

  echo $tableau['nom de la colonne 3'];  

 

Et j'aimerais savoir comment il m'est possible de créer une varible du meme genre.

Un tableau dans lequel je definirais les couleurs pour ensuite y mettre les valeurs.

 

Merci de votre aide! 

 

Réponses apportées à cette discussion

Par Kao92 -  Le 10/05/2011 - 

Excusez moi je voulais dire les colonnes et non les couleurs!

 
Par Cyrano -  Le 10/05/2011 - 

Salut Kao,

je suis pas certain de bien saisir ce que tu veux obtenir. S'il s'agit de transférer le résultat retourné par ta base de données dans un tableau PHP, alors il faut construire un tableau à deux dimensions. La première dimension, ce seront les lignes, la seconde, ce seront les colonnes.  Schématiquement ça peut ressembler à ceci :

  1. <?php
  2. $sql = "SELECT ... etc...";
  3. $exec = mysql_query($sql);
  4. $tableau = array();
  5. while(false !== ($ligne = mysql_fetch_assoc($exec)))
  6. {
  7. $tableau[] = $ligne;
  8. }
  9. //... etc...

Au final, tu retrouveras un nombre n de lignes et pour la colonne col_2 de la ligne x, tu devras chercher $tableau[x]['col_2']; Est-ce que tu y vois plus clair de cette manière ?

 

 
Par Kao92 -  Le 11/05/2011 - 

Merci je vais voir si cela peut m'aider!

Cela va me permettre de crée ma table.

 Pour moi le vrai problème est la visualisation de la donnée.

 

Je vous tiens au courant de mes avancés 

 
Par Kao92 -  Le 11/05/2011 - 

Ca a bien marché, je peux desormais accéder a ma table.

$tableau[indice_ligne][nom_du_champ]

 Mais désormais je me demande si au lieu de devoir utiliser le numero de ligne il n'est pas possible d'utiliser un champ pour la construction de tableau comme mon champ 'id' je pourrais alors accèder directement a la ligne que je souhaite par $tableau[id][nom_du_champ] 

 
Par Cyrano -  Le 12/05/2011 - 

Tu devrais jeter un coup d'oeil dans la documentation PHP au sujet de la fonction var_dump(), c'est vraiment très utile pour ne pas dire indispensable en cours de développement.

 
Par Kao92 -  Le 13/05/2011 - 

Merci pour vcar_dump() ca va mettre utile pour mon cas, je me suis documenté et j'ai fait un objet pour gérer tout ca ca  

class Table extends ArrayObject

{

public function __construct($req)

{

while(false !== ($ligne = mysql_fetch_assoc($req)))

{

$this[] = $ligne;

}

}

public function read($champ, $valeur)

{

$ligne = array();

for($i=0;$i<sizeof($this);$i++)

{

if($this[$i][$champ] == $valeur)

{

return $this[$i];

}

}

}

 

Cela me permet a partir de l'execution de ma requete d'avoir une table et de recuperer les lignes selon un criteres de selection.

$sql = "SELECT * FROM ma_table";

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$it = new Table($req); 

$ligne_cherche = $it_matri->read('champ_cherche',$valeur_cherche );

echo '&nbsp;<b>'.$ligne_cherche['champ_affiche'].'</b>'; 

 
Par Cyrano -  Le 14/05/2011 - 

Mouais, pour aussi peu, je ne suis pas convaincu de l'intérêt d'une extension de ArrayObject.

Par ailleurs, je trouve curieux de faire aussi compliqué au lieu d'ajouter simplement une clause WHERE à ta requête. Ensuite, l'implémentation de ta méthode read ne peut retourner qu'une seule ligne : comment traiteras-tu le problème s'il existe plusieurs lignes correspondant à ton critère de sélection ? 

Enfin sur la requête SQL, je déconseille l'utilisation toujours abusive du « SELECT * » : si tu ne cherches que la valeur d'une colonne, pourquoi récupérer l'ensemble du contenu de la table ? Coté performances, c'est plutôt ruineux. Ta requête pourrait donc se résumer à « SELECT colonne_cherche FROM ma_table WHERE colonne_tri = 'valeur de tri' »

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !