IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Input type text dans une boucle


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Input type text dans une boucle
    Bonjour,

    Une requete me renvoie 4 champs :Annee, Num, Debut, Fin
    Num est le n° de semaine, Debut est le jour du début de la semaine et Fin le jour de la fin de la semaine.

    Avec une boucle je crée un tableau dans lequel j'indique dans chaque cellule le 1er et le dernier jour de la semaine et je place un input type text.

    J'ai 2 problèmes sur lesquels je bute depuis un bon moment :
    1) Je n'arrive pas à récupérer la valeur entrée dans les input text,
    2) la 1ère ligne du tableau ne prend pas la hauteur que je défini.

    Note : je n'ai pas encore traité le cas des checkbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <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">
    <?php
     
    if (isset($_POST['prix_semaine']))	$semaine=$_POST['prix_semaine'];
    else $semaine = "";
     
    require ('connect.php');
    $year = date('Y');
    $sql = mysql_query("SELECT * FROM semaines1 WHERE Annee = $year LIMIT 0, 26");
    $nb_lignes = mysql_num_rows($sql);
    for ($i=0; $i<$nb_lignes; $i++){
    	$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'>&nbsp;du $DateDebut au $DateFin <br />&nbsp;
    			<input type='text' name='prix_semaine$id_semaine' value='$semaine' style='width:70px' class='input'> 
    		        <input type='checkbox' name='Disponibilte[]' value='$id_semaine' ></td>";
    	}
    	else {
    		echo "<td align='center' class='interieur'>&nbsp;du $DateDebut au $DateFin <br />&nbsp;
    			<input type='text' name='prix_semaine$id_semaine' value='$semaine' style='width:70px' class='input'>
    		        <input type='checkbox' name='Disponibilte[]' value='$id_semaine'></td>";
    	}
    }
    ?>
    </tr></table>
    <input type="submit" name="sem1" value="Valider">
    </form>
    Je n'ai mis qu'un $semaine tour tester
    Merci d'avance pour l'aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as pas de champs qui s'appelle prix_semaine puisque tu as ajouté un numéro au bout.

    Il vaut mieux utiliser une notation en tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name='prix_semaine[$id_semaine]'
    et recuperer ainsi toutes les valeurs dans le tableau $_POST['prix_semaine']

    Par ailleurs tes informations dans la table sont redondantes : avec une date de debut par exemple, tu retrouves le numero de la semaine et le dernier jour de la semaine.

    Tes méthodes de lecture de la base sont également inadaptés : il faut utiliser une boucle while et mysql_fetch_assoc comme indiqué dans la doc :
    http://php.net/manual/fr/function.mysql-fetch-assoc.php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    En prenant les choses dans l'ordre :
    Citation Envoyé par sabotage Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name='prix_semaine[$id_semaine]'
    et recuperer ainsi toutes les valeurs dans le tableau $_POST['prix_semaine']
    ce que j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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] . "";
        }
    }
     
    <input type='text' name='prix_semaine[$id_semaine]' value='$semaine' style='width:70px' class='input'>
    Rien n'est retourné !!
    Citation Envoyé par sabotage Voir le message
    tes informations dans la table sont redondantes
    J'ai pris cette solution préconisée par Antoun car j'ai plusieurs années dans ma table

    Pour la méthode de lecture de la base, la boucle for me permet de créer une nouvelle ligne tous les 4 enregistrements, mais je regarderai la méthode while.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour parcourir un tableau, utilise foreach().
    Pour debuguer le contenu d'un tableau, utilise var_dump() ou print_r()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Pour parcourir un tableau, utilise foreach().
    Pour debuguer le contenu d'un tableau, utilise var_dump() ou print_r()
    J'ai regardé var_dump() et prin_r() mais j'ai du mal à comprendre et à adapter à mon code

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca sert juste à debuguer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_POST['prix_semaine']);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    J'ai donc aplliqué var_dump() ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_POST['prix_semaine'])){
        for ($i = 0, $c = count($_POST['prix_semaine']); $i < $c; $i++) {
            $semaine = "" . $_POST['prix_semaine'][$i] . "";
    	var_dump($_POST['prix_semaine']);
        }
    }
    else{ $semaine = "";}
    j'ai limité à 2 mes enregistrements pour y voir plus clair.
    j'ai saisi 300 et 15 dans chacun des input text et j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Notice: Undefined offset: 0 in C:\Weblocal\Sites\Vias\affiche_cal.php on line 21
    array(2) { [1]=> string(3) "300" [2]=> string(2) "15" } array(2) { [1]=> string(3) "300" [2]=> string(2) "15" }
    J'ai beau essayer de modifier mon code j'ai toujours une erreur
    Il faudra aussi que je regarde la boucle foreach car je ne l'ai jamais utilisée.

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je me repete : il faut utiliser foreach() pour parcourir un tableau.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    J'ai utilisé foreach comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($_POST['prix_semaine'])){
    	foreach($_POST['prix_semaine'] as $index=>$valeur){
    		$semaine=$valeur;
    		var_dump($_POST['prix_semaine']);
    	}
    }
    var_dump() affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(2) { [1]=> string(3) "300" [2]=> string(2) "15" } array(2) { [1]=> string(3) "300" [2]=> string(2) "15" }
    les 2 input text on 15 comme valeur!!
    Je continue de chercher, mais la solution serait la bienvenue, d'autant que je n'ai pas encore attaqué les checkbox qui sont construits eux aussi avec une boucle.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as un input qui vaut 300 et un input qui vaut 15.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Non les 2 ont 15 comme valeur, alors que j'ai entré 300 dans dans un et 15 dans l'autre.

  12. #12
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    slt,

    pour la hauteur de ta 1ere ligne c'est du au fait que tu n'as pas de balise <tr> au debut, si tu regarde ton code tu verras que pour $i == 0 tu commences par <td>...voila pourquoi.

    Dans ta balise form, pour l'attribut method c'est "post" et pas "$_POST" qui est la variable (le tableau de variable...).
    Développeur informatique contrarié...

  13. #13
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    de plus dans ta boucle foreach tu écrases la variable $semaine, tu ne récupèreras pas les données saisies dans chaque input de cette manière...
    recrées un tableau pour les récupérer.
    Développeur informatique contrarié...

  14. #14
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Citation Envoyé par vorace Voir le message
    slt,

    pour la hauteur de ta 1ere ligne c'est du au fait que tu n'as pas de balise <tr> au debut, si tu regarde ton code tu verras que pour $i == 0 tu commences par <td>...voila pourquoi
    Dans ta balise form, pour l'attribut method c'est "post" et pas "$_POST" qui est la variable (le tableau de variable...).
    Merci d'avoir lu tout mon code. J'avais effectivement ces 2 problèmes que j'ai corrigés

    Citation Envoyé par vorace Voir le message
    recrées un tableau pour les récupérer
    Comme j'ai dis je n'ai jamais utilisé les input text avec des tableaux. Comment je recré un tableau pour récupérer les valeurs.

  15. #15
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    dans ton input : value="$semaine[$id_semaine]" mais avant test son existence...
    Développeur informatique contrarié...

  16. #16
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    dans ton code, si j'ai bien compris : si le formulaire à été soumis, t'affiche les inputs avec les valeurs qui ont été saisis avant que le formulaire n'ait été soumis, c'est bien ca?
    Développeur informatique contrarié...

  17. #17
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Comme j'ai fait plusieurs modifs depuis hier, je joins le fichier

    Merci de regarder car à force j'ai les yeux qui se croisent
    Fichiers attachés Fichiers attachés

  18. #18
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    juste pour savoir, la page que t'as joint s'appelle bien affiche_cal.php et la page qui traite le formulaire "action" est index.php?

    il faut que tu m'aides à t'aider...
    si les deux pages sont différentes, la partie de code sur $_POST['prix_semaine'] et tout le reste ne sert a rien puisque c'est sur que $_POST n'existe pas...
    Développeur informatique contrarié...

  19. #19
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Dans la page index.php j'ai un menu qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <a href="index.php?page=acces">Accès</a>
    ....
    <?php
    ...
    case 'acces': include ('affiche_cal.php');break;
    et dans la page affiche_cal.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="semestre1" method="POST" action="index.php?page=acces">
    J'ai d'autres input text qui ne sont pas dans la boucle et je récupère bien les valeurs entrées. Donc pas de problème de ce coté là

  20. #20
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    D'abord merci du temps pris pour regarder.

    Je viens de faire le test et voilà le résultat.
    Dès que j'arrive sur la page affiche_cal.php j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Notice: Undefined index: 1 in C:\Weblocal\Sites\Vias\affiche_cal.php on line 66
    Notice: Undefined index: 2 in C:\Weblocal\Sites\Vias\affiche_cal.php on line 66
    La ligne est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='text' name='prix_semaine[$id_semaine]' value='$semaine[$id_semaine]' style='width:70px' class='input'>
    C'est la ligne qui se trouve dans le else de la boucle. C'est un peu bizare, la première est exacrement la même.

    Malgré cela les valeurs saisies s'affichent bien après de la soumission.

    Par contre les cases cochées ne restent pas cochées.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. affichage d'un objet uicontrol texte dans une boucle
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 25/08/2010, 14h35
  2. Importation fichier texte dans une boucle
    Par asphodele dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/04/2010, 11h41
  3. formulaire avec champs de texte dans une boucle
    Par sssmix dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/04/2008, 16h03
  4. Remplir des input de type text dans une page HTML
    Par Rodrick dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/06/2007, 11h19
  5. Critère de type texte dans une clause WHERE
    Par VBBBA dans le forum Access
    Réponses: 4
    Dernier message: 03/09/2006, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo