Execution de script
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.
Merci d'avance pour voter aide
--
Bien PHPment et MySQLment
Delaville
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
--
Bien PHPment et MySQLment
Delaville
2 réponses
-
ModérateurBonjour,
ç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 deif($_POST['pere'] == 0){$pere = '';}else{$pere = $_POST['pere'];}
ecrire :$pere = !empty($_POST['pere']) ? $_POST['pere'] : "";
PS² : Toute ton code se trouve dans le ifif($var['filiation'] == 0){
c'est normal ?
-
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