Formulaire qui envoie plus rien...

Eléphanteau du PHP | 32 Messages

09 mars 2012, 21:24

Bonsoir,
J’ai un formulaire qui envoie les données dans une bdd avec un bouton submit (envoyé). Cela marchait très bien. En suite j’ai fait une prewiew qui s'affiche sur la même page, appelé aussi avec un bouton submit (aperçu) qui affiche également le bouton (envoyé). Tout fonctionne bien sauf que plus rien n’est envoyé dans la base.

Je pense que le problème viens que quand on clique sur aperçu, la page se recharge pour afficher l’aperçu, mais du coup les champs devienne vide, et le bouton dois envoyer ce qu’il y a dans les champs.
Si j’ai raison, il y a-t-il une solution pour que quand la page se recharge, les données restent inscrites, de façon à les envoyer ou à modifier si besoin.

Et si je me trompe pourrait ’on m’expliquer pourquoi et comment faire ?

Merci d’avance pour votre aide.

ViPHP
xTG
ViPHP | 7331 Messages

09 mars 2012, 21:36

Réaffiches dans les champs les valeurs reçues. ;)
Exemple :
<form action="#" method="POST">
<input type="text" name="test" value="<?php if(isSet($_POST['test'])) echo $_POST['test']; ?>" />
<input type="submit" />
</form>
De cette façon tu peux poster le formulaire à l'infini tu ne perdras pas la valeur.

Eléphanteau du PHP | 32 Messages

09 mars 2012, 21:45

Super marche :) merci xTG

Par contre pour les bouton radio c'est faisable? surtout que ça se présente comme ce ci :
$tableau .= "<br><input type='radio' name='radiobutton' value=\"".$reponse['nom']."\"></td>";

ViPHP
xTG
ViPHP | 7331 Messages

09 mars 2012, 22:44

Il faut faire des conditions pour rajouter l'attribut checked.
<input type="radio" name="monRadio" value="1" <?php if(isSet($_POST['monRadio']) && $_POST['monRadio'] == 1) echo 'checked="checked"'; ?>/>

Eléphanteau du PHP | 32 Messages

09 mars 2012, 23:28

Mais avec cette exemple c'est aussi possible? car je n'y arrive pas... :(

<?PHP
$calcul = "2";
$requete2 = "SELECT * FROM client";
$resultat2 = mysql_query($requete2);
$tableau2 = "<table border='0' align='center' width='100%'><tr><td width='5%' align='center'><input type='radio' name='radiobutton2' value=\"aucune\" checked></td><td width='45%'>aucune liste</a></td>";
while($reponse2  = mysql_fetch_array($resultat2)){
$tableau2 .= "<td width='5%' align='center'><input type='radio' name='radiobutton2' value=\"".$reponse2['nom']."\" ></td><td width='45%'><a href=\"liste/".$reponse2['nom']."\">".$reponse2['titre']."</a></td>";
$division = $calcul/2;
if ( is_int($division) ) {
$tableau2 .= "</tr><tr>";
}
$calcul = $calcul+1;
}
$tableau2 .= "</tr></table><p>&nbsp;</p><p>&nbsp;</p>";
echo($tableau2);
?>


ViPHP
xTG
ViPHP | 7331 Messages

10 mars 2012, 10:19

C'est le même principe sauf que le value n'est pas une valeur fixe mais une variable.

Eléphanteau du PHP | 32 Messages

11 mars 2012, 00:08

Vraiment merci pour ta patience, mais malheureusement je n'y arrive vraiment pas :? j'ai cherché presque toute l'après-midi mais je reçois que des erreurs.

$tableau2 .= "<td width='5%' align='center'><input type='radio' name='radiobutton2' value=\"".$reponse2['nom']."\" if(isSet($_POST['radiobutton2']) && $_POST['radiobutton2'] == 1) echo 'checked="checked"'>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 mars 2012, 01:18

Petit problème de syntaxe... tu ne peux pas coller un if php en plein milieu d'une chaine php (ou alors faut utiliser l'opérateur ternaire) :)
// option 1
if (isSet($_POST['radiobutton2']) && $_POST['radiobutton2'] == 1)
   $tableau2 .= '<input type="radio" name="radiobutton2" value="' . $reponse2['nom'] . '" checked="checked" />';
else
   $tableau2 .= '<input type="radio" name="radiobutton2" value="' . $reponse2['nom'] . '" />';

// option 2 avec l'opérateur ternaire: (condition) ? si vrai : si faux;
$tableau2 .= '<input type="radio" name="radiobutton2" value="' . $reponse2['nom'] . '" ' . ((isSet($_POST['radiobutton2']) && $_POST['radiobutton2'] == 1) ? 'checked="checked"' : '') . '>';
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 32 Messages

11 mars 2012, 13:22

Bonjour Ryle,

Merci de ton aide, j'ai testé les deux options, il y a effectivement plus d'erreur de syntaxe mais le il ne se passe rien de plus, au moment de prévisualiser la page se recharge, les input text se recharge mais les bouton radio reste tous blanc...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 mars 2012, 14:07

C'est le test qui n'est pas bon... si la valeur du bouton radio est $reponse2['nom'] alors il faut que le contrôle vérifie cette valeur et non pas 1 pour ajouter l'attribut :)
if (isSet($_POST['radiobutton2']) && $_POST['radiobutton2'] == $reponse2['nom'])
   $tableau2 .= '<input type="radio" name="radiobutton2" value="' . $reponse2['nom'] . '" checked="checked" />';
else
   $tableau2 .= '<input type="radio" name="radiobutton2" value="' . $reponse2['nom'] . '" />';
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 32 Messages

11 mars 2012, 14:16

Cool ca marche :D (même si c'est une évidence pour vous :wink: )


Un grand merci pour votre aide.

Eléphanteau du PHP | 32 Messages

13 mars 2012, 17:44

Excusez moi, juste encore une petite variante..

Pour une liste select, es la même chose? il faut le mettre a chaque valut?? car j'ai tenter le coup mais je reçois que des error...

<?php
$mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"); 
$a = date("d");
$b = $mois[date("n")];
$c = date("Y");
?>


<div class="formMenu">Envoyé le :</div></td></tr><tr><td><div class="formMenu">
<select name="jour" class="boiteFormulaire">
<option value="<?php echo($a);?>"><?php echo($a);?></option>
<option value="02">2</option>
<option value="03">3</option>
<option value="04">4</option>
<option value="05">5</option>
<option value="06">6</option>
<option value="07">7</option>
<option value="08">8</option>
<option value="09">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
etc...
</select>

<select name="mois" class="boiteFormulaire">
<option value="<?php echo($b);?>"><?php echo($b);?></option>
<option value="01">janvier</option>
<option value="02">février</option>
<option value="03">mars</option>
etc...
</select>

<select name="annee" class="boiteFormulaire">
<option value="<?php echo($c);?>"><?php echo($c);?></option>
<option value="2012">2012</option>
<option value="2013">2013 </option>
<option value="2013">2014</option>
</select>

ViPHP
xTG
ViPHP | 7331 Messages

13 mars 2012, 17:46

Pour un select il faut utiliser l'attribut selected="selected" sur la balise option.

Eléphanteau du PHP | 32 Messages

13 mars 2012, 19:13

Merci, ça marche pour les polices, mais pas pour les couleurs, ça me fais des erreurs de syntaxes,

Parse error: syntax error, unexpected T_STRING in C:\Program Files (x86)\EasyPHP-5.3.8.1\www\ecarte\index.php5 on line 196
<SELECT NAME="fontcolor" class="boiteFormulaire">
  <OPTION VALUE="000000" SELECTED="selected">Noir</OPTION>
  <OPTION VALUE="FF0000" <?php if(isSet($_POST['fontcolor']) && $_POST['fontcolor'] == FF0000) echo 'SELECTED="selected"'; ?>>Rouge</OPTION>
  <OPTION VALUE="DC143C" <?php if(isSet($_POST['fontcolor']) && $_POST['fontcolor'] == DC143C) echo 'SELECTED="selected"'; ?>>Pourpre</OPTION>
  <OPTION VALUE="0000FF" <?php if(isSet($_POST['fontcolor']) && $_POST['fontcolor'] == 0000FF) echo 'SELECTED="selected"'; ?>>Bleu</option>
  <OPTION VALUE="00FFFF" <?php if(isSet($_POST['fontcolor']) && $_POST['fontcolor'] == 00FFFF) echo 'SELECTED="selected"'; ?>>Cyan</option> 
  <OPTION VALUE="008000" <?php if(isSet($_POST['fontcolor']) && $_POST['fontcolor'] == 008000) echo 'SELECTED="selected"'; ?>>Vert</option>
  <OPTION VALUE="00FF7F" <?php if(isSet($_POST['fontcolor']) && $_POST['fontcolor'] == 00FF7F) echo 'SELECTED="selected"'; ?>>Vert printemps</option>
</select>
Et aussi, il y a t'il une solution pour mètre dans la valeur de contrôle php le sigle # qui se trouve au début des codes couleurs?

ViPHP
xTG
ViPHP | 7331 Messages

13 mars 2012, 19:34

Les couleurs sont des chaînes de caractère, il faut donc les mettre entre quote. ;)