PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 05-02-2011 17:18:50

philippf
Membre
Inscription : 02-02-2011
Messages : 12

Valeurs d'un formulaire non récupérées

Bonjour,

Une requete me renvoie : Annee, Num (n° de semaine), Debut (de semaine qui est un samedi) et Fin (de semaine qui est un samedi).
Avec l'aide d'xTG, j'ai pu résoudre le problème de présentation.
Maintenant j'essaie de récupérer les valeurs saisies dans les input text et les cases cochées.

J'ai cherché un peu partout la solution mais ... pas trouvé.
Mon code :


if (isset($_POST['prix_semaine']))  $semaine=$_POST['prix_semaine'];
else $semaine = "";
if (isset($_POST['prix_semaine'])){
    for ($i = 0, $c = count($_POST['prix_semaine']); $i < $c; $i++) {
        $semaine = "" . $_POST['prix_semaine'][$i] . "";
    }
}

if (isset($_POST['Disponibilite'])) $Disponibilite=$_POST['Disponibilite'];
else $Disponibilite = "";
if (isset($_POST['Disponibilite'])) {
    for ($i = 0, $c = count($_POST['Disponibilite']); $i < $c; $i++) {
        $Disponibilite ="" . $_POST['Disponibilite'][$i] . "</b>";
    }
}
function est_selectionne($option) {
    if (!isset($_POST['Disponibilite'])) {
            return FALSE;
    }
    for ($i = 0, $c = count($_POST['Disponibilite']); $i < $c; $i++) {
        if ($_POST['Disponibilite'][$i] == $option) {
            return TRUE;
        }
    }
    return FALSE;
}

$year = date('Y');
$i = 0;
$sql = mysql_query("SELECT * FROM semaines1 WHERE Annee = $year LIMIT 0, 26");
$nb_lignes = mysql_num_rows($sql);
while ($i < $nb_lignes){
  $id_semaine = mysql_result($sql,$i,"Num");
  //traitement de la date de début
  $debut = mysql_result($sql,$i,"Debut");
  list($anneeD, $moisD, $jourD) = explode('-', $debut);
  if ($jourD < 10)  $jourD=substr($jourD,1, 1);
  $DateDebut = $jourD.'/'.$moisD;
  //traitement de la date de fin
  $fin = mysql_result($sql,$i,"Fin");
  list($anneeF, $moisF, $jourF) = explode('-', $fin);
  if ($jourF < 10)  $jourF=substr($jourF,1, 1);
  $DateFin = $jourF.'/'.$moisF;
  if ($moisD == $moisF) $DateDebut = $jourD;
  if ($i != 0 && $i % 4 == 0){
    echo '</tr><tr height="50px">';
    echo "<td align='center' class='interieur'> du $DateDebut au $DateFin <br /> 
      <input type='text' name='prix_semaine[$id_semaine]' value='$semaine' style='width:70px' class='input'>
            <input type='checkbox' name='Disponibilte[]' value='$id_semaine'  if(est_selectionne('$id_semaine')) { echo 'checked'; } /></td>"
;
  }
  else {
    echo "<td align='center' class='interieur'> du $DateDebut au $DateFin <br /> 
      <input type='text' name='prix_semaine[$id_semaine]' value='$semaine' style='width:70px' class='input'>
            <input type='checkbox' name='Disponibilte[]' value='$id_semaine' if(est_selectionne('$id_semaine')) { echo 'checked'; } /></td>"
;
  }
$i++;
}
?>
</tr></table>
<input type="submit" name="sem1" value="Valider1">

J'arrive à traiter quand il s'agit d'une série d'input text ou checkbox simples mais là je bloque.

Merci d'avance

Hors ligne

#2 05-02-2011 17:25:51

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Valeurs d'un formulaire non récupérées

haaaaaaaaaaaaaa XTg, sort de ce corps big_smile:D

a++

Hors ligne

#3 05-02-2011 18:56:33

philippf
Membre
Inscription : 02-02-2011
Messages : 12

Re : Valeurs d'un formulaire non récupérées

Pierrot a écrit :

haaaaaaaaaaaaaa XTg, sort de ce corps big_smile:D

a++

Cela ne m'aide pas beaucoup sad

Hors ligne

#4 05-02-2011 20:30:03

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Valeurs d'un formulaire non récupérées

tu récupères les valeurs par le tableau super global $_POST si ton formulaire est avec la $_GET



a++

Hors ligne

#5 05-02-2011 23:02:33

philippf
Membre
Inscription : 02-02-2011
Messages : 12

Re : Valeurs d'un formulaire non récupérées

J'utilise $_POST pour tous mes formulaires

Hors ligne

#6 07-02-2011 10:56:06

philippf
Membre
Inscription : 02-02-2011
Messages : 12

Re : Valeurs d'un formulaire non récupérées

Vraiment personne pour m'aider hmm

Hors ligne

#7 07-02-2011 13:13:46

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Valeurs d'un formulaire non récupérées

Qu'est ce que tu cherches à traiter ?
Un petit peu plus de description sur ton problème nous aiderait bien. smile

Hors ligne

#8 07-02-2011 13:51:39

philippf
Membre
Inscription : 02-02-2011
Messages : 12

Re : Valeurs d'un formulaire non récupérées

Bonjour et merci

Une table semaines1 contient : Annee, Num (de semaine), une date de début de semaine (Debut) et de fin (Fin). La table contient les semaines des 20 prochaines années.

Ma requete sélectionne toutes les semaines de l'année 2011.
A l'aide d'une boucle, je construis des input de type text et des checkbox. 1 input text et 1 checkbox par semaine.

Mon problème est le suivant :
Je n'arrive pas à récupérer les valeurs saisies dans les input text ni à conserver les cases cochées quand je valide le formulaire.
voici ma page en question


<div style="position:relative;width:490px;margin-left:0px;background-color:#ffffff;display:block">
<p align="center">
Calendrier des semaines (du samedi au samedi) de l'année <?php echo date('Y');?><br />
Indiquer le prix de la location pour chaque semaine<br />
Cocher la case pour vous réserver la semaine </p>
<div id="idv1" style="background-color:beige; display:block">
<form name="semestre1" method="POST" action="index.php?page=acces">
<p align="center">Cliquer <a href="#">ICI</a> pour afficher le 2 ème semestre</p>
<table border="0"cellspacing="10">
<colgroup width="117px">
<colgroup width="117px">
<colgroup width="117px">
<colgroup width="117px">
<tr height="50px">
<?php
$semaine="";
require ('connect.php');

if (isset($_POST['prix_semaine'])){
  foreach($_POST['prix_semaine'] as $index=>$valeur){
    $semaine=$valeur;
//    echo '<br />'.$index.' : '.$valeur.'<br />';
    var_dump($_POST['prix_semaine']);
  }
}

if (isset($_POST['Disponibilite'])) $Disponibilite=$_POST['Disponibilite'];
else $Disponibilite = "";
if (isset($_POST['Disponibilite'])) {
    for ($i = 0, $c = count($_POST['Disponibilite']); $i < $c; $i++) {
        $Disponibilite ="" . $_POST['Disponibilite'][$i] . "</b>";
    }
}
function est_selectionne($option) {
    if (!isset($_POST['Disponibilite'])) {
            return FALSE;
    }
    for ($i = 0, $c = count($_POST['Disponibilite']); $i < $c; $i++) {
        if ($_POST['Disponibilite'][$i] == $option) {
            return TRUE;
        }
    }
    return FALSE;
}

$year = date('Y');
$i = 0;
$sql = mysql_query("SELECT * FROM semaines1 WHERE Annee = $year LIMIT 0, 2");
$nb_lignes = mysql_num_rows($sql);
while ($i < $nb_lignes){
  $id_semaine = mysql_result($sql,$i,"Num");
  //traitement de la date de début
  $debut = mysql_result($sql,$i,"Debut");
  list($anneeD, $moisD, $jourD) = explode('-', $debut);
  if ($jourD < 10)  $jourD=substr($jourD,1, 1);
  $DateDebut = $jourD.'/'.$moisD;
  //traitement de la date de fin
  $fin = mysql_result($sql,$i,"Fin");
  list($anneeF, $moisF, $jourF) = explode('-', $fin);
  if ($jourF < 10)  $jourF=substr($jourF,1, 1);
  $DateFin = $jourF.'/'.$moisF;
  if ($moisD == $moisF) $DateDebut = $jourD;
  if ($i != 0 && $i % 4 == 0){
    echo '</tr><tr height="50px">';
    echo "<td align='center' class='interieur'> du $DateDebut au $DateFin <br /> 
      <input type='text' name='prix_semaine[]' value='$semaine' style='width:70px' class='input'>
            <input type='checkbox' name='Disponibilte[]' value='$id_semaine'  if(est_selectionne('$id_semaine')) { echo 'checked'; } /></td>"
;
  }
  else {
    echo "<td align='center' class='interieur'> du $DateDebut au $DateFin <br /> 
      <input type='text' name='prix_semaine[]' value='$semaine' style='width:70px' class='input'>
            <input type='checkbox' name='Disponibilte[]' value='$id_semaine' if(est_selectionne('$id_semaine')) { echo 'checked'; } /></td>"
;
  }
$i++;
}
?>
</tr></table>
<input type="submit" name="semestre1" value="Valider">
</form>
</div>
</div>
 

Avec ce code si je saisie 300 dans le 1er input text et 15 dans le 2è et que je coche une case, les 2 input text me renvoient 15 et la case n'est pas cochée.

Je cherche depuis plusieurs sans résultat.

Merci d'avance

Hors ligne

#9 07-02-2011 14:24:12

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Valeurs d'un formulaire non récupérées

Tu as une erreur de nommage : <input type='checkbox' name='Disponibilte[]'

Et pour la valeur modifiée du prix il faudrait faire ainsi vu que c'est un tableau :
value='{$_POST['prix_semaine'][$id_semaine - 1]}'

Le - 1 car je suppose que tu ne commences pas à numéroter tes semaines à partir de 0. smile

Hors ligne

#10 07-02-2011 14:49:13

philippf
Membre
Inscription : 02-02-2011
Messages : 12

Re : Valeurs d'un formulaire non récupérées

Merci pour la réponse.

Exacte, je commence à la semaine 1.
J'avance, je récupère bien les valeurs.

Mais quand j'arrive sur ma page j'ai le message suivant sad

Notice: Undefined index: prix_semaine in C:\Weblocal\Sites\Vias\affiche_cal.php on line 72

Je ne vois pas pourquoi vu que je n'ai pas de message pour la ligne 66 qui est la même et que j'ai fait un copier/coller pour être sûr.

Hors ligne

#11 07-02-2011 15:13:45

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Valeurs d'un formulaire non récupérées

C'est normal, en arrivant sur la page le formulaire n'a pas encore été posté.

.....
value=' " . (isSet($_POST['prix_semaine'][$id_semaine - 1]))?$_POST['prix_semaine'][$id_semaine - 1]:"" . "'
....

Il faut donc vérifier que la valeur existe avant d'essayer de l'afficher. wink

Ou bien si tu préfères cette écriture :


... value='";
if( isSet($_POST['
prix_semaine'][$id_semaine - 1]) )
  echo $_POST['
prix_semaine'][$id_semaine - 1];
echo "'
....";

Dernière modification par xTG (07-02-2011 15:15:09)

Hors ligne

#12 07-02-2011 16:47:45

philippf
Membre
Inscription : 02-02-2011
Messages : 12

Re : Valeurs d'un formulaire non récupérées

Merci ça marche

L'autre problème de mon code est que les cases ne sont pas cochées après la validation du formulaire sad

Hors ligne

#13 07-02-2011 16:52:35

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Valeurs d'un formulaire non récupérées

Ton code PHP est à l'intérieur du echo, donc il n'est pas interprété.
Regardes le code HTML généré et tu auras une drôle de surprise. wink

Hors ligne

#14 07-02-2011 21:32:37

philippf
Membre
Inscription : 02-02-2011
Messages : 12

Re : Valeurs d'un formulaire non récupérées

Merci xTG;

J'ai repris le code <input type="checkbox" .... > et la function et maintenant tout est ok smile

Hors ligne

#15 15-02-2011 00:33:29

philippf
Membre
Inscription : 02-02-2011
Messages : 12

Re : Valeurs d'un formulaire non récupérées

Merci,

Mon problème est résolu

Hors ligne

Pied de page des forums