Seek : C'est pas propre !

Résolu/Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 25 mars 2015 à 08:02
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 25 mars 2015 à 12:41
Bonjour à tous...

Avant mon code était rempli de mysql_query, mysql_fetch_array, mysql_fetch_assoc...et de partout on me disait c'est pas bien, il faut utiliser PDO...
J'ai donc repris toutes les instructions pour les remplacer par du code plus "moderne", sauf que pour certaines instructions, je ne sais pas comment faire...

Ainsi j'ai (j'avais) sur une page dans un même formulaire une série de <select> inclus dans une boucle for alimentés par une même table.
Pour alimenter le deuxième select j'avais utilisé ça en fin de boucle :

mysql_data_seek($requete,0);


J'ai bien trouvé ça sur un autre forum pour remplacer cette lourdeur de code :

$requete = $bdd->query('SELECT * FROM menu_aliments ORDER by aliment_nom');
$row = $requete->fetch(PDO::FETCH_ASSOC);


...

while ($row = $requete->fetch(PDO::ASSOC)) {


... et en fin de boucle for :

$requete->closeCursor();


Mais ça n'a pas réglé mon problème, maintenant, un seul <select> apparaît qui plus est vide de contenu !

Merci d'avance pour vos lumières !



4 réponses

jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
25 mars 2015 à 08:20
Bonjour
il nous faudrait plus de code pour essayer de trouver le souci
0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
Modifié par jordane45 le 25/03/2015 à 10:04
Merci Jordane45 de intéresser à mon problème...
Je ne sais pas si plus de code va t'aider à comprendre...

J'aimerai en fait savoir comment dans un même formulaire avoir
une dizaine de select, tous alimentés par les données d'une même table.


voici la zone du code concernée :

// Requête SQL - Lecture des Aliments :
$requete = $bdd->query('SELECT * FROM menu_aliments ORDER by aliment_nom');
$row = $requete->fetch(PDO::FETCH_ASSOC);
?>

// ....
<?php
for ($i=1; $i <=10; $i++) {
    if ($i==1) {
        $champ ='required';
    }
    else {
        $champ ='';
    }?>
<tr id="row_tbl_1" class="odd">
    <td>
        <?php echo $i; ?>
    </td>
    <td>
        <select class="autosubmit" name="<?php echo 'ingredient' . $i; ?>" <?php echo $champ; ?> id="ingredient" style="width:150px">
        <option value=""></option>
            <?php
            while ($row = $requete->fetch(PDO::ASSOC)) {
                echo '<option value="'.$row['aliment_id'].'">'.$row['aliment_nom'].'</option>';
            }?>
        <select>
    </td>
    <td><input type="text" name="<?php echo 'quantite' . $i; ?>" autocomplete="off" <?php echo $champ; ?> id="input_right" size="5" maxlength="4" />
    </td>
    <td>
        <select class="autosubmit" name="<?php echo 'unite' . $i; ?>" <?php echo $champ; ?> id="unite">
            <option selected value=""></option>
            <option value="mg">mg</option>
            <option value="gr">gr</option>
            <option value="kg">kg</option>
        </select>
    </td>
</tr>
<?php
$requete->closeCursor();
}
?>


Edit : remplacé les $reponse par $row, n'a rien changé !


EDIT : Ajout du langage dans les balises de code
0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
25 mars 2015 à 09:13
Un bout de réponse ici : http://php.net/manual/fr/pdo.prepared-statements.php
Mais je n'y comprends rien ! :-(
0
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
25 mars 2015 à 11:50
Tiens
testes ça

<?php
// Requête SQL - Lecture des Aliments :
$requete = $bdd->query('SELECT * FROM menu_aliments ORDER by aliment_nom');

// on stocke le résultat de la requête dans un Array
$arrMenus = $requete->fetchAll();
?>
<?php
for ($i=1; $i <=10; $i++) {
    if ($i==1) {
        $champ ='required';
    }
    else {
        $champ ='';
    }?>

<tr id="row_tbl_1" class="odd">
    <td>
        <?php echo $i; ?>
    </td>
    <td>
        <select class="autosubmit" name="<?php echo 'ingredient' . $i; ?>" <?php echo $champ; ?> id="ingredient" style="width:150px">
        <option value=""></option>
            <?php
            foreach($arrMenus as $M)) {
                echo '<option value="'.$M['aliment_id'].'">'.$M['aliment_nom'].'</option>';
            }?>
     <!-- <select>  Erreur ... : ON DOIT FERMER LE SELECT-->
        </select>
    </td>
    <td><input type="text" name="<?php echo 'quantite' . $i; ?>" autocomplete="off" <?php echo $champ; ?> id="input_right" size="5" maxlength="4" />
    </td>
    <td>
        <select class="autosubmit" name="<?php echo 'unite' . $i; ?>" <?php echo $champ; ?> id="unite">
            <option selected value=""></option>
            <option value="mg">mg</option>
            <option value="gr">gr</option>
            <option value="kg">kg</option>
        </select>
    </td>
</tr>
<?php
}
?>


Sachant que ton souci principale ... était que tu n'avais pas fermé ton select ...


0
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
25 mars 2015 à 12:41
Merci jordane45...

Le <select> non fermé était une erreur d'épuration de mon code au moment de poster sur ce forum, par contre ton foreach($arrMenus as $M)) { a réglé mon problème ! ! !

Tous les select maintenant sont bien alimentés !

Je vais aller potasser cette instruction foreach que je ne connais pas !

Merci beaucoup !
0