Tableaux. [SQL] - Programmation
Marsh Posté le 14-10-2001 à 12:44:04
En fait, je sais mettre mes données soit en ligne ou soit en colonne dans mon tableau de ma page html.
Mais moi, ce que je voudrais faire, c'est mettre mes données en ligne et en colonne comme le montre le dernier tableau de l'image.
[edtdd]--Message édité par kyle--[/edtdd]
Marsh Posté le 14-10-2001 à 13:02:51
essaye un truc comme :
$i = 0;
$spaceRows = 3;
echo '<table border="1">';
while (mysql_fetch_array($result))
{
if ($i % $spaceRows == 0) echo '<tr>';
$i++;
echo "<td> $row[blah]";
}
echo '</table>';
Marsh Posté le 14-10-2001 à 13:48:43
Ca marche nikel !
Mais est-ce que tu pourrais me commenter les lignes car j'ai un peut de mal.
Merci.
Marsh Posté le 14-10-2001 à 15:02:52
ok, mode verbose didactique
tu veux créer des tableaux comportant N cellules par ligne.
* une nouvelle ligne est indiquée par <tr>
* une cellule dans cette ligne est indiquée par <td>
en affichant le résultat sortant de mysql entrée par entrée, il faut donc un moyen d'émettre un <tr> toutes les N entrées pour faire passer la table à la ligne.
pour ça, le plus simple est de garder un compteur, qu'on va appeler $i, qui est incrémenté à chaque passage de la boucle. un moyen de savoir quand émettre <tr> est de diviser $i par N. si le reste de la division est égal à 0, on émet <tr>. pour cela, on utilise la fonction modulo (a % b) qui renvoie le reste de la division de a par b.
par ex, pour N=3 on a :
0 % 3 = 0 // on émet un <tr>, puis un <td>
1 % 3 = 1 // on émet un <td>
2 % 3 = 2 // on émet un <td>
3 % 3 = 0 // on émet un <tr>, puis un <td>
4 % 3 = 1 // on émet un <td>
5 % 3 = 2 // on émet un <td>
6 % 3 = 0 // on émet un <tr>, puis un <td>
7 % 3 = 1 // on émet un <td>
etc ...
Marsh Posté le 14-10-2001 à 15:49:53
Merci, ca m'eclaire beaucoups !
Est-il possible de pousser ce petit script un peu plus loin afin que je puisse définir une couleur de cellule pour chaque colonne ?
Merci encore.
Marsh Posté le 14-10-2001 à 15:53:06
oui. je te laisse chercher , il faut utiliser à nouveau le modulo et se servir d'un tableau.
Marsh Posté le 14-10-2001 à 16:06:58
Il y a juste un ptit truc qui me chagrine !
Ou sont les </td> et </tr> car apparement, netscape n'aime pas trops.
Marsh Posté le 14-10-2001 à 16:38:31
kyle a écrit a écrit : Il y a juste un ptit truc qui me chagrine ! Ou sont les </td> et </tr> car apparement, netscape n'aime pas trops. |
tu les rajoutes ! c'était un script minimal destiné à être clair.
rapidos :
while (..)
{
if ($i % $spaceRows == 0) echo '<tr>';
$i++;
echo "<td> $row[blah] </td>";
if ($i % $spaceRows == 0) echo '</tr>';
}
Marsh Posté le 14-10-2001 à 17:08:00
Ok, merci pour tous, t'es un boss !
Par contre, si tu pouvais m'eclairer pour mettre de la couleur, ce serais sympa.
[edtdd]--Message édité par kyle--[/edtdd]
Marsh Posté le 14-10-2001 à 17:21:16
kyle a écrit a écrit : Ok, merci pour tous, t'es un boss ! Par contre, si tu pouvais m'eclairer pour mettre de la couleur, ce serais sympa. |
comme je t'ai dit plus haut, t'utilises un tableau et le modulo. tu mets les couleurs dans ton tableau, et tu utilises le modulo comme index.
$myColors = array('#ffff00', '#ff0000', '#0000ff';
while (..)
{
$idx = $i % spaceRows;
if (!$idx) echo '<tr>';
$i++;
echo "<td bgcolor='" . $myColors[$idx] . "'>$row[blah] </td>";
if (!$idx) echo '</tr>';
}
[edtdd]--Message édité par youdontcare--[/edtdd]
Marsh Posté le 14-10-2001 à 18:17:31
J'ai un probleme avec
Voici le script final :
$i = 0;
$spaceRows = 3;
$myColors = array("#D9D9D9", "#F2F2F2", "#FFCD5F" );
echo "<table border=\"1\" cellspacing=\"10\" cellpadding=\"0\" width=\"450\" align=\"center\">";
while ($row = mysql_fetch_array($resultat))
{
$idx = $i % $spaceRows;
if (!$idx) echo "<tr>";
$i++;
echo "<td class=\"menu\" bgcolor='" . $myColors[$idx] . "'><div align=\"center\"><a href=\"$row[url]\">$row[modele]</a></div></td>";
if (!$idx) echo "</tr>";
}
echo "</table>";
Mais il me fais un truc bizzare, c'est a dire qu'il me met les données en 2 colonnes dont 4 données sur 5 dans la 1ere colonne et la 5e donnée dans la 2e colonne et sur la 2e ligne
HELP
Marsh Posté le 14-10-2001 à 19:09:21
yep yé mé souis trompé comme une merde
si tu regardes bien le code, il teste la valeur de $idx pour insérer un <tr>. il fait le même test pour insérer </tr>. C'EST MAL
ça produit
<tr><td></tr><td><td> etc ...
donc il faut modifier le second test, savoir quand la prochaine itération vérifiera $idx == 0, soit $i % $spaceRows == 0, soit en fait tester si $i % $spaceRows == $spaceRows-1
if ($idx == $spaceRows-1) echo "</tr>";
voilà ... tu remarqueras que pour un nombre d'entrés de ta table non divisible par $spaceRows, le dernier </tr> ne sera jamais émis. à toi de tester ...
Marsh Posté le 14-10-2001 à 20:44:30
Ca marche terrible !
Tu es developpeur, non ? Car ca te parait si simple !
Merci encore !
Marsh Posté le 14-10-2001 à 21:42:07
vi je développe ... t'en fais pas, ça te paraîtra aussi simple après une bonne expérience php / html. ça va déjà mieux d'ailleurs, non ?
Marsh Posté le 14-10-2001 à 21:56:01
En effet, a force d'en faire, ca rentre !
Ca ne fais que qques mois que je me suis mis au PHP et je m'y fais petit a petit !
Si ca t'interresse, je te filerais mon adresse web pour voir ce que ca donne !
A+
Marsh Posté le 14-10-2001 à 22:41:41
yep, hésite pas à laisser un ptit message "que pensez-vous de mon site", c'est pratique commune ici & sur graphisme !
Marsh Posté le 14-10-2001 à 10:45:13
Salut !
J'ai un petit probleme pour mettre mes données de ma table sous forme de tableau !
Au lieu de faire un long discours, voici une image de ce que je sais faire et pas faire.
Bien sur, le but étant de m'aider a faire ce que je ne sais pas !
Merci.