conditions imbriquée

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 : conditions imbriquée

par seayoung » 23 mai 2005, 09:55

je l ai toujours dit :p
et comme ta citation
tout ce qui se conçoit bien s'énonce clairement
Et les mots pour le dire nous viennent aisément...
:lol:

par Cyrano » 20 mai 2005, 19:09

Je suis certain que tu comprends d'autant mieux ma signature :langue:

par seayoung » 20 mai 2005, 17:25

c'est ce que j ai fini par faire ....
mais sauf que j ai po toucher son truc j ai fait a ma sauce avant
enfin comme pour un formulaire normale :lol:
et c'est bon ca marche.
bon ca mériterait de tout reprendre mais j ai pas le tps il faut que je termine ca dans moins d une heure donc c speed ....
Merci en tout cas de t'etre pris la tete avec moi ....
Voila une leçon que l on peu tirer de tout ca ...
CODER PROPREMENT ET SIMPLEMENT :
ca vous simplifie la vie
et surtout ca simplifie la vie de la personne qui aura a y retoucher ..

merci encore Cyrano

par Cyrano » 20 mai 2005, 16:25

Bon, ben c'est pas compliqué, vire moi tout ce traitement exotique et reprends à zéro à partir du système de mon formulaire perso:
-1- vérifier que le bouton d'envoi a été cliqué
-2- récupérer les variables $_GET ou $_POST
-3- Traiter
-4- Si erreur, rafficher le formulaire ou autre traitement
-5- Si ok traitement normal
-6- Si bouton non cliqué affichage normal du formulaire.

Tu ira plus vite comme ça qu'à essayer de décrypter du code non commenté d'un autre.

par seayoung » 20 mai 2005, 16:17

je t ai dit je devais reprendre le code de qq1 d'autre je n ai pas généré ce code. Car effectivement si j avais du le faire d'origine je ne serais surement pas passé comme ca ....
Je suis d'acc avec toi c un pe la m*** mais je me voyais mal tout reprendre ( ou la féniantise est un tres vilain défaut)
mais bon ...
merci d avoir essayer je vais tenter de me dépatouiller .
v voir avec le père de ce p*** code :p

PS si rien est rempli le message d'erreur s'affiche .
Si le premier champ est rempli ca marche
Si le premier champ n'est pas rempli et que les autres oui ca passe pas...
en gros c'est ca mon problème

par Cyrano » 20 mai 2005, 16:13

J'essaye de comprendre ce que tu veux faire et j,avoue que je perds pieds: où je me trompe fort, ou tu as l'art de te mettre tout seul dans une m**** sans nom jusqu'aux oreilles pour un truc qui me semble relativement simple à traiter. Là, je vois mieux pourquoi ton truc peut patiner, je capte pas trop le fouillis.

Pourrais-tu essaye de m'expliquer ce que tu veux faire si tous les champs sont vides et quoi dans les autres cas, on va te régler ton problème en deux coups de cuiller à pot sans s'emm***** avec des foreach et de l'abstraction: tu traites 5 champs, pas un formulaire de deux cent pages.

par seayoung » 20 mai 2005, 16:00

bon oké
je comprend il était déja dure pour moi de comprendre le code ( code repris pour "amélioration" car il était incomplet).
si j'avais du le fair je ne l aurait pas fait comme ca.
ce que je vais faire c'est te mettre le début de mon code ainsi que le formulaire :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">


<head>
	<title>Demande de Rachat de credit</title>
	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
	<link href="RacCSS.css" rel="stylesheet" type="text/css" />
</head>


<body>
<?php

// -- Déclaration des variables -------------------------------
//

$form_ok = '1';

$_REQUEST['valid'] = isset($_REQUEST['valid']) ? $_REQUEST['valid'] : '';

$champs2 = array ('voiture','travaux','autre1','autre2','autre3','Projet','Montant');
$chs2 = array(
		'voiture' => ' Voiture',
		'travaux' => 'Travaux',
		'autre1' => ' Autre1',
		'autre2' => 'Autre2',
		'autre3' => 'Autre3',
		);

$chs = array(
		'Projet' => 'Non du projet',
		'Montant' => 'Montant du nouveau projet',
		'mail' => 'E Mail'
		);

$val = array();

$chps_manquant = '';

$error = '';

// Pour chaque champ, examine la valeur du formulaire  --------------
foreach ($champs2 as $champ)
{
	if(!isset($_REQUEST[$champ]) or $_REQUEST[$champ] == '')
	{
		$val[$champ] = '';

		if  (empty($val['voiture']) && empty($val['travaux']) && empty($val['Cred_autre1']) && empty($val['autre2'])
			 && empty($val['autre3']) )
			{
				$manquant=$chs2['voiture']." ou ".$chs2['travaux']." ou ".$chs2['autre1']." ou ".$chs2['autre2']
				." ou ".$chs2['autre3'];
				$form_ok='';
							
			}
		if (!empty($val['Projet']) && empty ($val['Montant']))
			{
				if (isset($manquant))
				{
					$manquant=$chs['Montant'].", ".$manquant;
					$form_ok='';
				}
				else 
				{
					$manquant1=$chs['Montant']; 
					$form_ok='';
				}
			}
	}
	else
	$val[$champ]=$_REQUEST[$champ];
}

if ($form_ok <> "1")
{

// le formulaire:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
<fieldset>
	<legend>formulaire</legend>
	<table cellspacing="5" border="0">
		<tr></tr>
		<tr>
		<td class="label" >
                     <label for="voiture"> voiture&nbsp;:</label>
                </td> 
		<td class="input">
		     <input name="voiture" id="voiture" value="<?php echo $val['voiture']; ?>" tabindex="12" onfocus="this.className='focus';" onblur="this.className='normal';" />
		</td>
		</tr>
		<tr>
		<td class="label"><label for="travaux">travaux&nbsp;:</label></td> 
		<td class="input">
		      <input name="travaux" id="travaux" value="<?php echo $val['travaux']; ?>" tabindex="13" onfocus="this.className='focus';" onblur="this.className='normal';" />
		</td>
		</tr>
		<tr>
		<td class="label"><label for="autre1">Autres Cr&eacute;dits&nbsp;:</label></td> 
		<td class="input">
		        <input name="autre1" id="autre1" value="<?php echo $val['autre1']; ?>" tabindex="14" onfocus="this.className='focus';" onblur="this.className='normal';" />
		</td>
		</tr>
		<tr>
		<td class="label"><label for="autre2">&nbsp;</label></td> 
		<td class="input">
		      <input name="autre2" id="autre2" value="<?php echo $val['autre2']; ?>" tabindex="15" onfocus="this.className='focus';" onblur="this.className='normal';" />
		</td>
		</tr>
		<tr>
		<td class="label"><label for="autre3">&nbsp;</label></td> 
		<td class="input">
		<input name="autre3" id="autre3" value="<?php echo $val['autre3']; ?>" tabindex="16" onfocus="this.className='focus';" onblur="this.className='normal';" />
		</td>
		</tr>
	</table>
</fieldset>
<div id="piedForm"><input type="submit" name="submit" value="" id="valid" /></div>
</form>
}

if($form_ok=='1')

{
//bien rempli
}

voila le code un pe allégé ;) en espérant que ca puisse un pe t éclairer

par Cyrano » 20 mai 2005, 15:39

Ce qui se conçoit bien s'énonce clairement
Et les mots pour le dire nous viennt aisément...
On est pas sortis de l'auberge ...

Avec juste ces tout petits bouts de code, il m'est difficile de comprendre quoique ce soit. Commence par le début: dans le formulaire, tu as ou non des valeurs par défaut dans les zones de saisies ou des champs cachés: La première chose à déterminer, c'est ce qui est exactement transmis si par exemple on ne touche à rien d'autre que le bouton [Submit] : Si il y a des valeurs, établis les règles de validation à partir ce ces valeurs ou des zones vides.

Quand tu auras établi ce schéma, à mon avis tu découvriras toi-même pourquoi ça bafouille.

par seayoung » 20 mai 2005, 15:27

pour te résumer l'esprit du code :
j ai trois tableaux:
$champs[] ou je stoke le résutat des valeur de mon formulaire
$chps[] ou je met a koi correspond les champs du formulaire pour mon message d erreur.
et un qui est telque: $val=array()

dans ma boucle j 'attribue les valeur de $champs a une valeur quelconque $champ
foreach ($champs2 as $champ)
toutefois dans ma boucle de vérification au lieu de mettre quelque chose comme :
if ($champ=='val1' && !empty($champs[$champ]))
je suis passé directement a :
if ($val['val1'])
voila en gros le code. ou du moins son esprit :p

par Cyrano » 20 mai 2005, 15:04

Si dans ton formulaire tu as un champ avec une attribut value="valeur_quelconque", il est normal que tu la retrouve puisqu'elle est envoyée par défaut. : tu peux donc la traiter aussi et vérifier si c'est la valeur par défaut ou autre chose: si c'est par défaut, tu traite d'une manière, sinon, d'une autre manière

par seayoung » 20 mai 2005, 14:58

voila entre aute ce que ca m'affiche
["val1"]=>
string(0) ""
["val2"]=>
string(5) "fgcuj"
["val3"]=>
string(0) ""
["val4"]=>
string(0) ""
["val5"]=>
string(0) ""
["submit"]=>
string(0) ""

donc c bon j'ai bien un champ qui est renseigné ..
moi rien comprendre la :cry:

par Cyrano » 20 mai 2005, 14:51

Juste avant la boucle, essaye donc un truc:
<?php
echo("<pre>");
var_dump($_REQUEST);
echo("</pre>\n");
ÇA va faire afficher le contenu exact de cette variable, tu seras fixé sur le contenu exact.

par seayoung » 20 mai 2005, 14:39

je vais te laisser un pe plus de mon code ca va pe etre aider :
//champs2 : tableau ou sont stoker les valeur du formulaire
foreach ($champs2 as $champ)
{
//si le champ du formulaire est rempli ou si il est nul 
	if(!isset($_REQUEST[$champ]) or $_REQUEST[$champ] == '')
	{
// on initialise les valeur 
		$val[$champ] = '';
// on effectue la condition
		if (!isset($var1['val1']) && !isset($varl['val1']) && 
			!isset($var1['val2']) && !isset($var1['val2'])
{
//la condition
}
//la suite du prog

par seayoung » 20 mai 2005, 14:34

c'est pareil mais pire je ne comprend pas.
elle ne marche pas je ne voit pas pourkoi car plus loin je fais un echo de mes variable pour etre sure qu'elles existe il me les met mais ma condition
if (!isset($val['val']) && !isset($val['val2']))
// ou
if ((!isset($var1) || $var1 == "") && (!isset($var2) || $var2 == ""))
// ou encore 
if (empty($val['val1']) && empty($val['val2'])) //qui reste celle qui \"marche\" le mieux
ne fonctionne jusqu'au bout
la je seche complet !!!!

par Cyrano » 20 mai 2005, 14:21

Bon attends, il y a deux choses: if(isset($var)) et if($var == "") : rien ne t'interdit de vérifier les deux:
<?php
if((!isset($var1) || $var1 == "") && (!isset($var2) || $var2 == ""))
{
    // traitement si toutes les conditions sont réunies
}
?>
C'est une autre possibilité plus stricte au cas où tu aurais des variables initialisées mais avec des chaines vides.