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

PHP & Base de données Discussion :

Récupération de données dans un tableau [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut [Résolu]Récupération de données dans un tableau
    Il y a un an, avec l'aide de la communauté, j'avais réussi à écrire un script mais voilà, aujourd'hui je veux le modifier, j'ai réussi en partie... en partie seulement.

    Voici le problème :

    Un premier script affiche 3 menus déroulants récupérés dans trois tables. Voici son script :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    <?php
    $postecole = $_POST['ecole'];
    $rqverif = mysql_query("SELECT ecole FROM jos_ecole_animation WHERE ecole ='$_POST[ecole]'") or die ("impossible de vérifier");
    while ($rvf = mysql_fetch_array($rqverif))
        {if (isset ($rvf))
        {echo "<b>Ecole déjà inscrite</b>"."<br/>";
        exit;}
        }
    echo ("<b>Ecole</b> : <b>$postecole</b><br/><br/>");
    $query = mysql_query("SELECT  id_nom, Nom, Prénom FROM jos_ecole_etat WHERE jos_ecole_etat.ECOLE ='$postecole'") OR die("impossible");
    $rqaniob = mysql_query("SELECT CONCAT(animob,\", \",public) AS animob, id_animob FROM jos_ecole_animob ORDER BY id_animob") OR die("impossible");
    $rqani = mysql_query("SELECT CONCAT(anim,\", \",public) AS anim, id_anim FROM jos_ecole_anim_ci ORDER BY id_anim") OR die("impossibleconcat");
    $rqanidv = mysql_query("SELECT CONCAT(anim_dv,\", \",public) AS anim_dv, id_animdv FROM jos_ecole_anim_dv ORDER BY id_animdv") OR die("impossible");
    echo "<form action='index.php?option=com_chronocontact&chronoformname=animation_03' name='animation' method='POST'>";
    echo "<table border='1' cellpadding='1' cellspacing='1' align='left'>
    				<td><b>Nom</b></td>
    				<td><b><center>Volet 1</center></b></td>
                    <td><b><center>Volet 2</center></b></td>
                    <td><b><center>Volet 3</center></b></td>
                    </tr>";
    while ($row=mysql_fetch_array($query))
    {
    echo "<tr>";
    echo "<td>";
    echo "$row[Nom] $row[Prénom]";
    echo "</td>";
    //volet1
    echo "<td>";
    echo "<center><select name=\"id_animob $row[id_nom]\"><option value=\"\">< Choisir ></option></center>";
        if( ! isset($tab_malisteob))
            {
     
                while (list($anim, $id_anim) = mysql_fetch_row($rqaniob))
                {
                $tab_malisteob[$id_anim ] = $anim;
                echo "<option value=\"$id_anim\">$anim</option>\r\n";
                }
            }
        else
            {
            foreach($tab_malisteob as $cle => $val)
                {
                echo "<option value=\"$cle\">$val</option>\r\n";
                }
            }
    echo "</select></td>";
    //volet2
    echo "<td>";
    echo "<center><select name=\"id_anim $row[id_nom]\"><option value=\"\">< Choisir ></option></center>";
        if( ! isset($tab_maliste))
            {
     
                while (list($anim, $id_anim) = mysql_fetch_row($rqani))
                {
                $tab_maliste[$id_anim ] = $anim;
                echo "<option value=\"$id_anim\">$anim</option>\r\n";
                }
            }
        else
            {
            foreach($tab_maliste as $cle => $val)
            {
            echo "<option value=\"$cle\">$val</option>\r\n";
            }
            }
    echo "</select></td>";
    //volet3
    echo "<td>";
    echo "<center><select name=\"id_animdv $row[id_nom]\"><option value=\"\">< Choisir ></option></center>";
        if( ! isset($tab_malistedv))
            {
     
                while (list($anim, $id_anim) = mysql_fetch_row($rqanidv))
                {
                $tab_malistedv[$id_anim] = $anim;
                echo "<option value=\"$id_anim\">$anim</option>\r\n";
                }
            }
        else
            {
            foreach($tab_malistedv as $cle => $val)
            {
            echo "<option value=\"$cle\">$val</option>\r\n";
            }
            }
    echo "</select></td>";
    echo "<tr>";
    }
    echo "</table>";
    echo "<br/><br/>";
    echo "<b>Précisions (cas particuliers, temps partiel,etc.)</b>"."<br/>";
    echo "<b>Propositions d'animations pour l'école (préciser le contenu):</b>"."<br/><br/>"."<center><textarea name='propo' rows='8' cols='50'/></textarea></center>"."<br/>";
    echo "<br/>";
    echo "<center><input type='submit' value='envoyer'/></center>";
    echo "</form>";
    echo "<br/><br/><br/>";
    ?>
    J'envoie pour récupérer dans un autre script qui a pour fonction de vérifier que tous les champs sont remplis, d'afficher le résultat dans un tableau et d'insérer dans une table. Seulement j'arrive à récupérer le contenu de 2 menus, jamais des trois. Voici le code que j'utilisais quand je n'avais que 2 'select' :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php
    if (isset($_POST['animation']));
    echo "<table border='1' cellpadding='1' cellspacing='1' align='left'>
    
                    <td><b>Nom</b></td>
    		<td><b>Prénom</b></td>
                    <td><b><center>Volet 1</center></b></td>
                    <td><b><center>Volet 2</center></b></td>
                    <td><b><center>Volet 3</center></b></td>
                    </tr>";
                foreach($_POST as $idNom => $idAnim)
                {
                         if (preg_match("/dv/",$idNom))
                            {
                             $NOM = substr ($idNom, 10);
                             $rqanidv = mysql_query("SELECT anim_dv, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2, id_nom FROM jos_ecole_anim_dv, jos_ecole_etat  WHERE id_animdv='$idAnim'AND id_nom='$NOM'") OR die("impossible rqanidv");
                             while ($recupdv=mysql_fetch_array($rqanidv))
                                {
                                 $animdv = $recupdv[anim_dv];
                                 $date1dv =  $recupdv[date_1];
                                 $date2dv =  $recupdv[date_2];
                                }
                                echo "<tr><td>$tabNom</td><td>$tabprenom</td><td><center>$animob<br/>$date1 et $date2</center></td><td><center>$anim<br/>$date1ci et $date2ci</center></td><td><center>$animdv<br/>$date1dv et $date2dv</center></td><tr>";
                                $date_1= date("d-m-y", strtotime($date1));
                                $date_2= date("d-m-y", strtotime($date2));
                                $date_1ci = date("d-m-y", strtotime($date1ci));
                                $date_2ci = date("d-m-y", strtotime($date2ci));
                                $date_1dv = date("d-m-y", strtotime($date1dv));
                                $date_2dv = date("d-m-y", strtotime($date2dv));
                                $propo = $_POST[propo];
    if (empty($animdv) || empty($anim) || empty($animob))
                                {
                                  echo "<center><h3>Veuillez compléter tous les champs</h3></center>";
                                  echo "<center><a href='javascript:history.back()'><h3>Retour</h3></a></center>";
                                  exit;
                                }
                                $inscrit = "INSERT INTO jos_ecole_animation (ecole, nom, prenom, anim_ob, date_1ob, date_2ob, anim_ci, date_1ci, date_2ci, anim_dv, date_1dv, date_2dv, propo)
                VALUES ('$ECOLE', '$tabNom','$tabprenom','$animob','$date_1' ,'$date_2','$anim','$date_1ci','$date_2ci','$animdv','$date_1dv','$date_2dv', '$propo')";
                                $envoi = mysql_query($inscrit);
                            }
                         else
                            {
                             $NOM = substr ($idNom, 8);
                             $rqani = mysql_query("SELECT anim, Nom, Prénom, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2, ECOLE FROM jos_ecole_anim_ci, jos_ecole_etat WHERE id_anim='$idAnim'AND id_nom='$NOM'") OR die("impossible");
                             while ($recupci=mysql_fetch_array($rqani))
                                {
                                $ECOLE = $recupci[ECOLE];
                                $tabNom = $recupci[Nom];
                                $tabprenom = $recupci[Prénom];
                                $anim = $recupci[anim];
                                $date1ci =  $recupci[date_1];
                                $date2ci =  $recupci[date_2];
                                $rqanimob = mysql_query("SELECT animob, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2 FROM jos_ecole_animob WHERE ECOLE = '$ECOLE'");
                                   while ($recupob=mysql_fetch_array($rqanimob))
                                    {
                                     $animob = $recupob[animob];
                                     $date1 =  $recupob[date_1];
                                     $date2 =  $recupob[date_2];
                                    }
                                }
                            }
       }
    echo "<b>Inscriptions de l'école : $ECOLE</b>";
    echo "<br/><br/>";
     
    echo "</table>";
    echo "<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>";
    echo "<b>Précisions ou propositions :</b> $_POST[propo]";
    echo "<br/><br/>";
    echo "<center><h3>DEMANDE ENREGISTRÉE</h3></center>";
    echo "<br/><br/><br/><br/>";
    ?>
    J'ai essayé d'introduire un nouveau 'ELSE' ou un 'ELSEIF'
    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
                         elseif (preg_match("/ci/",$idNom))
                            {
                             $NOM = substr ($idNom, 10);
                             $rqani = mysql_query("SELECT anim, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2, id_nom, FROM jos_ecole_anim_ci, jos_ecole_etat WHERE id_anim='$idAnim' AND id_nom='$NOM'") OR die("impossible recupci");
                             while ($recupci=mysql_fetch_array($rqani))
                                {
                                $anim = $recupci[anim];
                                $date1ci =  $recupci[date_1];
                                $date2ci =  $recupci[date_2];
                                }
                             }
     
                           else
                           {
                             $NOM = substr ($idNom, 10);
                             $rqanimob = mysql_query("SELECT animob, Nom, Prénom,date_format(date_1ob,'%d-%m-%y')AS date_1ob, date_format(date_2ob,'%d-%m-%y')AS date_2ob, id_nom, ECOLE FROM jos_ecole_animob, jos_ecole_etat WHERE id_animob='$idAnim'AND id_nom='$NOM'") OR die ("impossible rqanimob");
                                while ($recupob=mysql_fetch_array($rqanimob))
                                    {
                                     $ECOLE = $recupob[ECOLE];
                                     $tabNom = $recupob[Nom];
                                     $tabprenom = $recupob[Prénom];
                                     $animob = $recupob[animob];
                                     $date1 =  $recupob[date_1ob];
                                     $date2 =  $recupob[date_2ob];
                                    }
    mais rien n'y fait, je n'y arrive pas. La première ligne se remplit sauf une colonne et tout s'arrête car l'enregistrement est incomplet.

    Si vous pouviez m'aider, pauvre débutant, à arrêter de tourner en rond

    Merci

  2. #2
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Bonjour,

    Ai-je bien compris ?
    Dans ta version précédente, tu n'avais que deux menus déroulants
    et, aujourd'hui,
    tu souhaites gérer trois menus déroulants : id_anim, id_animob et id_animdv ?

    Sinon après un rapide survol du code :

    Ce bout de code me paraît étrange :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['animation']));
    Plusieurs fois, le HTML généré n'est pas correct : la balise <tr> est oubliée.

    Fred

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Effectivement, je n'avais que 2 menus déroulants, le troisième menu était des données fixes dans une table. Aujourd'hui, c'est bien 3 menus déroulants, ceux que tu as cité.

    Pour le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['animation']));
    En fait un premier script permet de choisir le nom d'une école dans un menu déroulant, c'est ce résultat qui arrive là.

    Pour
    Plusieurs fois, le HTML généré n'est pas correct : la balise <tr> est oubliée.
    c'est qu'à force de bricoler mon script j'ai effacé quelques <tr> effectivement.

    Bruno

  4. #4
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Ce que je trouvais étrange dans ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['animation']));
    c'est qu'à priori, il ne sert à rien. A la place du ; j'attendrais une accolade ouvrante suivie du code à exécuter.

    Sinon, concernant tes modifications,
    tu voudrais donc remplacer le
    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
    else
    {
    	$NOM = substr ($idNom, 8);
    	$rqani = mysql_query("SELECT anim, Nom, Prénom, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2, ECOLE FROM jos_ecole_anim_ci, jos_ecole_etat WHERE id_anim='$idAnim'AND id_nom='$NOM'") OR die("impossible");
    	while ($recupci=mysql_fetch_array($rqani))
    	{
    		$ECOLE = $recupci[ECOLE];
    		$tabNom = $recupci[Nom];
    		$tabprenom = $recupci[Prénom];
    		$anim = $recupci[anim];
    		$date1ci =  $recupci[date_1];
    		$date2ci =  $recupci[date_2];
    		$rqanimob = mysql_query("SELECT animob, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2 FROM jos_ecole_animob WHERE ECOLE = '$ECOLE'");
    		while ($recupob=mysql_fetch_array($rqanimob))
    		{
    			 $animob = $recupob[animob];
    			 $date1 =  $recupob[date_1];
    			 $date2 =  $recupob[date_2];
    		}
    	}
    }
    de la première version par
    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
    elseif (preg_match("/ci/",$idNom))
    {
    	$NOM = substr ($idNom, 10);
    	$rqani = mysql_query("SELECT anim, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2, id_nom, FROM jos_ecole_anim_ci, jos_ecole_etat WHERE id_anim='$idAnim' AND id_nom='$NOM'") OR die("impossible recupci");
    	while ($recupci=mysql_fetch_array($rqani))
    	{
    		$anim = $recupci[anim];
    		$date1ci =  $recupci[date_1];
    		$date2ci =  $recupci[date_2];
    	}
    }
    else
    {
    	$NOM = substr ($idNom, 10);
    	$rqanimob = mysql_query("SELECT animob, Nom, Prénom,date_format(date_1ob,'%d-%m-%y')AS date_1ob, date_format(date_2ob,'%d-%m-%y')AS date_2ob, id_nom, ECOLE FROM jos_ecole_animob, jos_ecole_etat WHERE id_animob='$idAnim'AND id_nom='$NOM'") OR die ("impossible rqanimob");
    	while ($recupob=mysql_fetch_array($rqanimob))
    	{
    		$ECOLE = $recupob[ECOLE];
    		$tabNom = $recupob[Nom];
    		$tabprenom = $recupob[Prénom];
    		$animob = $recupob[animob];
    		$date1 =  $recupob[date_1ob];
    		$date2 =  $recupob[date_2ob];
    	}
    }
    ou plutôt queque chose dans ce style qui fonctionnerait ?

    Pourquoi ce test ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/ci/",$idNom)
    Aucun des select ne porte un nom contenant "ci" ?

    Fred

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['animation']));
    Tout à fait, encore une erreur à corriger.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/ci/",$idNom)
    A force d'essayer tout et son contraire, de ne pas être rigoureux dans la base de donnée, on n'écrit n'importe quoi. En fait, à un moment donné j'ai modifié le nom d'un de mes select .

    Sinon j'aimerais bien pouvoir récupérer toutes mes données dans un tableau et je me suis dit que je devais intervenir avec else ou elseif mais peut être qu'il y a de meilleures solutions ?
    Je cherche surtout quelque chose qui fonctionne

    Merci beaucoup.

    Bruno

  6. #6
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Excuse-moi,
    mais,
    n'étant pas encore sûr d'avoir bien compris ton problème,
    je vais encore te poser des questions.

    Tu as donc une première page
    qui permet à chaque enseignant d'une école de s'inscrire à trois animations (obligatoire, divers?, autre?). Tout en bas de cette page on peut saisir du texte (précisions ou proposition) et on valide tout ça avec un bouton envoyer.

    Intervient alors la deuxième page sur laquelle tu souhaites, après enregistrement dans la table jos_ecole_animation, ré-afficher les inscriptions saisies pour confirmer l'inscription.
    Et c'est là que tu coinces ?

    Me trompe-je ?
    Fred

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par micetf Voir le message
    Tu as donc une première page
    qui permet à chaque enseignant d'une école de s'inscrire à trois animations (obligatoire, divers?, autre?). Tout en bas de cette page on peut saisir du texte (précisions ou proposition) et on valide tout ça avec un bouton envoyer.Fred
    Exact, c'est tout à fait ça. Quand les enseignants vont sur le site, ils choisissent leur école dans un menu déroulant. Ce choix les envoie sur la seconde page où un tableau apparaît, avec leur nom et trois colonnes qui corespondent aux trois animations à choisir. De plus, un champ permet d'entrer des propositions.

    Intervient alors la deuxième page sur laquelle tu souhaites, après enregistrement dans la table jos_ecole_animation, ré-afficher les inscriptions saisies pour confirmer l'inscription.
    Et c'est là que tu coinces ?

    Me trompe-je ?
    Cette page récapitule les inscriptions saisies et leur précise que la demande est bien enregistrée.

    En résumé tu as parfaitement compris.

    Bruno

  8. #8
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Puisque, à priori, j'ai bien compris le problème,
    voici comment je procèderais :

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Pour chaque enseignant de l'école (parcours de jos_ecole_etat)
        récupération du nom et du prénom dans la table
        récupération des choix dans $_POST['id_anim X'], $_POST['id_animdv X'] et $_POST['id_animob X'], X étant l'identifiant de l'enseignant.
        récupération des dates dans la table jos_ecole_anim    
        récupération des dates dans la table jos_ecole_animdv    
        récupération des dates dans la table jos_ecole_animob
        insert dans la base de données (pb si trois anim n'ont pas été choisies ?)
        affichage de la ligne du tableau
    Je n'ai pas parlé du champ propo :
    Y en a-t-il un par enseignant ou un par école ?

    Fred

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par micetf Voir le message
    Puisque, à priori, j'ai bien compris le problème,
    voici comment je procèderais :

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Pour chaque enseignant de l'école (parcours de jos_ecole_etat)
        récupération du nom et du prénom dans la table
        récupération des choix dans $_POST['id_anim X'], $_POST['id_animdv X'] et $_POST['id_animob X'], X étant l'identifiant de l'enseignant.
        récupération des dates dans la table jos_ecole_anim    
        récupération des dates dans la table jos_ecole_animdv    
        récupération des dates dans la table jos_ecole_animob
        insert dans la base de données (pb si trois anim n'ont pas été choisies ?)
        affichage de la ligne du tableau
    Je n'ai pas parlé du champ propo :
    Y en a-t-il un par enseignant ou un par école ?

    Fred
    Le champ propo est par école et n'est pas obligatoire.
    Quand un enseignant ne choisit pas un des volet, il choisit, dans la liste, "pas de volet 2" par exemple. Ca me permet de vérifier que c'est bien un choix de sa part et non un oubli.
    Petite précision : Quand on choisit l'école en début, on récupère tous les enseignants de l'école et le tableau est complété pour tous en une seule fois par le directeur.

  10. #10
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Je ne pourrais pas t'aider plus longtemps ce soir,
    néanmoins
    j'ai quelque peu remanié ton code afin d'y voir plus clair
    et voici où j'en étais :
    script d'inscription :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <?php
    $postecole = $_POST['ecole'];
    $rqverif = mysql_query("SELECT ecole FROM jos_ecole_animation WHERE ecole ='".$_POST['ecole']."'") or die ("impossible de vérifier");
    while ($rvf = mysql_fetch_array($rqverif)) {
    	if (isset ($rvf)) {
    ?>
    <b>Ecole déjà inscrite</b><br/>
    <?php 
    		exit;
    	}
    }
    ?>
    <b>Ecole</b> : <b><?php echo $postecole; ?></b><br/><br/>
    <?php 
    $query = mysql_query("SELECT  id_nom, Nom, Prénom FROM jos_ecole_etat WHERE jos_ecole_etat.ECOLE ='$postecole'") OR die("impossible");
     
    $rqaniob = mysql_query("SELECT CONCAT(animob,\", \",public) AS animob, id_animob FROM jos_ecole_animob ORDER BY id_animob") OR die("impossible");
    $rqani = mysql_query("SELECT CONCAT(anim,\", \",public) AS anim, id_anim FROM jos_ecole_anim_ci ORDER BY id_anim") OR die("impossibleconcat");
    $rqanidv = mysql_query("SELECT CONCAT(anim_dv,\", \",public) AS anim_dv, id_animdv FROM jos_ecole_anim_dv ORDER BY id_animdv") OR die("impossible");
    ?>
    <form action='index.php?option=com_chronocontact&chronoformname=animation_03' name='animation' method='POST'>
    <input type="hidden" name="ecole" value="<?php echo $postecole; ?>">
    <table border='1' cellpadding='1' cellspacing='1' align='left'>
     
    <tr>
    	<td><b>Nom</b></td>
    	<td><b><center>Volet 1</center></b></td>
    	<td><b><center>Volet 2</center></b></td>
    	<td><b><center>Volet 3</center></b></td>
    </tr>
     
    <?php  
    while ($row=mysql_fetch_array($query)) {
    ?>
    <tr>
    	<td><?php echo $row['Nom']." ".$row['Prénom']; ?></td>
     
    	<td>
    	<center><select name="id_animob <?php echo $row['id_nom']; ?>">
    		<option value="">< Choisir ></option></center>
    <?php 
    	if( ! isset($tab_malisteob)) {
    		while (list($anim, $id_anim) = mysql_fetch_row($rqaniob)) {
                $tab_malisteob[$id_anim ] = $anim;
    ?>
    		<option value="<?php echo $id_anim; ?>"><?php echo $anim; ?></option>
    <?php 
    		}
    	} else {
    		foreach($tab_malisteob as $cle => $val) {
    ?>
    		<option value="<?php echo $cle; ?>"><?php echo $val; ?></option>
    <?php 
    		}
    	}
    ?>
    	</select>
    	</td>
     
    	<td>
    	<center><select name="id_anim <?php echo $row['id_nom']; ?>">
    		<option value="">< Choisir ></option></center>
    <?php 
        if( ! isset($tab_maliste)) {
    		while (list($anim, $id_anim) = mysql_fetch_row($rqani)) {
                $tab_maliste[$id_anim ] = $anim;
    ?>
    		<option value="<?php echo $id_anim; ?>"><?php echo $anim; ?></option>
    <?php 
    		}
    	} else {
    		foreach($tab_maliste as $cle => $val) {
    ?>
    		<option value="<?php echo $cle; ?>"><?php echo $val; ?></option>
    <?php 
            }
    	}
    ?>
    	</select>
    	</td>
     
    	<td>
    	<center><select name="id_animdv <?php echo $row['id_nom']; ?>">
    		<option value="">< Choisir ></option></center>
    <?php 
        if( ! isset($tab_maliste)) {
    		while (list($anim, $id_anim) = mysql_fetch_row($rqanidv)) {
                $tab_malistedv[$id_anim ] = $anim;
    ?>
    		<option value="<?php echo $id_anim; ?>"><?php echo $anim; ?></option>
    <?php 
    		}
    	} else {
    		foreach($tab_malistedv as $cle => $val) {
    ?>
    		<option value="<?php echo $cle; ?>"><?php echo $val; ?></option>
    <?php 
            }
    	}
    ?>
    	</select>
    	</td>
    <tr>
    <?php 
    }
    ?>
    </table>
    <br/><br/>
    <b>Précisions (cas particuliers, temps partiel,etc.)</b><br/>
    <b>Propositions d'animations pour l'école (préciser le contenu):</b><br/><br/>
    <center><textarea name="propo" rows="8" cols="50"/></textarea></center><br/><br/>
    <center><input type='submit' value='envoyer'/></center>
    </form>
    <br/><br/><br/>
    script de confirmation :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <?php
    if (isset($_POST['animation'])) {
    ?>
    <table border='1' cellpadding='1' cellspacing='1' align='left'>
     
    <tr>
        <td><b>Nom</b></td>
        <td><b>Prénom</b></td>
        <td><b><center>Volet 1</center></b></td>
        <td><b><center>Volet 2</center></b></td>
        <td><b><center>Volet 3</center></b></td>
    </tr>
     
    <?php 
    	$postecole = $_POST['ecole'];
    	$query = mysql_query("SELECT  id_nom, Nom, Prénom FROM jos_ecole_etat WHERE ECOLE ='$postecole'") OR die("impossible");
    	while ($row=mysql_fetch_array($query)) {
    		$idNom = $row['id_om'];
    		$tabNom = $row['Nom'];
    		$tabPrenom = $row['Prénom'];
    		$idAnim = $_POST['id_anim '$idNom];
    		$idAnimdv = $_POST['id_anim_dv '$idNom];
    		$idAnimob = $_POST['id_anim_ob '$idNom];
     
    		$rqani = mysql_query("SELECT anim, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2, id_nom, FROM jos_ecole_anim_ci WHERE id_anim='$idAnim'") OR die("impossible recupci");
    		$rqanidv = mysql_query("SELECT anim_dv, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2, id_nom FROM jos_ecole_anim_dv  WHERE id_animdv='$idAnimdv'") OR die("impossible rqanidv");
    		$rqanimob = mysql_query("SELECT animob, Nom, Prénom,date_format(date_1ob,'%d-%m-%y')AS date_1ob, date_format(date_2ob,'%d-%m-%y')AS date_2ob, id_nom, ECOLE FROM jos_ecole_animob WHERE id_animob='$idAnimob'") OR die ("impossible rqanimob");
     
    		$recup=mysql_fetch_array($rqani);
    		$recupdv=mysql_fetch_array($rqandv);
    		$recupob=mysql_fetch_array($rqanimob);
     
    		$anim = $recup['anim'];
    		$date1 =  date("d-m-y", strtotime($recup['date_1']));
    		$date2 =  date("d-m-y", strtotime($recup['date_2']));
    		$animdv = $recup['anim_dv'];
    		$date1dv =  date("d-m-y", strtotime($recupdv['date_1']));
    		$date2dv =  date("d-m-y", strtotime($recupdv['date_2']));
    		$animob = $recup['animob'];
    		$date1ob =  date("d-m-y", strtotime($recupob['date_1ob']));
    		$date2ob =  date("d-m-y", strtotime($recupob['date_2ob']));
     
    		$inscrit = "INSERT 
    			INTO jos_ecole_animation 
    		(ecole, nom, prenom, anim_ob, date_1ob, date_2ob, anim_ci, date_1ci, date_2ci, anim_dv, date_1dv, date_2dv)
    		VALUES 
    		('$ECOLE', '$tabNom','$tabprenom','$animob','$date_1ob' ,'$date_2ob','$anim','$date_1','$date_2','$animdv','$date_1dv','$date_2dv')";
    		$envoi = mysql_query($inscrit);
    ?>
    <tr>
    	<td><?php echo $tabNom; ?></td>
    	<td><?php echo $tabprenom; ?></td>
    	<td><center><?php echo $animob; ?><br/><?php echo $date1ob; ?> et <?php echo $date2ob; ?></center></td>
    	<td><center><?php echo $anim; ?><br/><?php echo $date1; ?> et <?php echo $date2; ?></center></td>
    	<td><center><?php echo $animdv; ?><br/><?php echo $date1dv; ?> et <?php echo $date2dv; ?></center></td>
    <tr>
    <?php
    	}
    }
    ?>
    <b>Inscriptions de l'école : <?php echo $ECOLE; ?></b><br/><br/>
    </table>
    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <b>Précisions ou propositions :</b> <?php echo $_POST[propo]; ?><br/><br/>
    <center><h3>DEMANDE ENREGISTRÉE</h3></center><br/><br/><br/><br/>
    sachant que tout n'est pas géré :
    -qu'est-ce que je fais si l'école est déjà inscrite ?
    - qu'est-ce que je fais si un enseignant n'a pas fais ses trois choix ?
    - qu'est-ce que je fais si quelqu'un demande une des pages directement (pas d'école choisie)
    - Pour chaque enseignant, j'enregistre la proposition de l'école dans jos_ecole_animation ? (Pb de conception de BDD)
    ...

    Fred

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Je ne pourrais pas t'aider plus longtemps ce soir,
    néanmoins
    Franchement tu n'as pas à t'excuser, c'est moi qui prend ton temps...

    J'ai commencé à regarder ce que tu m'as envoyé. Tout d'abord, un vrai plaisir à lire, bien plus clair que mon travail.
    Le script d'inscription fonctionne une fois corrigé la ligne 86
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if( ! isset($tab_malistedv)) {
    tu avais oublié l'extension dv.
    Le script de confirmation :
    Petite erreur de frappe ligne 18, manque le 'n' à 'nom'.
    Ça bloquait à partir de la ligne 21
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $idAnim = $_POST['id_anim '$idNom];
    $idAnimdv = $_POST['id_anim_dv '$idNom];
    $idAnimob = $_POST['id_anim_ob '$idNom];
    je l'ai modifié comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $idAnim = $_POST['id_anim'.$idNom];
    $idAnimdv = $_POST['id_anim_dv'.$idNom];
    $idAnimob = $_POST['id_anim_ob'.$idNom];
    et ça passe mais à la fin, j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Inscriptions de l'école :
     
     
     
     
     
    Précisions ou propositions : rien
     
    DEMANDE ENREGISTRÉE
    et rien d'enregistré dans la base. Je vais continuer de vérifier mais dans l'instant je vais faire un petit tour à la mer...
    Bruno

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    -qu'est-ce que je fais si l'école est déjà inscrite ?
    Si l'école est déjà inscrite : c'est géré dans le script d'inscription, le message école déjà inscrite s'affiche.
    - qu'est-ce que je fais si un enseignant n'a pas fais ses trois choix ?
    J'avais mis ce code en cas d'oubli des 3 choix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (empty($animdv) || empty($anim) || empty($animob))
                                {
                                  echo "<center><h3>Veuillez compléter tous les champs</h3></center>";
                                  echo "<center><a href='javascript:history.back()'><h3>Retour</h3></a></center>";
                                  exit;
                                }
    on peut peut-être le réintroduire ?
    qu'est-ce que je fais si quelqu'un demande une des pages directement (pas d'école choisie)
    J'intègre le script dans joomla en interdisant l'accès direct à la page.
    Pour chaque enseignant, j'enregistre la proposition de l'école dans jos_ecole_animation ? (Pb de conception de BDD)
    Oui, la BDD existe.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    De retour, l'eau était bonne .

    J'ai fini par supprimer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['animation'])) {
    qui me bloquait tout.

    Maintenant je bloque car la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rqani = mysql_query("SELECT anim, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2, id_nom, FROM jos_ecole_anim_ci WHERE id_anim='$idAnim'") OR die("impossible recupci");
    est refusée. Je pense que ça vient de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $idAnim = $_POST['id_anim'.$idNom];
    		$idAnimdv = $_POST['id_anim_dv'.$idNom];
    		$idAnimob = $_POST['id_anim_ob'.$idNom];
    En effet, j'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$idNom = $row['id_nom'];
    		$tabNom = $row['Nom'];
    		$tabPrenom = $row['Prénom'];
    en plaçant des echo et ça marche par contre un echo sur $idAnim ne me renvoie rien. Il doit y avoir une erreur de syntaxe dans la ligne. Le point que j'ai rajouté ne doit pas être correct mais si je l'enlève, ça bloque. Une autre syntaxe ?
    Bruno

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    J'ai continué de vérifier, nettoyé les requêtes, les voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $rqani = mysql_query("SELECT anim, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2 FROM jos_ecole_anim_ci WHERE id_anim='$idAnim'") OR die("impossible recupci");
    		$rqanidv = mysql_query("SELECT anim_dv, date_format(date_1,'%d-%m-%y')AS date_1, date_format(date_2,'%d-%m-%y')AS date_2 FROM jos_ecole_anim_dv  WHERE id_animdv='$idAnimdv'") OR die("impossible rqanidv");
    		$rqanimob = mysql_query("SELECT animob, date_format(date_1ob,'%d-%m-%y')AS date_1ob, date_format(date_2ob,'%d-%m-%y')AS date_2ob FROM jos_ecole_animob WHERE id_animob='$idAnimob'") OR die ("impossible rqanimob");
    Elles ne bloquent plus. j'ai modifié les lignes 47 et 52 ($tabprenom en $tabPrenom).

    Depuis, un tableau s'affiche, ça s'inscrit dans la table animations mais... tout n'est pas récupéré.
    Pour le nom et prénom, OK
    Les dates marquent toutes 01-01-70
    Aucun libellé d'animation est récupéré.

    Le problème se situe certainement toujours dans les lignes 21-23
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $idAnim = $_POST['id_anim'.$idNom];
    		$idAnimdv = $_POST['id_anim_dv'.$idNom];
    		$idAnimob = $_POST['id_anim_ob'.$idNom];
    Je cale.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    J'ai fait un print_r($_POST); qui ma retourné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array ( [ecole] => EM Le Linot 
    [id_animob_70] => 1 [id_anim_70] => 9 [id_animdv_70] => 10 
    [id_animob_69] => 2 [id_anim_69] => 13 [id_animdv_69] => 9 
    [id_animob_68] => 2 [id_anim_68] => 20 [id_animdv_68] => 13 
    [propo] => [chronoformname] => animation_03 )
    Du coup j'ai modifié les lignes 21-23 en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	$idAnim = $_POST['id_anim_'.$idNom];
    		$idAnimdv = $_POST['id_animdv_'.$idNom];
    		$idAnimob = $_POST['id_animob_'.$idNom];
    J'ai aussi corrigé quelques requêtes et ça fonctionne.

    Reste à affiner, entre autre le problème école déjà inscrite qui n'a pas l'air de fonctionner mais ça avance bien.

    Bruno

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Mes scripts fonctionnent à part un petit affichage à résoudre (mes tableaux s'affichent mais dans IE, le champ proposition s'affiche à droite au lieu de se trouver sous le tableau et du coup il devient invisible) mais ceci relève sans aucun doute d'un autre forum.

    Encore un grand merci à micetf qui par sa rapidité et par sa clarté ma permis de repartir d'un bon pied.

    Bruno

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

Discussions similaires

  1. [VBA] Récupération de données dans tableau recapitulatif
    Par n0vocaine dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/05/2010, 07h41
  2. Récupération de donnée dans un tableau sous conditions
    Par Guillaume.guegan dans le forum Excel
    Réponses: 5
    Dernier message: 06/11/2008, 09h16
  3. Récupération de données dans un tableau
    Par spad22 dans le forum Excel
    Réponses: 8
    Dernier message: 14/12/2007, 11h58
  4. Méthode Find pour récupération de données dans un tableau
    Par clem.villeneuve dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2007, 15h26
  5. Réponses: 2
    Dernier message: 02/08/2006, 15h11

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