Accolade de fin if bloque l'enregistrement

Résolu
bruno3591 Messages postés 155 Date d'inscription   Statut Membre Dernière intervention   -  
artragis Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Comment faire pour pouvoir jouer les autres if de mon script, sachant que l'accolade du premier if placé à la fin du script, bloque tous les autres ? Si je ne place pas cette accolade à la fin du script, j'ai une erreur sql et je vois les formulaires avant rechargement.

Le but en arrivant sur la page est de faire une sélection, puis, au rechargement, voir tous les formulaires s'afficher.

Si je place l'accolade de fin de liste à la fin du script, j'obtient l'effet visuel voulu mais aucun formulaires ne fonctionnent. Si je place l'accolade à la fin de son if j'obtient une erreur sql mais je peux faire une sélection dans la liste, les formulaires s'affichent et ils fonctionnent.

J'ose vous mettre le code qui est tout de même très long :

<?php
if(isset($_POST['liste1'])){
//si la liste a été "postée" c'est à dire choix fait
$liste1=$_POST['liste1'];
}else{
$liste1=-1;
}
?>

<legend>Sélectionnez un chariot :</legend>

<form name="form1" method="post" action="">
<select name="liste1" onchange=" form1.submit();">
<option value=-1>-- Choisissez -- </option> <!-- il faut cette ligne pour avoir obligatoirement un changement -->
<?php

include('connection.inc.php');

$requete = "SELECT n_parc FROM chariot";
$execution_requete = mysql_query($requete);
while($total = mysql_fetch_array($execution_requete))

//Liste déroulante
{
echo "<option value=\"".$total["n_parc"]."\"";
if($liste1==$total['n_parc']) { echo "selected"; }//ça c'est pour garder la selection lors du réaffichage
echo ">".$total['n_parc']."</option>\n";
}

?>
</select>
</form>


<?php
if($liste1 != -1){ //si on a fait un choix
//on refait une requette avec une condition
$requete = "SELECT type, energie, marque, modele, n_serie, annee, n_parc, idchariot FROM chariot WHERE n_parc ='".$liste1."'";
$execution_requete = mysql_query($requete);

// on affiche les valeurs correspondantes au nom selectionné, pas besoin de boucle while, on ne récupère qu'un seul enregistrement
$total = mysql_fetch_array($execution_requete);
// } si on déplace cette accolade plus bas ça a l'avantage de na pas afficher la partie Informations tant que le choix n'a pas été fait dans la lsite1
?>


<table border="1" cellspacing="0" cellpadding="8" align="left" bgcolor="#FFFFFF" >

<tr>
<td align="center" bgcolor="#FFFFFF"><b><u>Type</u></b></td>
<td align="center" bgcolor="#FFFFFF"><b><u>Energie</u></b></td>
<td align="center" bgcolor="#FFFFFF"><b><u>Marque</u></b></td>
<td align="center" bgcolor="#FFFFFF"><b><u>Modéle</u></b></td>
<td align="center" bgcolor="#FFFFFF"><b><u>N° série</u></b></td>
<td align="center" bgcolor="#FFFFFF"><b><u>N° parc</u></b></td>
<td align="center" bgcolor="#FFFFFF"><b><u>Année</u></b></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><?php echo $total['type'] ?></td>
<td bgcolor="#FFFFFF"><?php echo $total['energie'] ?></td>
<td bgcolor="#FFFFFF"><?php echo $total['marque'] ?></td>
<td bgcolor="#FFFFFF"><?php echo $total['modele'] ?></td>
<td bgcolor="#FFFFFF"><?php echo $total['n_serie'] ?></td>
<td bgcolor="#FFFFFF"><?php echo $total['n_parc'] ?></td>
<td bgcolor="#FFFFFF"><?php echo $total['annee'] ?></td>
</tr>
</table>
<input type="hidden" name="idchariot" value="<?php echo $total['idchariot'] ?>">



<br><br><br><br><br><br><br>

<?php
$idchariot = $total['idchariot'];
$requete1 = 'SELECT effectue, societe, idchariot FROM suivi_vr WHERE idchariot = '.$idchariot.' ORDER BY effectue DESC LIMIT 1';
$execution_requete1 = mysql_query($requete1) or die(mysql_error());
$total1 = mysql_num_rows($execution_requete1) or die(mysql_error());

if($total1) {
?>

<table border="0" cellspacing="0" cellpadding="5" align="left" bgcolor="#FEAE5E" >
<tr>
<td colspan="2" align="center" bgcolor="#FEAE5E"><b><u>VR 1</u></b></td>
</tr>
<tr>
<td align="center" bgcolor="#FEAE5E"><b><u></u>Date</b></td>
<td align="center" bgcolor="#FEAE5E"><b><u></u>Société</b></td>
</tr>
<tr>
<?php while($row = mysql_fetch_array($execution_requete1)) { ?>

<td align="center" bgcolor="#FEAE5E"><?php echo $row['effectue'] ?></td>
<td align="center" bgcolor="#FEAE5E"><?php echo $row['societe'] ?></td>
<td align="center" bgcolor="#FEAE5E"><b><u></u></b></td>
</tr>
<?php } ?>
</table>
<?php } ?>


<?php
$idchariot = $total['idchariot'];
$requete2 = 'SELECT effectue, societe, idchariot FROM suivi_vr2 WHERE idchariot = '.$idchariot.' ORDER BY effectue DESC LIMIT 1';
$execution_requete2 = mysql_query($requete2) or die(mysql_error());
$total2 = mysql_num_rows($execution_requete2) or die(mysql_error());

if($total2) {
?>
<table border="0" cellspacing="0" cellpadding="5" align="left" bgcolor="#CCCCCC" >
<tr>
<td colspan="2" align="center" bgcolor="#CCCCCC"><b><u>VR 2</u></b></td>
</tr>
<tr>
<td align="center" bgcolor="#CCCCCC"><b><u>Date</u></b></td>
<td align="center" bgcolor="#CCCCCC"><b><u>Société</u></b></td>
</tr>
<tr>
<?php while($row = mysql_fetch_array($execution_requete2)) { ?>

<td align="center" bgcolor="#CCCCCC"><?php echo $row['effectue'] ?></td>
<td align="center" bgcolor="#CCCCCC"><?php echo $row['societe'] ?></td>
<td align="center" bgcolor="#CCCCCC"><b><u></u></b></td>
</tr>
<?php } ?>
</table>
<?php } ?>

<br><br><br><br><br><br>

<div id="tableau1">

<strong>Choisissez une période pour chaque visite :</strong>
<form method="post" name="formu_periode_1" action="">
<table cellspacing="7" BORDER="0">
<tr>
<th bgcolor="#E9F19E">Période VR 1:</th>
</tr>
<tr>
<th>Entre le :</th>
<td><input type="text" name="entre_le" size="10" name="entre_le" id="entre_le" onfocus="view_microcal(true,entre_le,microcal,-1,0);" onblur="view_microcal(false,entre_le,microcal,-1,0);" onkeyup="this.style.color=testTypeDate(this.value)?'black':'red'"></TD>
<td><div id="microcal" style="visibility:hidden;position:absolute; top:57px; left:348px; border:0px red dashed;background:#abe85d;"></div></td>
<th>Et le :</th>
<td><input type="text" name="et_le" size="10" name="et_le" id="et_le" onfocus="view_microcal(true,et_le,microcal2,-1,0);" onblur="view_microcal(false,et_le,microcal2,-1,0);" onkeyup="this.style.color=testTypeDate(this.value)?'black':'red'"></TD>
<td><div id="microcal2" style="visibility:hidden;position:absolute; top:57px; left:348px border:0px red dashed;background:#abe85d;"></div></td>
</tr>
<tr>
<td align="left"><input type="submit" name="enregistrer1" value=" Valider " ></td>
</tr>
</table>
</form>
<?php
if (isset($_POST['enregistrer1']))
{
$debut_vr1 = $_POST['entre_le'];
$fin_vr1 = $_POST['et_le'];

$array_date_fr=explode("/",$debut_vr1); //explode en un array
$debut_vr=$array_date_fr[2]."-".$array_date_fr[1]."-".$array_date_fr[0]; // annee-mois-jour

$array_date_fr=explode("/",$fin_vr1); //explode en un array
$fin_vr=$array_date_fr[2]."-".$array_date_fr[1]."-".$array_date_fr[0]; // annee-mois-jour

$req_periode = mysql_query("INSERT INTO periode_visite_vr (debut_vr, fin_vr) VALUES ('$debut_vr', '$fin_vr')");
}
?>
</div>

<div id="tableau2">

<form method="post" name="formu_periode_2" action="">
<table cellspacing="7" BORDER="0">
<tr>
<th bgcolor="#CCCCCC">Période VR 2:</th>
</tr>
<tr>
<th>Entre le :</th>
<td><input type="text" name="entre_le" size="10" name="entre_le" id="entre_le" onfocus="view_microcal(true,entre_le,microcal3,-1,0);" onblur="view_microcal(false,entre_le,microcal3,-1,0);" onkeyup="this.style.color=testTypeDate(this.value)?'black':'red'"></TD>
<td><div id="microcal3" style="visibility:hidden;position:absolute; top:-67px; left:0px border:0px red dashed;background:#abe85d;"></div></td>
<th>Et le :</th>
<td><input type="text" name="et_le" size="10" name="et_le" id="et_le" onfocus="view_microcal(true,et_le,microcal4,-1,0);" onblur="view_microcal(false,et_le,microcal4,-1,0);" onkeyup="this.style.color=testTypeDate(this.value)?'black':'red'"></TD>
<td><div id="microcal4" style="visibility:hidden;position:absolute; top:-67px; left:0px border:0px red dashed;background:#abe85d;"></div></td>
</tr>
<tr>
<td align="left"><input type="submit" name="enregistrer2" value=" Valider " ></td>
</tr>
</table>
</form>

</div>


</div>

<div id="date_verif">

<form method="post" action="" name="formulaire" onsubmit="return validation()";>
<table cellspacing="1" BORDER="0">
<tr>
<th style="white-space: nowrap;" align="left">Date de la visite :<th>
<td><input type="text" name="effectue" id="effectue" size="15" onfocus="view_microcal(true,effectue,microcal5,-1,0);" onblur="view_microcal(false,effectue,microcal5,-1,0);" onkeyup="this.style.color=testTypeDate(this.value)?'black':'red'"></TD>
<td><div id="microcal5" style="visibility:hidden; position:absolute; border:0px red dashed; background:#abe85d;"></div></td>

<td><input type="hidden" name="idchariot" value="<?php echo $total['idchariot'] ?>"></td>
</tr>
<tr>
<th align="left">Socièté :<th>
<td><input type="text" name="societe" value="" size="15"></td>
</tr>
<tr>
<td><input type="submit" name="enregistrer3" value="Enregistrer"></td>
<td style="white-space: nowrap;"><input type= "checkbox" name="type1" value=""> VR 1</td>
<td style="white-space: nowrap;"><input type= "checkbox" name="type2" value=""> VR 2</td>
</tr>
</table>
</form>


<?php
if (isset($_POST['enregistrer3']))
{

$type1 = $_POST['type1'];
$type2 = $_POST['type2'];
$societe = $_POST['societe'];
$idchariot = $_POST['idchariot'];
$effectue1 = $_POST['effectue'];
$array_date_fr=explode("/",$effectue1); //explode en un array
$effectue=$array_date_fr[2]."-".$array_date_fr[1]."-".$array_date_fr[0]; // annee-mois-jour

if (isset($_POST['type1'])){

$req = mysql_query("INSERT INTO suivi_vr (idvr, effectue, societe, idchariot) VALUES ('', '$effectue', '$societe', '$idchariot')");
}

if (isset($_POST['type2'])){

$req2 = mysql_query("INSERT INTO suivi_vr2 (idvr, effectue, societe, idchariot) VALUES ('', '$effectue', '$societe', '$idchariot')");
}
}
?>

</div>

<?php
} // accolade de fin de if liste postee
?>


</div>
A voir également:

7 réponses

artragis Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   146
 
J'ai lu ton code, je l'ai plus ou moins compris (je suis encore débutant, mais l'essentiel est là) mais le code est si grand que je pense que je ne trouverai pas la faute comme ça.
Cependant, j'ai quand même fait un effort, j'ai copié ton code sur word, j'ai mis en petit tout le code superflu et en grand toutes les clauses if, else, while (les seules qui demande des accolades puisque c'est ça qui te gène)
constatation : tu as un nombre IMPAIR d'accolade, et ta dernière accolade, celle qui bogue n'a aucun couple, aucun "if" qu'elle doit fermer.

pour voir mon doc : https://accounts.google.com/ServiceLogin?service=wise&passive=1209600&continue=https://docs.google.com/document/d/1CqYERt0DZ3cp8uo3lyUXb_sioPoVzxe4P6KFHv7CinY/edit&followup=https://docs.google.com/document/d/1CqYERt0DZ3cp8uo3lyUXb_sioPoVzxe4P6KFHv7CinY/edit<mpl=docs
0
bruno3591 Messages postés 155 Date d'inscription   Statut Membre Dernière intervention   16
 
Merci beaucoup pour ton travail. Effectivement ça éclairci un peu la chose :)
De mon côté je trouve bien un nombre pair d'accolades, celle que tu dois compter en plus fait partit d'un commentaire :

// } si on déplace cette accolade plus bas ça a l'avantage de na pas afficher la partie Informations tant que le choix n'a pas été fait dans la lsite1

L'accolade de fin ferme ceci : if($liste1 != -1){ //si on a fait un choix
0
bruno3591 Messages postés 155 Date d'inscription   Statut Membre Dernière intervention   16
 
J'ai mal formulé ma question : est-il possible d'avoir des formulaires à l'intérieur d'une condition if ?

C'est ce que j'ai décrit, mais à ma sauce :)

Bonne journée
0
bruno3591 Messages postés 155 Date d'inscription   Statut Membre Dernière intervention   16
 
J'ai résolu mon problème :

En bon boulet j'ai laissé les script php entre les accolades. Il fallait simplement les sortir de la condition et laisser les formulaires html. ca me crevé les yeux. :)

Pour tous les débutants comme moi qui passeront :

If {
Le ou les formulaires
}

puis vos script

<?php
......
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
artragis Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   146
 
heu je pige pa
s ton :

If {
Le ou les formulaires
}

puis vos script

<?php
......
?>



ça serait pas plutot

<?php>
if (la condition){ les script
?>
les formulaires
<?php fin des script
?>
0
bruno3591 Messages postés 155 Date d'inscription   Statut Membre Dernière intervention   16
 
ça serait pas plutot

<?php>
if (la condition){ les script
?>

les formulaires
}
<?php fin des script
?>

Si avec une accolade après les formulaires.
0
artragis Messages postés 481 Date d'inscription   Statut Membre Dernière intervention   146
 
ACCOLADE APRES "fin des scripts" sinon ça marche pas, l'accolade c'est du PHP pas du HTML
0