Affichage plan de salle

Bisvan2
Invité n'ayant pas de compte PHPfrance

26 mai 2011, 16:22

Bonjour,

J'ai une BDD avec une table "restaurant" qui rassemble le nombre de table du restaurant :
- idresto
- idtable (numéro de la table)
- nbrecouvert
- ligne (numéro de la ligne du tableau html pour affichage)
- colonne (numéro de la colonne du tableau html pour affichage)

Pour afficher sur une page HTML le plan de salle des plus "réels", j'ai divisé chaque salle de restaurant en quadrillage (tableau) avec ligne et colonne.
Chaque table du restaurant à donc une coordonnée "ligne" et une coordonnée "colonne" afin d'être affiché à la bonne place dans un tableau HTML

Par contre je sèche sur la boucle qui va prendre ces données de la BDD.
Auriez vous une idée de comment faire le script d'affichage ?

Merci !!!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 mai 2011, 16:39

salut,


a tu essayer un order by ligne, colonne dans la requete sql ?

ensuite pour l'affichage il faut réaliser la césure en fonction du nombre de table par ligne, pour cela soit tu le connais a l'avance, soit il faut vérifier s'il y a un changement de colonne dans le jeux de données, pour changer de ligne ;)

@+
Il en faut peu pour être heureux ......

Bisvan2
Invité n'ayant pas de compte PHPfrance

26 mai 2011, 16:43

Alors j'ai essayé effectivement un order by ligne,colonne
Mais mon soucis est la boucle d'affichage des <TR> et <TD> en fonction du changement de ligne et de colonne...
J'arrive pas à trouver le truc...une idée ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 mai 2011, 16:55

un truc du genre :
<?php
// la requete j'te laisse faire => $sql
$req = mysql_query($sql);
if ($req === false ) {
// message d'erreur qui va bien pour le cas où
echo 'Erreur SQL : '.mysql_error();
}
else {
// tout est ok
echo '<table><tr>';
$col = '';
while($data = mysql_fetch_assoc($req)) {
if (empty($col)) $col = $data['colonne'];
if ($col != $data['colonne']) {
echo '</tr><tr>';
$col = $data['colonne'];
}
echo '<td>',$data['idtable'],'</td>';
}
// pense a fermer le dernier tr
mysql_free_result($req);
}
?>
@+
Il en faut peu pour être heureux ......

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 mai 2011, 17:34

Personnellement j'essayerais de constituer un tableau php à deux dimensions (les lignes et les colonnes) qui pourrais être facilement parcouru pour afficher ton tableau html...

En gros tu charges toutes tes tables, et tu alimentes un tableau en spécifiant la ligne puis la colonne :
  $restaurant[ta_ligne][ta_colonne] = ....;
A partir de là tu peux utiliser deux boucles pour constituer ton tableau (une boucle pour les lignes et une boucle pour les colonnes), et pour chaque "case" tu vérifies s'il existe une correspondance dans le tableau
for ($i=0; $i < $nbLignes; $i++) {
  ... // tr
  for ($j=0; $j < $nbColonnes; $j++) {
    ... // td
    if (isSet($restaurant[$i][$j]))
      ...
  }
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...