Vous n'êtes pas identifié(e).
Pages :: 1
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['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
haaaaaaaaaaaaaa XTg, sort de ce corps :D
a++
Hors ligne
haaaaaaaaaaaaaa XTg, sort de ce corps :D
a++
Cela ne m'aide pas beaucoup
Hors ligne
tu récupères les valeurs par le tableau super global $_POST si ton formulaire est avec la $_GET
a++
Hors ligne
J'utilise $_POST pour tous mes formulaires
Hors ligne
Vraiment personne pour m'aider
Hors ligne
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
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
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.
Hors ligne
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
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
C'est normal, en arrivant sur la page le formulaire n'a pas encore été posté.
Il faut donc vérifier que la valeur existe avant d'essayer de l'afficher.
Ou bien si tu préfères cette écriture :
Dernière modification par xTG (07-02-2011 15:15:09)
Hors ligne
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
Hors ligne
Merci xTG;
J'ai repris le code <input type="checkbox" .... > et la function et maintenant tout est ok
Hors ligne
Merci,
Mon problème est résolu
Hors ligne
Pages :: 1