mise en forme PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : mise en forme PHP

par epilogg » 14 déc. 2005, 14:38

ca parait tellement logique d'un coup la :agenouille:

merci beaucoup sadek! :pouce:

par sadeq » 14 déc. 2005, 14:29

Attention, Zorro arrive :
tu dois abondonner ton for parcequ'il est inutile puisque tu as déjà le while indiponsable pour pomper toutes les lignes résultats de la requête.

il te suffit $i comptant les lignes dans le while et d'un saut par 2 pour appliquer les 2 styles alternatifs.

En suite, la table HTML doit être ouverte avant la boucle et fermée après.

Correction:
<style> 
            .maclass1 {background-color: #FFF000;} 
            .maclass2 {background-color: #000fff;} 
</style> 

<table width="530" border="0" cellpadding="0" cellspacing="0">
<?php 
//Début de la table HTML

     //Ouvrir la base de données et exécuter SQL
     mysql_connect('localhost','root',''); 
     mysql_select_db('v3_essai'); 
     $requete='SELECT heure,type,prix FROM ag_fev1 ORDER BY ID'; 
     $var = mysql_query($requete) or die; 
    
     //compteur de lignes initialisé
    $i = 0;
    
    //Parcourir toutes les lignes du résultat de la requête
    while ($data=mysql_fetch_assoc($var)) 
    { 
        //Appliquer les styles alternatifs selon un pas de 2 lignes
        if ($i % 2)  // veut dire $i est un multiple de 2
            { 
                //Appliquer le style maclass1
                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 
            { 
                 //Appliquer le style maclass2
                 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>'; 
            } 
    
   //Compter une ligne imprimée
   $i++;
         
   } //fin du while
    
    //Fermer la base de données
    mysql_close(); 

//Fin de la table
?> 
</table>	

par epilogg » 14 déc. 2005, 14:23

chais pas, je fais plein de tentatives, j'ai remarqué qu'en mettant ca, ca se rapprochait plus de ce que je voulais au final ! :-"

par Cyrano » 14 déc. 2005, 14:00

Un détail m'intrigue:
//...
for ($i=0; $i <= +1; $i++)
//...
C'est quoi le +1 ??

par epilogg » 14 déc. 2005, 13:54

ca s'approche....

<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 ORDER BY ID';
	
	$var = mysql_query($requete) or die;
	while ($data=mysql_fetch_assoc($var))
	{
	?>

  

<table width="530" border="0" cellpadding="0" cellspacing="0">
<tr>
<?php echo count($data['heure']);
        for ($i=0; $i <= +1; $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();
		
	?> 
qui donne : http://sceno.fr/v3/index.php?page=ag_fev06

c'est nickel, juste un problème, chaque événement est inscrit en doublon... j'avance, je recule ou je stagne à votre avis ??!

par mere-teresa » 14 déc. 2005, 12:53

Apparemment $i reste à 0.
Donc fais des vérifications :
echo $i à l'intérieur de la boucle for et avant ton test if
S'il reste à zéro, interroge toi sur la longueur du tableau $data['heure'] (en pratique fais afficher le count($data['heure'] avant la boucle for)

par epilogg » 14 déc. 2005, 12:51

aller on rattaque ! zarabotak.com

Perso, je préfère la premiere méthode, parce qu'au moins je la comprends ! :oops: 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 !!

par mere-teresa » 13 déc. 2005, 19:09

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.

par epilogg » 13 déc. 2005, 18:28

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 :evil:
toutes les idées sont les bienvenues (exceptées toutes celles qui ont trait à la complexité de faire pousser des patates sur mars :? )

par mere-teresa » 13 déc. 2005, 13:59

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

par epilogg » 13 déc. 2005, 13:41

Merci Cyrano :wink:

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

par Cyrano » 13 déc. 2005, 12:39

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>

par epilogg » 13 déc. 2005, 12:31

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

par mere-teresa » 13 déc. 2005, 12:21

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 ?

par epilogg » 13 déc. 2005, 12:13

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