Execution de script

Fermé
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024 - 17 sept. 2021 à 11:30
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 17 sept. 2021 à 14:58
Bonjour,
Je m'arrache les cheveux, je ne comprends pas mon erreur.
La requête UDPATE fonctionne mais l'INSERT non.
Les variables sont bien postées.

 $sql = 'SELECT filiation FROM membre WHERE id_membre = '.$_POST['id_memb'].'';			
    $pdo->exec('SET NAMES utf8');
    $resultat = $pdo->query($sql);	
    $var = $resultat->fetch();

    if($var['filiation'] == 0){
        $sql_up = 'UPDATE membre SET filiation = :filiation WHERE id_membre = :id_membre';
        $id_membre = $_POST['id_memb'];
        $filiation = 1;
        $data = array(':id_membre'=>$id_membre,':filiation'=>$filiation);

        try{
            $requete = $pdo->prepare($sql_up);
            $requete->execute($data);
        }
        catch(Exception $e){
            echo " Erreur ! ".$e->getMessage();
            echo " Les datas : " ;
            print_r($data);
        }
       
            if($_POST['pere'] == 0){$pere = '';}else{$pere = $_POST['pere'];}
            if($_POST['mere'] == 0){$mere = '';}else{$mere = $_POST['mere'];}
            if($_POST['situation'] == 0){$situation = '';}else{$situation = $_POST['situation'];}
            if($_POST['conjoint'] == 0){$conjoint = '';}else{$conjoint = $_POST['conjoint'];}	
            if($_POST['annee_union'] == '' OR $_POST['mois_union'] == '' OR $_POST['jour_union'] == ''){
                $date_union = '';
            }else{
                $date_union = $_POST['annee_union'].'-'.$_POST['mois_union'].'-'.$_POST['jour_union'];
            }
            if($_POST['lieu_union'] == ''){$lieu_union = '';}else{$lieu_union = $_POST['lieu_union'];}
            $lieu_union = $_POST['lieu_union'];
            
            if($_POST['situation2'] == 0){$situation2 = '';}else{$situation2 = $_POST['situation2'];}
            if($_POST['conjoint2'] == 0){$conjoint2 = '';}else{$conjoint2 = $_POST['conjoint2'];}					
            if($_POST['annee_union2'] == '' OR $_POST['mois_union2'] == '' OR $_POST['jour_union2'] == ''){
                $date_union2 = '';
            }else{
                $date_union2 = $_POST['annee_union2'].'-'.$_POST['mois_union2'].'-'.$_POST['jour_union2'];
            }
            if($_POST['lieu_union2'] == ''){$lieu_union2 = '';}else{$lieu_union2 = $_POST['lieu_union2'];}
            
            $date_crea = date('Y-m-d'); 
            $user_crea = $_SESSION['id'];


            $sql_fil = 'INSERT INTO filiation (id_membre, pere, mere, situation, conjoint, date_union, lieu_union, situation2, conjoint2, date_union2, lieu_union2, user, date) 
                values (:id_membre, :pere, :mere, :situation, :conjoint, :date_union, :lieu_union, :situation2, :conjoint2, :date_union2, :lieu_union2, :user, :date)';
            
            $datas = array(':id_membre'=>$id_membre, ':pere'=>$pere, ':mere'=>$mere, ':situation'=>$situation, ':conjoint'=>$conjoint, ':date_union'=>$date_union, ':lieu_union'=>$lieu_union, 
            ':situation2'=>$situation2, ':conjoint2'=>$conjoint2, ':date_union2'=>$date_union2, ':lieu_union2'=>$lieu_union2,
            ':user'=>$user_crea, ':date'=>$date_crea);	
            
            try{
                $requetes = $pdo->prepare($sql_fil);
                $requetes->execute($datas);
            }
            catch(Exception $e){
                echo " Erreur ! ".$e->getMessage();
                echo " Les datas : " ;
                print_r($datas);
            }  
                
    }


Merci d'avance pour voter aide

Configuration: Macintosh / Chrome 93.0.4577.63

A voir également:

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
17 sept. 2021 à 12:22
Bonjour,

ça ne marche pas.. c'est à dire ?
Tu as un message d'erreur ?
Tu as fais un print_r de ta variable $datas pour voir si elle contient les bonnes données ?
Tu as testé ta requête en direct dans ta bdd (via l'onglet sql de phpmyadmin) pour voir si elle fonctionne ?


PS: au lieu de faire de IF/ELSE pour tes variables, je pense qu'il serait plus propre d'utiliser l'écriture ternaire
par exemple, au lieu de
 if($_POST['pere'] == 0){$pere = '';}else{$pere = $_POST['pere'];}


ecrire :
$pere = !empty($_POST['pere']) ? $_POST['pere'] : ""; 


PS² : Toute ton code se trouve dans le if
  if($var['filiation'] == 0){

c'est normal ?


0
delaville81 Messages postés 188 Date d'inscription jeudi 6 novembre 2008 Statut Membre Dernière intervention 12 avril 2024
17 sept. 2021 à 14:46
Merci Jordane,
J'ai fait du ternaire comme conseillé.
Mon print_r a bien affiché les valeurs.
J'ai réussi à faire l'insert en ayant commenté le try catch de dessus sur l'update.

Ma question : peut on utiliser 2 try catch dans une même fonction ?

merci de ton aide
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
17 sept. 2021 à 14:58
oui
0