[RESOLU] Choisir des couleurs depuis un formulaire

Fredy
Invité n'ayant pas de compte PHPfrance

13 mai 2008, 09:33

Code : Tout sélectionner

Parse error: syntax error, unexpected T_ELSE in /mnt/106/sdb/f/c/lovefriend/coran/phrase.php on line 45
<?php  
session_start();   
?>  
<html><body text="black">   
<?  
$_SESSION['couleurs'] = $_POST['couleurs'];   
$couleurs = $_SESSION['couleurs'];    

if (!$couleurs) {  

?>  
  
<form method="post" action="<?php echo $PHP_SELF;?>" name="form1">  
<SELECT NAME="couleurs" SIZE="1" onchange="this.form.submit();" >  
<OPTION VALUE="">-------Choose a Selection-------  
<OPTION VALUE="Red">Red  
<OPTION VALUE="Yellow">Yellow  
<OPTION VALUE="Green">Green  
<OPTION VALUE="Purple">Purple  
</SELECT>  
</FORM>  
<?  
}   
// information pour la connection à le DB
$host = '';
$user = '';
$pass = '';
$db = '';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT phrase FROM livre';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

else {  


// si on a récupéré un résultat on l'affiche.
if($total) {
    // début du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Phrase</u></b></td>';
        echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC"><font color="$couleurs">'.$row['phrase'].'</font></td>';
        echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.
}
}  
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);

?>
</body>
</html>    

Eléphant du PHP | 74 Messages

13 mai 2008, 14:46

Je pense que tu t'es un peu mélanger dans les conditions... les else sont mal placé

<?php  
session_start();   
?>  
<html><body text="black">   
<?  
$_SESSION['couleurs'] = $_POST['couleurs'];      

if (!$_SESSION['couleurs']) {  

?>  
  
<form method="post" action="<?php echo $PHP_SELF;?>" name="form1">  
<SELECT NAME="couleurs" SIZE="1" onchange="this.form.submit();" >  
<OPTION VALUE="">-------Choose a Selection-------  
<OPTION VALUE="Red">Red  
<OPTION VALUE="Yellow">Yellow  
<OPTION VALUE="Green">Green  
<OPTION VALUE="Purple">Purple  
</SELECT>   
</FORM> 
<?  
}   
else 
{
   // information pour la connection à le DB 
   $host = ''; 
   $user = ''; 
   $pass = ''; 
   $db = ''; 

   // connection à la DB 
   $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 
   mysql_select_db($db) or die ('Erreur :'.mysql_error()); 

   // requête SQL qui compte le nombre total d'enregistrements dans la table et qui 
   //récupère tous les enregistrements 
   $select = 'SELECT phrase FROM livre'; 
   $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); 
   $total = mysql_num_rows($result); 
   


   // si on a récupéré un résultat on l'affiche. 
   if($total) 
   { 
    // début du tableau 
    echo '<table bgcolor="#FFFFFF">'."\n"; 
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes 
        echo '<tr>'; 
        echo '<td bgcolor="#669999"><b><u>Phrase</u></b></td>'; 
        echo '</tr>'."\n"; 
           // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.     
           while($row = mysql_fetch_array($result)) 
           { 
             echo '<tr>'; 
             echo '<td bgcolor="#CCCCCC"><font color="$couleurs">'.$row['phrase'].'</font></td>'; 
             echo '</tr>'."\n"; 
           } 
    echo '</table>'."\n"; 
    // fin du tableau. 
    }   
    else 
    {
       echo 'Pas d\'enregistrements dans cette table...'; 
    }

   // on libère le résultat 
   mysql_free_result($result); 
}


?> 
</body> 
</html> 

J'ai pas testé mais bon tu peux déjà voir si ca donne quelque chose ... Essaye de mettre en forme ton code en décalent tes conditions par exemple quand tu en a plusieurs c'est plus facile pour la lisibilité et la compréhension.

Fredy
Invité n'ayant pas de compte PHPfrance

13 mai 2008, 15:22

Je l ai deja teste et le contenu de select * n'apparait pas, seulement le menu apparait, et quand je choisi une couleur, la phrase apparait mais sans aucune affectation :(

Eléphant du PHP | 74 Messages

13 mai 2008, 16:34

Je l ai deja teste et le contenu de select * n'apparait pas, seulement le menu apparait, et quand je choisi une couleur, la phrase apparait mais sans aucune affectation :(
Je ne comprends pas bien ton explication 'contenu du select qui n'apparait pas ?' et la 'phrase sans affectation ' ? est-ce que tu veux dire que tu ne vois pas de phrase ? ou que la couleur n'est pas celle choisit ?

pour la couleur c'est par ce que j'ai supprimé $couleurs plus haut. remplace par $_SESSION['couleurs'] ou remet $couleurs au début du script :)
 echo '<td bgcolor="#CCCCCC"><font color="$_SESSION['couleurs']">'.$row['phrase'].'</font></td>';

Invité
Invité n'ayant pas de compte PHPfrance

13 mai 2008, 18:21

quand j'ouvre ma page, le menu seulement apparait, et quand je choisis la couleur, le menu disparait et les couleurs ne se changent pas

Eléphant du PHP | 74 Messages

13 mai 2008, 18:45

quand j'ouvre ma page, le menu seulement apparait, et quand je choisis la couleur, le menu disparait et les couleurs ne se changent pas
Pour la couleur c'est normal, as tu essayer ce que j'ai dit dans mon précédent post ? pour le reste c'est aussi normal puisque c'est comme ca que le script est défini. Comme nous ne sommes pas dans ta tête il faudrait nous dire ce que tu cherches a faire. Est-ce que le texte doit être afficher avec le menu au premier chargement de la page ? ou dois on voir autre chose ?

Invité
Invité n'ayant pas de compte PHPfrance

13 mai 2008, 18:54

bon je m explique mieux:, quand j ouvrais ma page je dois avoir le menu et les phrases comme ci-dessous:

le menu serait ici

la phrase1
la phrase2
la phrase3

et quand je choisi la couleur, la couleur se change sans que le menu disparaissait

Eléphant du PHP | 74 Messages

13 mai 2008, 21:42

Bon alors si le texte et le menu apparaissent toujours tu n'as pas besoin de conditions

<?php  
session_start(); 
$_SESSION['couleurs'] = isset($_POST['couleurs']) ? $_POST['couleurs'] : 'black';    
?>  
<html><body>   
<form method="post" action="<?php echo $PHP_SELF;?>" name="form1">  
<SELECT NAME="couleurs" SIZE="1" onchange="this.form.submit();" >  
<OPTION VALUE="">-------Choose a Selection-------  
<OPTION VALUE="Red">Red  
<OPTION VALUE="Yellow">Yellow  
<OPTION VALUE="Green">Green  
<OPTION VALUE="Purple">Purple  
</SELECT> <br />
<?php 

   // information pour la connection à le DB 
   $host = ''; 
   $user = ''; 
   $pass = ''; 
   $db = ''; 

   // connection à la DB 
   $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); 
   mysql_select_db($db) or die ('Erreur :'.mysql_error()); 

   // requête SQL qui compte le nombre total d'enregistrements dans la table et qui 
   //récupère tous les enregistrements 
   $select = 'SELECT phrase FROM livre'; 
   $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); 
   $total = mysql_num_rows($result); 
   
   // si on a récupéré un résultat on l'affiche. 
   if($total) 
   { 
    // début du tableau 
    echo '<table bgcolor="#FFFFFF">'."\n"; 
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes 
        echo '<tr>'; 
        echo '<td bgcolor="#669999"><b><u>Phrase</u></b></td>'; 
        echo '</tr>'."\n"; 
           // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.     
           while($row = mysql_fetch_array($result)) 
           { 
             echo '<tr>'; 
             echo '<td bgcolor="#CCCCCC"><font color="'.$_SESSION['couleurs'].'">'.$row['phrase'].'</font></td>'; 
             echo '</tr>'."\n"; 
           } 
    echo '</table>'."\n"; 
    // fin du tableau. 
    }   
    else 
    {
       echo 'Pas d\'enregistrements dans cette table...'; 
    }

   // on libère le résultat 
   mysql_free_result($result); 


?> 
<br />
</FORM> 
</body> 
</html>

Mais je pense qu'il serait plus avantageux de faire ce genre de chose en Ajax

Fredy
Invité n'ayant pas de compte PHPfrance

14 mai 2008, 16:07

ca marche bien, je pense que je dois ajouter un code en tete de la page pour garder la meme couleur en pagination

Fredy
Invité n'ayant pas de compte PHPfrance

14 mai 2008, 16:48

voila je le developpe en couleurs, fonts et tailles ainsi:
<?
session_start(); 
$_SESSION['fonts'] = isset($_POST['fonts']) ? $_POST['fonts'] : 'Arial';
$_SESSION['size'] = isset($_POST['size']) ? $_POST['size'] : '4';
$_SESSION['couleurs'] = isset($_POST['couleurs']) ? $_POST['couleurs'] : 'black';  
?>
echo '<font face="'.$_SESSION['fonts'].'" size="'.$_SESSION['size'].'" color="'.$_SESSION['couleurs'].'">'.$phrase. '</font>';
Apparament il y a une confusion entre ces code, par exemple:

quand je veux choisir font1 avec taille3 et couleur6, je les selectionne et ca doit etre en cet ordre:

Code : Tout sélectionner

<font face="font1" size="taille3" color="couleur6">ma phrase ici</font>
mais apparament il me donne un resultat comme ca a la fin de ma selection:

Code : Tout sélectionner

<font face="font2" size="taille4" color="couleur6">ma phrase ici</font>
il garde seulement la derniere selection et les autres reviennent au normal

Eléphant du PHP | 74 Messages

14 mai 2008, 21:18

Tu ne nous donne les infos que par petit bout. On ne vois pas ton code... est-ce que tu es sur de tes select ? je pense que le souci doit etre à cet endroit. Puisque tu dois avoir plusieurs select, il faut enlevé l'événement "onchange" et mettre un "input" de type button ou submit.

Fredy
Invité n'ayant pas de compte PHPfrance

16 mai 2008, 12:36

j ai mis le code ainsi:
<?
session_start(); 
$_SESSION['fonts'] = isset($_POST['fonts']) ? $_POST['fonts'] : 'Tahoma';
$_SESSION['size'] = isset($_POST['size']) ? $_POST['size'] : '4';
$_SESSION['couleurs'] = isset($_POST['couleurs']) ? $_POST['couleurs'] : 'Black';  
?>
et dans la form comme suite:

 <form action="<? $_SERVER['PHP_SELF'] ?>" METHOD="post"> 
<table width="500" border="0" align="center">
  <tr>
    <td>
  <select name="fonts" size="1">  
  <option>Fonts</option>
  <option value="Times New Roman">Times New Roman</option>
  <option value="Tahoma">Tahoma</option>
  <option value="Arial">Arial</option>
  </select>
    </td>
    <td>
  <select name="size" size="1">
  <option>Taille</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="10">10</option>
  </select>
    </td>
    <td>

  <select name="couleurs" size="1">
  <option>couleurs</option>
  <option value="Red">Red</option>
  <option value="Blue">Blue</option>
  <option value="Green">Green</option>
  <option value="White">White</option>
  </select>

<input type="submit" class="button" value=go />
 </form>
et pour le moment ca bug pas, merci beaucoup b.jerome

Fredy
Invité n'ayant pas de compte PHPfrance

16 mai 2008, 12:37

Hmmmmm ca bug quand je change de page, en mode de pagination

Fredy
Invité n'ayant pas de compte PHPfrance

18 mai 2008, 16:19

Comment garder les meme criteres de selection dans ma pagination, la je les perds quand je change de de page

Eléphant du PHP | 224 Messages

18 mai 2008, 19:40

Bonjour :)
Comment garder les meme criteres de selection dans ma pagination, la je les perds quand je change de de page
Bon, je n'ai pas suivi tout l'échange, mais sur cette question je peux te donner une ou deux pistes...

Voici un formulaire assez basique, avec un menu-popup et un bouton de validation :
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
	<select name="choix" id="choix">
	<option value="0">Choisissez une Option</option>
	<option value="1">1. Un</option>
	<option value="2">2. Deux</option>
	<option value="3">3. Trois</option>
	<option value="4">4. Quatre</option>
	<option value="5">5. Cinq</option>
	</select>
	<input type="submit" name="test" value="Valider" />
</form>
Maintenant, on souhaite afficher le choix de l'utilisateur, à chaque recharge de la page ou d'une page à l'autre du site, voici une proposition de code Php pour faire ça :
<?php
// Pour afficher la selection du menu
$selected = ' selected="selected"';
// Valeur par defaut du menu
$defaut = 0;
// Session
session_start();  

// Si le formulaire a ete valide, on prend sa valeur
// et on la memorise dans la session
if (isset($_POST['test'])) {
	$choix = $_POST['choix'];
	$_SESSION['choix'] = $choix; 

// Si le formulaire n'a pas ete valide 
// et que la session existe, on prend sa valeur
} elseif (isset($_SESSION['choix'])) {
	$choix = $_SESSION['choix'];

// Sinon, on prend la valeur par defaut
} else {
	$choix = $defaut;
}
?>
Enfin, on doit modifier notre formulaire de départ pour pouvoir afficher le choix de l'utilisateur sur le menu-popup, voici ce que ça donnerait :
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
	<select name="choix" id="choix">
	<option value="0"<?php if ($choix == 0) { echo $selected; } ?>>Choisissez une Option</option>
	<option value="1"<?php if ($choix == 1) { echo $selected; } ?>>1. Un</option>
	<option value="2"<?php if ($choix == 2) { echo $selected; } ?>>2. Deux</option>
	<option value="3"<?php if ($choix == 3) { echo $selected; } ?>>3. Trois</option>
	<option value="4"<?php if ($choix == 4) { echo $selected; } ?>>4. Quatre</option>
	<option value="5"<?php if ($choix == 5) { echo $selected; } ?>>5. Cinq</option>
	</select>
	<input type="submit" name="test" value="Valider" />
</form>
Voilà, en te basant sur cet exemple, je pense que tu arriveras à modifier ton code pour arriver à obtenir le fonctionnement que tu souhaitais... je l'espère du moins ;) :D

à+ :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)