Problème value radio

Fermé
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 - 3 juin 2022 à 15:19
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024 - 10 juin 2022 à 16:51
Bonjour,

J'aurais besoin de votre aide pour comprendre quel est le problème.

$destina = $_POST['desti'];  
        
            if($destina == 1){
                $sql = "SELECT id_membre,email FROM membre WHERE email != ''";	
                $pdo->exec('SET NAMES utf8');
                $resultat = $pdo->query($sql);
                $tableau = array();
                while($var = $resultat->fetch()){
                    $tableau[] = $var['email'];
                }
                $mailing = "";
                for($i=0;$i<count($tableau);$i++){
                    $mailing .= $tableau[$i].",";
                }
            }


<form id= "" action="mail_send.php" method ="POST" enctype="multipart/form-data">
            <h4>Destinataires</h4>
            <div class="form-check">
                <input class="form-check-input radio_block" type="radio" name="desti" id="radio1" value="1">
                <label class="form-check-label" for="radio1">Tous les membres</label>
            </div>
            <div class="form-check">
                <input class="form-check-input radio_block" type="radio" name="desti" id="radio2" value="2">
                <label class="form-check-label" for="radio2">Membres non incrits</label>
            </div>
            <div class="form-check">
                <input class="form-check-input radio_block" type="radio" name="desti" id="radio3" value="3">
                <label class="form-check-label" for="radio3">Membres incrits</label>
            </div>
            <div class="form-check">
                <input class="form-check-input radio_block" type="radio" name="desti" id="radio4" value="4">
                <label class="form-check-label" for="radio4">Référents</label>
            </div>
            <div class="ligne_top"></div>
            <input type="hidden" name="mailmembre" id="mailmembre" value="<?php echo substr($mailing,0,-1); ?>">
            <div class="input-group mb-3">
                <div class="input-group-prepend">
                    <span class="input-group-text" id="inputGroup-sizing-default">Sujet</span>
                </div>
                <input type="text" class="form-control" name="sujet" aria-label="Default" aria-describedby="inputGroup-sizing-default" id="sujetMail">
            </div>
            <div class="form-group">
                <label for="exampleFormControlTextarea1">Mail</label>
                <textarea class="form-control" name="mail" id="textMail" rows="3"></textarea>
            </div>
            <div class="button_right">
            	<button type="submit" class="btn btn-primary" name="envoyer" id="sendMailing" disabled="disabled">Envoyer</button>
        	</div>
        </form>



Quand je clique sur "Envoyer" il ne récupère pas les pas les adresses mails.


Configuration: Macintosh / Chrome 101.0.4951.64

8 réponses

yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 Ambassadeur 1 554
3 juin 2022 à 16:00
bonjour,
le point de départ, c'est d'afficher le contenu de $_POST.
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
3 juin 2022 à 16:02
Bonjour,

Commence par faire un var_dump de la variable $_POST et regarde ce qu'elle contient.

De plus, vu que tu fais du PDO, je t'invite à mettre en place ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Tu peux aussi remplacer ta boucle pour concaténer tes adresses .. par l'utilisation de la fonction implode()
https://www.php.net/manual/fr/function.implode.php


0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
3 juin 2022 à 16:39
Ma variable est NULL au chargement de la page. Une fois postée j'ai : String (1) "1"

La page appelé dans le <form> envoi un mail.

La liste n'est pas remplie par le POST.

Je bloque
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
3 juin 2022 à 19:37
As tu modifié ton code PDO comme je te l'ai demandé ?
Et puis.. as tu essayé de faire des var_dump des différentes variables ($tableau, $mailing) pour voir ce qu'elles contiennent ? (Au passage.. je t'ai demandé un var_dump de $_POST ... pas un var_dump de $_POST['desti'] )

Et as tu testé ta requête DIRECTEMENT dans ta bdd ( via l'interface de phpmyadmin par exemple ) ? Te retourne-t'elle ce que tu veux ? peux tu nous en mettre une capture écran ?
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
7 juin 2022 à 17:35
Jordane45,
Je m'excuse pour ma réponse si tardive.

en réponse à tes questions,

J'ai bien modifier mon code avec les erreurs PDO

var_dump($_POST);
array(5) { ["desti"]=> string(1) "1" ["mailmembre"]=> string(0) "" ["sujet"]=> string(0) "" ["mail"]=> string(0) "" ["envoyer"]=> string(0) "" }
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
7 juin 2022 à 17:49
et donc, peux tu nous montrer ton code modifié ?
0
yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 1 554
7 juin 2022 à 20:36
As-tu remarqué que ton formulaire ne renvoyait presque rien?
Est-ce intentionnel?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
7 juin 2022 à 17:57
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

include 'header.php';
if(isset($_SESSION['log'])){
?>

<div class="ligne_top"></div>
<div class="row">
    <div class="col-12 col-sm-12 col-md-8">
        <?php
            if(isset($_POST['desti']) == 1){
                $sql = "SELECT id_membre,email FROM membre WHERE email != ''";	
                $pdo->exec('SET NAMES utf8');
                $resultat = $pdo->query($sql);
                $tableau = array();
                while($var = $resultat->fetch()){
                    $tableau[] = $var['email'];
                }
                $mailing = "";
                for($i=0;$i<count($tableau);$i++){
                    $mailing .= $tableau[$i].",";
                }
                var_dump($_POST);
            }

            if(isset($_POST['desti']) == 2){
                $sql = "SELECT id_membre, mail FROM user";	
                $pdo->exec('SET NAMES utf8');
                $resultat = $pdo->query($sql);
                $tab_user = array();
                while($var = $resultat->fetch()){
                    $tab_user[] = $var['id_membre'];
                }
                $user_insrits = "";
                for($i=0;$i<count($tab_user);$i++){
                    $user_insrits .= $tab_user[$i].",";
                }
                $extarct_user = substr($user_insrits,0,-1);

                $sql_not = "SELECT id_membre,email FROM membre WHERE email != '' AND id_membre NOT IN (".$extarct_user.")";
                $pdo->exec('SET NAMES utf8');
                $resu = $pdo->query($sql_not);
                $tableau = array();
                while($var = $resu->fetch()){
                    $tableau[] = $var['email'];
                }
                $mailing = "";
                for($j=0;$j<count($tableau);$j++){
                    $mailing .= $tableau[$j].",";
                }  
            }

            if(isset($_POST['desti'])== 3){
                $sql = "SELECT id_user, mail FROM user";	
                $pdo->exec('SET NAMES utf8');
                $resultat = $pdo->query($sql);
                $tableau = array();
                while($var = $resultat->fetch()){
                    $tableau[] = $var['mail'];
                }
                $mailing = "";
                for($i=0;$i<count($tableau);$i++){
                    $mailing .= $tableau[$i].",";
                }
            }

            if(isset($_POST['desti']) == 4){
                $sql = "SELECT id_membre,email,ref FROM membre WHERE email != '' AND ref = 1";	
                $pdo->exec('SET NAMES utf8');
                $resultat = $pdo->query($sql);
                $tableau = array();
                while($var = $resultat->fetch()){
                    $tableau[] = $var['email'];
                }
                $mailing = "";
                for($i=0;$i<count($tableau);$i++){
                    $mailing .= $tableau[$i].",";
                }
            }
        ?>
        <h1>Mailing</h1>    
        <form id= "" action="mailing.php" method ="POST" enctype="multipart/form-data">
        <!--<form id= "" action="mail_send.php" method ="POST" enctype="multipart/form-data">--> 
            <h4>Destinataires</h4>
            <div class="form-check">
                <input class="form-check-input radio_block" type="radio" name="desti" id="radio1" value="1">
                <label class="form-check-label" for="radio1">Tous les membres</label>
            </div>
            <div class="form-check">
                <input class="form-check-input radio_block" type="radio" name="desti" id="radio2" value="2">
                <label class="form-check-label" for="radio2">Membres non incrits</label>
            </div>
            <div class="form-check">
                <input class="form-check-input radio_block" type="radio" name="desti" id="radio3" value="3">
                <label class="form-check-label" for="radio3">Membres incrits</label>
            </div>
            <div class="form-check">
                <input class="form-check-input radio_block" type="radio" name="desti" id="radio4" value="4">
                <label class="form-check-label" for="radio4">Référents</label>
            </div>
            <div class="ligne_top"></div>
            <input type="hidden" name="mailmembre" id="mailmembre" value="<?php echo substr($mailing,0,-1); ?>">
            <div class="input-group mb-3">
                <div class="input-group-prepend">
                    <span class="input-group-text" id="inputGroup-sizing-default">Sujet</span>
                </div>
                <input type="text" class="form-control" name="sujet" aria-label="Default" aria-describedby="inputGroup-sizing-default" id="sujetMail">
            </div>
            <div class="form-group">
                <label for="exampleFormControlTextarea1">Mail</label>
                <textarea class="form-control" name="mail" id="textMail" rows="3"></textarea>
            </div>
            <div class="button_right">
            	<button type="submit" class="btn btn-primary" name="envoyer" id="sendMailing" disabled="disabled">Envoyer</button>
        	</div>
        </form>
	</div>	
</div>

<?php
}else{
    header('location:../erreur.php');
}
include 'footer.php';			
	

0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
7 juin 2022 à 19:13
As-tu activé la gestion des erreurs dans la connexion à ta base de données ?
Et où as-tu mis le bloc try/catchde ta requête SQL ?
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
7 juin 2022 à 19:24
Pourrais tu me donner la bonne syntaxe ?
Je cherche aussi la bonne syntaxe des requête préparée en SELECT (Tu m'avais donné la bonne syntaxe en INSERT UPDATE et DELETE)
Je trouve plusieurs exemple sur les sites php.

Merci
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
7 juin 2022 à 20:35
Que ça soit un insert, un update, un delete .. ou un select ... c'est toujours la même chose...
//préparation de la requête et des variables
 $sql = "SELECT * FROM matable  WHERE champ1 = :valeur1";

//Les données à envoyer dans la requête
 $datas = array(':valeur1'=>$valeur1);

//Execution de la requete ( TOUJOURS LE MEME CODE...)
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($datas) ;
}catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas);
}
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
9 juin 2022 à 15:42
J'ai fait comme tu m'a dit

$sql = "SELECT id_membre,email FROM membre WHERE email != ''";	
                $datas = array(':id_membre'=>$id_membre, ':email'=>$email);
                
                try{
                    $requete = $bdd -> prepare($sql) ;
                    $requete->execute($datas) ;
                    while($var = $requete->fetch()){
                        $tableau[] = $var['email'];
                    }
                    $mailing = "";
                    for($i=0;$i<count($tableau);$i++){
                        $mailing .= $tableau[$i].",";
                    }
                }catch(Exception $e){
                    echo " Erreur ! ".$e->getMessage();
                    echo " Les datas : " ;
                    print_r($datas);
                }


j'ai :
Notice: Undefined variable: id_membre in /home/........./mailing.php on line 17

Notice: Undefined variable: email in /home/........./mailing.php on line 17

Notice: Undefined variable: bdd in /home/........./mailing.php on line 20

Fatal error: Uncaught Error: Call to a member function prepare() on null in /home/........./mailing.php:20 Stack trace: #0 {main} thrown in /home/........./mailing.php on line 20


Merci de ton aide
0
delaville81 Messages postés 196 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 2 juin 2024
10 juin 2022 à 16:51
J'ai résolu le problème des requêtes SELECT.
Fatal error j'ai remplacé $bdd par $pdo, ça marche.
Je les ai testé indépendamment, elles fonctionnent.

Par contre ça ne résout pas mon problème de liste qui change sur le click de mes boutons radio.

Mon Code PHP pour validation
if(isset($_POST['desti']) == 1){

                $sql = "SELECT id_membre,email FROM membre WHERE email != :email";	
                $nothing = "";
                $datas = array(':email'=>$nothing);
                try{
                    $requete = $pdo->prepare($sql);
                    $requete->execute($datas);
                    $tableau = array();
                    while($var = $requete->fetch()){
                        $tableau[] = $var['email'];
                    }
                    $mailing = "";
                    for($i=0;$i<count($tableau);$i++){
                        $mailing .= $tableau[$i].",";
                    }
                }catch(Exception $e){
                    echo " Erreur ! ".$e->getMessage();
                    echo " Les datas : " ;
                    print_r($datas);
                }     
           }
          
            if(isset($_POST['desti']) == 2){
                
                $sql = "SELECT id_membre, mail FROM user";	
                try{
                    $requete = $pdo->prepare($sql);
                    $requete->execute();
                    $tab_user = array();
                    while($var = $requete->fetch()){
                        $tab_user[] = $var['id_membre'];
                    }
                    $user_insrits = "";
                    for($i=0;$i<count($tab_user);$i++){
                        $user_insrits .= $tab_user[$i].",";
                    }
                    $extarct_user = substr($user_insrits,0,-1);
                }catch(Exception $e){
                    echo " Erreur ! ".$e->getMessage();
                    echo " Les datas : " ;
                    print_r($datas);
                }

                $sql_not = "SELECT id_membre,email FROM membre WHERE email != '' AND id_membre NOT IN ($extarct_user)";
                try{
                    $requet = $pdo->prepare($sql_not);
                    $requet->execute();
                    $tableau = array();
                    while($var = $requet->fetch()){
                        $tableau[] = $var['email'];
                    }
                    $mailing = "";
                    for($j=0;$j<count($tableau);$j++){
                        $mailing .= $tableau[$j].",";
                    }  
                }catch(Exception $e){
                    echo " Erreur ! ".$e->getMessage();
                    echo " Les datas : " ;
                    print_r($datas);
                }
            
            }

            if(isset($_POST['desti'])== 3){
                
                $sql = "SELECT id_user, mail FROM user";	
                try{
                    $requete = $pdo->prepare($sql);
                    $requete->execute();
                    $tableau = array();
                    while($var = $requete->fetch()){
                        $tableau[] = $var['mail'];
                    }
                    $mailing = "";
                    for($i=0;$i<count($tableau);$i++){
                        $mailing .= $tableau[$i].",";
                    }
                }catch(Exception $e){
                    echo " Erreur ! ".$e->getMessage();
                    echo " Les datas : " ;
                    print_r($datas);
                }
            
            }

            if(isset($_POST['desti']) == 4){
                
               $sql = "SELECT id_membre,email,ref FROM membre WHERE email != '' AND ref = 1";
                try{
                    $requete = $pdo->prepare($sql);
                    $requete->execute($datas);
                    $tableau = array();
                    while($var = $requete->fetch()){
                        $tableau[] = $var['email'];
                    }
                    $mailing = "";
                    for($i=0;$i<count($tableau);$i++){
                        $mailing .= $tableau[$i].",";
                    }
                }catch(Exception $e){
                    echo " Erreur ! ".$e->getMessage();
                    echo " Les datas : " ;
                    print_r($datas);
                } 
                
            }



Merci de ton aide
0