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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    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
    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 éprouvé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    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
    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 éprouvé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    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
    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

+ Répondre à la discussion
Cette discussion est résolue.

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