Page 1 sur 1

Récupérer une valeur d'un input dans une boucle

Posté : 03 avr. 2016, 14:27
par Nilo
Bonjour à tous,

Voici la cinématique :
une requête PHP me renvoi une boucle affichant les résultats provenant de la Bdd
ID_offre Étant la variable à récupérer indépendamment.

je suis bloqué sur le problème suivant :

Lorsque je clic sur un élément pour ajouter au favoris tout mes éléments sont prit en compte.
donner un nom différent au input name="favoris" en utilisant $i ne donne rien
Au clic Submit, le script ne récupère pas une valeur mais toute.
comment peut-on essayer de solutionner ce problème.

code ci joint

merci d'avance.


Class test{
        public static function search_metier_sep($metier,$atouts,$datedeb) {
        $test = Membre::info($_SESSION['id'], 'id');
        $listid = [];
        $i = 0;
        $resultat = Bdd::connectBdd()->prepare('SELECT * FROM offres WHERE metier=:metier OR atouts=:atouts OR dh_deb_of=:dh_deb_of');
        $resultat -> bindParam(':metier', $metier, PDO::PARAM_STR, 25);
        $resultat -> bindParam(':atouts', $atouts, PDO::PARAM_STR, 25);
        $resultat -> bindParam(':dh_deb_of', $datedeb, PDO::PARAM_INT, 35);
        $resultat -> execute();
        while($ListeOffres = $resultat -> fetch(PDO::FETCH_ASSOC)) {

                    $id_offre[$i] = $ListeOffres['ID_offre'];
                    $listid[$i] = $id_offre[$i];
                    echo "<div class='search_extra'>
                    <td>".$ListeOffres['enseigne']."</td>
                    <td>Metier: ".$ListeOffres['metier']."</td>
                    <td>date de parution".$ListeOffres['date_depot']."</td>
                    <td>Taux horaire:".$ListeOffres['taux']."</td>
                    <td>".$ListeOffres['nbr_poste']."</td>
                    <td>".$ListeOffres['mission']."</td>
                    <td>".$ListeOffres['profil']."</td>
                    <div class='content_fav'>

                    <form method='post' action = ''>
                    <input type='text' name='favoris_".$i."' value='".$ListeOffres['ID_offre']."' class='favoris'>
                    <input type='submit' name='submit' value='damn'>
                    </form>
                    </div>
                    </div>";
                            if (empty($_POST['favoris_'.$i.''])) {
                            echo $id_offre[$i];
                            test::favoris($id_offre[$i], $test);
                        }

        }



    }

    public static function favoris($id_offre, $id_candid){
        $req=Bdd::connectBdd()->prepare("INSERT INTO favoris (id_candid, id_offre) VALUES (:id_candid, :id_offre)");
        $req -> bindParam(':id_candid', $id_candid, PDO::PARAM_INT, 25);
        $req -> bindParam(':id_offre', $id_offre, PDO::PARAM_INT, 25);
        $req -> execute();

    }
}

Re: Récupérer une valeur d'un input dans une boucle

Posté : 03 avr. 2016, 14:37
par or 1
à priori
if (!empty($_POST['favoris_'.$i.''])) {
au lieu de
if (empty($_POST['favoris_'.$i.''])) {

Re: Récupérer une valeur d'un input dans une boucle

Posté : 03 avr. 2016, 15:09
par Nilo
à priori
if (!empty($_POST['favoris_'.$i.''])) {
au lieu de
if (empty($_POST['favoris_'.$i.''])) {
Merci pour ta réponse rapide

mais cela ne solutionne pas le problème,
en sortant la balise fermante </form> de la boucle le résultat est différent mais faux.

je pense que le formulaire n'est pas au bon endroit, reste à déterminer où et pourquoi.

Re: Récupérer une valeur d'un input dans une boucle

Posté : 11 avr. 2016, 16:15
par Assani
En regardant ton code j'ai vu que tu as initialiser la variable $i = 0 avant ta boucle. Très bien,

Mais dans la boucle while je pense que tu as oublié de l'incrémenter.