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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 émérite 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
    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 averti
    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
    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 émérite 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
    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 averti
    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
    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 émérite 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
    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

+ 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