8796 sujets

Développement web côté serveur, CMS

Bonjour à tous.

Pouvez-vous prendre le temps de m'aider ?
Voilà mon souci.
C'est une page de type formulaire de contact "contact00.php".
La 2e partie de code se trouve bien sûr entre les balises <form><table> et </table></form>
Il y a bien sûr un bouton d'envoi en bout de formulaire...

Tout fonctionne sauf pour les boutons radio de "vousetes".
En effet, je n'arrive pas à jaunir (#faf0c5) la cellule en cas d'absence de réponse au 2e passage (et pas au premier passage)...
Elle reste toujours orangée (#f29400).

Vous l'aurez compris, la cellule doit être orangée au premier passage du formulaire, vu que tout est normal (pas d'oubli de zone obligatoire !).

Et si, aux passages suivants, aucun des 2 boutons radio n'a été cliqué, il faudrait que la cellule jaunisse (afin que l'utilisateur sache qu'il a oublié de cliquer sur l'un des boutons radio).

Par contre si, aux passages suivants, un des boutons (et un seul) a été cliqué, il faudrait que la cellule soit orangée (vu que la situation est normale pour la réception du mail de contact).

Pouvez-vous m'aider à résoudre ce problème ?
D'avance merci.


<?php
ob_start();
if (isset($_POST['envoi'])) {
	$vousetes = trim($_POST['vousetes']);
	$nom = trim($_POST['nom']);
	$prenom = trim($_POST['prenom']);
	$societe = trim($_POST['societe']);
	$localite =  trim($_POST['localite']);
	$pays = trim($_POST['pays']);
	$tel =  trim($_POST['tel']);
	$email1 = trim($_POST['email1']);
	$concerne = trim($_POST['concerne']);
	$message = trim($_POST['message']);
	$nom=ucwords(strtolower($nom));
	$prenom=ucwords(strtolower($prenom));
	$societe=ucwords(strtolower($societe));
	$localite=ucwords(strtolower($localite));
	if ((strlen($vousetes)>0) AND (strlen($nom)>0) 
		AND (strlen($localite)>0) AND ($pays!="XX")
		AND (strlen($tel)>0) AND (strlen($email1)>0)
		AND (strlen($message)>0)) {
			// envoi du mail après validation de l’adresse…
	}
}
ob_end_flush();
?>


et plus loin dans le code de la page php...


<tr>
   <td>Vous êtes<span class="rouge">*</span></td>
   <td colspan="3" valign="middle" <?php echo ((!isset($_POST['vousetes'])) OR (!empty($_POST['vousetes'])))?'style="background-color:#f29400"':'style="background-color:#faf0c5"'; ?>>
	<label><input type="radio" name="vousetes" id="vousetes" value="Professionnel" <?php echo ($_POST['vousetes']=="Professionnel")?checked:"";?>> Professionnel</label>
        <label><input type="radio" name="vousetes" id="vousetes" value="Particulier" <?php echo ($_POST['vousetes']=="Particulier")?checked:"";?>> Particulier</label>
    </td>
</tr>

Modifié par jytest (28 Jun 2011 - 12:47)
Tu devrais plutôt tester si le formulaire a été posté et si la variable "vousetes" est vide.

Ce qui donne :


<?php echo isset($_POST['envoi']) && empty($_POST['vousetes']) ? 'style="background-color:#f29400"' : 'style="background-color:#faf0c5"'; ?>
Merci cela fonctionne... à merveille !!!
Pourquoi ma solution ne fonctionne pas ?
Que soit, ta solution va nickel !!!
Merci.
Tu faisais :

!isset($_POST['vousetes']) -> si la variable n'existe pas
OU
!empty($_POST['vousetes']) -> si la variable existe ET n'est pas vide

Si on simplifie ça dit : fait un truc si la variable n'existe pas OU si elle existe. Ce qui est toujours vérifié quoi qu'il arrive.

Il faut savoir qu'en internet isset() et empty(), pour PHP c'est la même chose, avec juste un test supplémentaire pour empty() (à savoir si la valeur de la variable n'est pas NULL, '', FALSE, 0 ou '0').

Donc si tu testes une seule et même variable faire un isset() suivi d'un empty() ça ne sert à rien, tu fais 2 fois la même opération.

Donc tu simplifies en utilisant que empty().
Modifié par jb_gfx (28 Jun 2011 - 13:04)