Page 1 sur 2
mise en forme PHP
Posté : 12 déc. 2005, 17:48
par epilogg
Salut tout le monde, prêt à attaquer la semaine ?!!
Je viens aux conseils en fait. Avec une base de données et php, j'ai créé un agenda en ligne sur le net. Mais il est très très basique. La premiere chose que je voudrais faire. C'est changer la couleur de fond une ligne sur deux. Mais je sais pas comment dire ca à php. J'arrive à mettre un CSS pour l'ensemble du tableau mais pas ligne par ligne. Je peux appliquer un CSS en fonction des ID de lignes ? si vous aviez un peu de doc ce serait sympa, je n'en trouve pas. Merci

Posté : 12 déc. 2005, 18:09
par Grummfy
Hello, avec les css tu pourais assez facielment (enfin normalement) le faire via les css 2 ou 3 mais bon comme c'est pas suporter par tous....
sinon le plus simple:
lorsque tu généres ton tableau en php tu fais ecrire une fois sur deux que la class css doit être différent.
tu test avec modulo si c'est divisible pas deux
donc :
<html>
<head>
<style>
.maclass1 {background-color: #fff000;}
.maclass2 {background-color: #000fff;}[/code]
</style>
</head>
<body>
<table>
<?php
for ($i=0; $i<=10; $i++)
{
if ($i % 2)
{
echo '<tr><td class="maclass1">' . $i . '</td></tr>';
}
else
{
echo '<tr><td class="maclass2">' . $i . '</td></tr>';
}
}
?>
</table>
</body>
</html>
Posté : 12 déc. 2005, 18:25
par epilogg
merci beaucoup !
j'ai bien compris le principe et c'est tout à fait ça que je cherchais! par contre j'ai des problemes de syntaxe, je sais pas si tu peux m'aider. J'arrive pas à insérer mon " echo $data['heure'] " dans le code que tu m'as donné, j'ai essayé à plusieurs endroits mais il en veut pas... t'as une idée ?
Posté : 12 déc. 2005, 19:33
par Grummfy
<html>
<head>
<style>
.maclass1 {background-color: #fff000;}
.maclass2 {background-color: #000fff;}[/code]
</style>
</head>
<body>
<table>
<?php
for ($i=0; $i<=10; $i++)
{
if ($i % 2)
{
echo '<tr><td class="maclass1">' . $i . ' - ' . $data['heure'] . '</td></tr>';
}
else
{
echo '<tr><td class="maclass2">' . $i . ' - ' . $data['heure'] . '</td></tr>';
}
}
?>
</table>
</body>
</html>
par exemple
Posté : 13 déc. 2005, 11:38
par epilogg
oki j'ai passé un bout de soirée dessus hier soir mais y a encore deux ou trois trucs que j'ai pas capté (et oui je suis une buse... )
mon code ressemble à ceci :
<table width="530" border="0" cellpadding="0" cellspacing="0">
<tr>
<?php
for ($i=0; $i<=10; $i++)
{
if ($i % 2)
{
echo '<tr><td width="90" height="40" valign="top" class="maclass1">' . $i . ' - ' . $data['heure'] . '</td>';
echo '<td width="350" valign="top" class="maclass1">' . $i . ' - ' . $data['type'] . '</td>';
echo '<td width="90" valign="top" class="maclass1">' . $i . ' - ' . $data['prix'] . '</td></tr>';
}
else
{
echo '<tr><td width="90" height="40" valign="top" class="maclass2">' . $i . ' - ' . $data['heure'] . '</td>';
echo '<td width="350" valign="top" class="maclass2">' . $i . ' - ' . $data['type'] . '</td>';
echo '<td width="90" valign="top" class="maclass2">' . $i . ' - ' . $data['prix'] . '</td></tr>';
}
}
?>
</tr>
</table>
au niveau de la mise en forme tableau, c'est nickel par contre je comprends pas pourquoi la boucle se répète indéfiniment... en effet, le meme champ de la base se répète 7 ou 8 fois, je vois pas d'ou vient le probleme... pour vous donner une idée
http://sceno.fr/v3/index.php?page=ag_fev06
une p'tite idée ?

Posté : 13 déc. 2005, 12:10
par mere-teresa
Faut ptet lui demander les $data['type'] en fonction de $i non ?
Quelle est la structure de ton tableau $data ?
(astuce : fais un echo "<pre>"; var_dump($data); echo "</pre>"; en PHP)
Posté : 13 déc. 2005, 12:13
par epilogg
mon tableau se compose de 4 champs, le 1er ID, le second "heure" en text, le troisieme "type" en text et le quatrième " prix" si c'est bien ce que tu me demandes... ? j'essaie ton astuce
Posté : 13 déc. 2005, 12:21
par mere-teresa
Tu lui demandes d'afficher $data['type'] à chaque fois...donc il affiche la même variable non?
A moins que ton code pour le tableau ne soit déjà dans une boucle ?
Posté : 13 déc. 2005, 12:31
par epilogg
mon tableau n'est pas déjà dans une boucle.
je sais pas comment dire à php d'afficher $data['type1'] avec ma class1, $data['type2] avec ma class2, $data['type3'] avec ma class1 etc. sachant que type1 correspond à mon événément n°1 et ainsi de suite. je veux qu'il applique un style CSS une ligne sur deux en fait, peu importe le nombre d'événements et sans me répéter chaque événement. J'essaie ton astuce mais j'avoue pas capter grand chose. En tout cas, merci de te pencher sur mon sujet...
Posté : 13 déc. 2005, 12:39
par Cyrano
Au niveau du code actuellement indiqué, on peu simplifier un peu :
<table width="530" border="0" cellpadding="0" cellspacing="0">
<tr>
<?php
for ($i = 0; $i <= 10; $i++)
{
$class_css = ($i % 2) ? "maclass1" : "maclass2";
?>
<td width="90" height="40" valign="top" class="<?php echo($class_css); ?>"><?php echo($i ." - ". $data['heure']); ?></td>
<td width="350" valign="top" class="maclass1"><?php echo($i ." - ". $data['type']); ?></td>
<td width="90" valign="top" class="maclass1"><?php echo($i ." - ". $data['prix']); ?></td>
<?php
}
?>
</tr>
</table>
Ceci dit, rien n'indique en effet qu'il faut passer à la ligne suivante des résultats. Donc il faut procéder autrement. Proposition:
<table width="530" border="0" cellpadding="0" cellspacing="0">
<tr>
<?php
$i = 0;
while($data = mysql_fetch_assoc($execution_requete))
{
$class_css = ($i % 2) ? "maclass1" : "maclass2";
?>
<td width="90" height="40" valign="top" class="<?php echo($class_css); ?>"><?php echo($i ." - ". $data['heure']); ?></td>
<td width="350" valign="top" class="maclass1"><?php echo($i ." - ". $data['type']); ?></td>
<td width="90" valign="top" class="maclass1"><?php echo($i ." - ". $data['prix']); ?></td>
<?php
$i++;
}
?>
</tr>
</table>
Posté : 13 déc. 2005, 13:41
par epilogg
Merci Cyrano
je commence légèrement à capter... mais j'ai encore un probleme, je sens que je vais encore passer pour un idiot... je me lance, mon code :
<style>
.maclass1 {background-color: #FFF000;}
.maclass2 {background-color: #000fff;}
</style>
<?php
mysql_connect('localhost','root','');
mysql_select_db('v3_essai');
$requete='SELECT heure,type,prix FROM ag_fev1';
$i = 0;
$var = mysql_query($requete) or die;
while($data = mysql_fetch_assoc($requete))
$class_css = ($i % 2) ? "maclass1" : "maclass2";
{
?>
<table width="530" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="90" height="40" valign="top" class="<?php echo($class_css); ?>"><?php echo($i ." - ". $data['heure']); ?></td>
<td width="350" valign="top" class="maclass1"><?php echo($i ." - ". $data['type']); ?></td>
<td width="90" valign="top" class="maclass1"><?php echo($i ." - ". $data['prix']); ?></td>
<?php
$i++;
mysql_close();
}
?>
</tr>
</table>
voila ou j'en suis, je maitrise pas du tout le mysql_fetch_assoc. le navigateur me répond donc "
mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
j'ai pourtant appliquer mes variables à la fonction mais voilou pas moyen de faire fonctionner! à l'image de Denisot, je suis "désolé"
cyrano, j'ai regardé ta réponse à the_grinch
http://www.phpfrance.com/forums/voir_su ... 99559cd0d5
mais j'ai pas capté...
Posté : 13 déc. 2005, 13:59
par mere-teresa
Tu as fait un peu trop de copier-coller :
$requete='SELECT heure,type,prix FROM ag_fev1';
$i = 0;
$var = mysql_query($requete) or die;
// while($data = mysql_fetch_assoc($requete))
while($data = mysql_fetch_assoc($var)) // ouiii
Posté : 13 déc. 2005, 18:28
par epilogg
J'étais motivé mais là je désespèèèèèèèère !! en plus c'est que le début

vous me dites si vous en avez marre d'essayer de régler mon probleme, je le comprendrai parfaitement...
alors j'ai deux types de code (tous deux issus du sujet) le premier :
<link href="../../styles.css" rel="stylesheet" type="text/css">
<style>
.maclass1 {background-color: #FFF000;}
.maclass2 {background-color: #000fff;}
</style>
<?php
mysql_connect('****,'****','****');
mysql_select_db('****');
$requete='SELECT heure,type,prix FROM agenda_6';
$i = 0;
$var = mysql_query($requete) or die;
while($data = mysql_fetch_assoc($var))
$class_css = ($i % 2) ? "maclass1" : "maclass2";
{
?>
<table width="530" border="0" cellpadding="0" cellspacing="0">
<tr>
<?php
for ($i=0; $i<=10; $i++)
{
if ($i % 2)
{
echo '<tr><td width="90" height="40" valign="top" class="maclass1">' . $i . ' - ' . $var['heure'] . '</td>';
echo '<td width="350" valign="top" class="maclass1">' . $i . ' - ' . $var['type'] . '</td>';
echo '<td width="90" valign="top" class="maclass1">' . $i . ' - ' . $data['prix'] . '</td></tr>';
}
else
{
echo '<tr><td width="90" height="40" valign="top" class="maclass2">' . $i . ' - ' . $data['heure'] . '</td>';
echo '<td width="350" valign="top" class="maclass2">' . $i . ' - ' . $data['type'] . '</td>';
echo '<td width="90" valign="top" class="maclass2">' . $i . ' - ' . $data['prix'] . '</td></tr>';
}
}
?>
</tr>
</table>
<?
}
mysql_close();
?>
qui donne ca :
http://sceno.fr/v3/index.php?page=ag_fev06
donc la c cool j'ai bien mes CSS qui s'appliquent à chaque ligne mais j'ai rien à l'intérieur de ces lignes donc ca m'inquiète (ca vient pas de la base de données ni de mes id de connexion) comme d'hab je comprends pas.
et le second qu'on m'a conseillé également :
<style>
.maclass1 {background-color: #FFF000;}
.maclass2 {background-color: #000fff;}
</style>
<?php
mysql_connect('***','****','****');
mysql_select_db('*****');
$requete='SELECT heure,type,prix FROM agenda_6';
$i = 0;
$var = mysql_query($requete) or die;
while($data = mysql_fetch_assoc($var))
$class_css = ($i % 2) ? "maclass1" : "maclass2";
{
?>
<table width="530" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="90" height="40" valign="top" class="<?php echo($class_css); ?>"><?php echo($i ." - ". $data['heure']); ?></td>
<td width="350" valign="top" class="maclass1"><?php echo($i ." - ". $data['type']); ?></td>
<td width="90" valign="top" class="maclass1"><?php echo($i ." - ". $data['prix']); ?></td>
<?php
$i++;
?>
</tr>
</table>
<?
}
mysql_close();
?>
qui donne ca :
http://sceno.fr/v3/index.php?page=ag_fev07
j'avoue que je suis à bout là... à deux doigts de mettre un coup de tête à mon écran

toutes les idées sont les bienvenues (exceptées toutes celles qui ont trait à la complexité de faire pousser des patates sur mars

)
Posté : 13 déc. 2005, 19:09
par mere-teresa
Le second code : oublie ! Ta boucle ne tourne pas (et pour cause l'accolade n'a rien avant, pas un for, pas un while...).
Quand à la première, tu as pas un souci ?
Fais (avant ta boucle et après avoir récupéré les données de la bdd) un var_dump de $data.
Posté : 14 déc. 2005, 12:51
par epilogg
aller on rattaque !
Perso, je préfère la premiere méthode, parce qu'au moins je la comprends !

donc j'ai revu les erreurs que t'avais noté MT et ca donne
<style>
.maclass1 {background-color: #FFF000;}
.maclass2 {background-color: #000fff;}
</style>
<?php
mysql_connect _____;
mysql_select_db _____;
$requete='SELECT heure,type,prix FROM agenda_6';
$var = mysql_query($requete) or die;
while ($data=mysql_fetch_assoc($var))
{
?>
<table width="530" border="0" cellpadding="0" cellspacing="0">
<tr>
<?php
for ($i=0; $i < count($data['heure']); $i++)
{
if ($i % 2)
{
echo '<tr><td width="90" height="40" valign="top" class="maclass1">' . $i . ' - ' . $data['heure'] . '</td>';
echo '<td width="350" valign="top" class="maclass1">' . $i . ' - ' . $data['type'] . '</td>';
echo '<td width="90" valign="top" class="maclass1">' . $i . ' - ' . $data['prix'] . '</td></tr>';
}
else
{
echo '<tr><td width="90" height="40" valign="top" class="maclass2">' . $i . ' - ' . $data['heure'] . '</td>';
echo '<td width="350" valign="top" class="maclass2">' . $i . ' - ' . $data['type'] . '</td>';
echo '<td width="90" valign="top" class="maclass2">' . $i . ' - ' . $data['prix'] . '</td></tr>';
}
}
?>
</tr>
</table>
<?
}
mysql_close();
?>
Dans la boucle j'ai mis
for ($i=0; $i < count($data['heure']); $i++)
qui donne
http://sceno.fr/v3/index.php?page=ag_fev06 donc la je m'approche pas mal de ce que je veux sauf que j'ai pas un CSS différent une ligne sur deux (en gros ce que je veux faire depuis deux jours en vain!!) par contre avec cette boucle
for ($i=0; $i <=10; $i++)
j'ai bien un CSS différent une ligne sur deux mais les memes données se répètent et j'arrive pas à modifier ca... en gros je nage complètement !!