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

 


Dernière réponse
Sujet : [SQL] Tableaux.
Kyle OK, et encore merci ! :)
A+

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Kyle OK, et encore merci ! :)
A+
youdontcare yep, hésite pas à laisser un ptit message "que pensez-vous de mon site", c'est pratique commune ici & sur graphisme !
Kyle 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+
youdontcare 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 ? :)
Kyle Ca marche terrible ! :)
 
Tu es developpeur, non ? Car ca te parait si simple !
 
Merci encore !
youdontcare 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 ...
Kyle 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:
youdontcare

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]

Kyle 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]

youdontcare

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

Kyle Il y a juste un ptit truc qui me chagrine !
 
Ou sont les </td> et </tr> car apparement, netscape n'aime pas trops.  :(
youdontcare oui. je te laisse chercher :), il faut utiliser à nouveau le modulo et se servir d'un tableau.
Kyle 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. :)
youdontcare 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 ...
Kyle Ca marche nikel ! ;)
 
Mais est-ce que tu pourrais me commenter les lignes car j'ai un peut de mal.  :??:  
 
Merci.
youdontcare 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>';
Kyle 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]

Titoine42 :??:
 
fais quand même un long discours
Kyle 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.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)