Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1348 connectés 

  FORUM HardWare.fr
  Programmation

  [SQL] Tableaux.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Tableaux.

n°64975
Kyle
Posté le 14-10-2001 à 10:45:13  profilanswer
 

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 ! :D
 
http://www.kylesweb.com/sql.gif
 
Merci.

mood
Publicité
Posté le 14-10-2001 à 10:45:13  profilanswer
 

n°64986
Titoine42
Posté le 14-10-2001 à 12:40:25  profilanswer
 

:??:
 
fais quand même un long discours

n°64988
Kyle
Posté le 14-10-2001 à 12:44:04  profilanswer
 

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]

n°64989
youdontcar​e
Posté le 14-10-2001 à 13:02:51  profilanswer
 

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>';

n°64991
Kyle
Posté le 14-10-2001 à 13:48:43  profilanswer
 

Ca marche nikel ! ;)
 
Mais est-ce que tu pourrais me commenter les lignes car j'ai un peut de mal.  :??:  
 
Merci.

n°65006
youdontcar​e
Posté le 14-10-2001 à 15:02:52  profilanswer
 

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 ...

n°65013
Kyle
Posté le 14-10-2001 à 15:49:53  profilanswer
 

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. :)

n°65015
youdontcar​e
Posté le 14-10-2001 à 15:53:06  profilanswer
 

oui. je te laisse chercher :), il faut utiliser à nouveau le modulo et se servir d'un tableau.

n°65018
Kyle
Posté le 14-10-2001 à 16:06:58  profilanswer
 

Il y a juste un ptit truc qui me chagrine !
 
Ou sont les </td> et </tr> car apparement, netscape n'aime pas trops.  :(

n°65027
youdontcar​e
Posté le 14-10-2001 à 16:38:31  profilanswer
 

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>';  
}

mood
Publicité
Posté le 14-10-2001 à 16:38:31  profilanswer
 

n°65033
Kyle
Posté le 14-10-2001 à 17:08:00  profilanswer
 

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]

n°65036
youdontcar​e
Posté le 14-10-2001 à 17:21:16  profilanswer
 

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. ;)  



:lol: 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]

n°65041
Kyle
Posté le 14-10-2001 à 18:17:31  profilanswer
 

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  :cry:

n°65049
youdontcar​e
Posté le 14-10-2001 à 19:09:21  profilanswer
 

yep yé mé souis trompé comme une merde :D
 
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 :D
ç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 ...

n°65059
Kyle
Posté le 14-10-2001 à 20:44:30  profilanswer
 

Ca marche terrible ! :)
 
Tu es developpeur, non ? Car ca te parait si simple !
 
Merci encore !

n°65067
youdontcar​e
Posté le 14-10-2001 à 21:42:07  profilanswer
 

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 ? :)

n°65070
Kyle
Posté le 14-10-2001 à 21:56:01  profilanswer
 

En effet, a force d'en faire, ca rentre ! :D
 
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 ! :D
 
A+

n°65075
youdontcar​e
Posté le 14-10-2001 à 22:41:41  profilanswer
 

yep, hésite pas à laisser un ptit message "que pensez-vous de mon site", c'est pratique commune ici & sur graphisme !

n°65080
Kyle
Posté le 14-10-2001 à 23:25:26  profilanswer
 

OK, et encore merci ! :)
A+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [SQL] Tableaux.

 

Sujets relatifs
sysdate et SQL****URGENT***** - Question en SQL
SQL ORACLE et EXCEL = > Chaud les marronsDELPHI requête SQL
[SQL] Conversion[JAVA / SQL] J'ai comme un pb avec Oracle
[SQL] comment supprimer des doublons ?Espace en SQL
Equivalent du LIMIT de mySQL sur SQL ServerDrivers jdbc pour SQL Server pour websphère... HELP!!
Plus de sujets relatifs à : [SQL] Tableaux.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR