Bonjour,
je souhaite coder une insertion en bdd avec pdo, le mieux possible et j'aurais besoin de vos conseils.
Il s'agit d'un panier simplifié: je teste la réf. du panier et si elle correspond à une entrée en bdd, je met cette entrée à jour, sinon, je créé l'entrée correspondante.
Je me perd entre tous les try et catch, je ne sais pas s'ils sont au bon endroit, s'il n'y en a pas qui seraient redondants etc.
Ensuite, j'ai utilisé 2 variables différentes $stmt et $stmtA et ce n'est sans doute plus la peine (mon code était différent à l'origine).
Voici le code, merci à ceux qui prendront le temps d'y jeter un œil!
Modifié par Acidy (29 Jul 2014 - 17:55)
je souhaite coder une insertion en bdd avec pdo, le mieux possible et j'aurais besoin de vos conseils.
Il s'agit d'un panier simplifié: je teste la réf. du panier et si elle correspond à une entrée en bdd, je met cette entrée à jour, sinon, je créé l'entrée correspondante.
Je me perd entre tous les try et catch, je ne sais pas s'ils sont au bon endroit, s'il n'y en a pas qui seraient redondants etc.
Ensuite, j'ai utilisé 2 variables différentes $stmt et $stmtA et ce n'est sans doute plus la peine (mon code était différent à l'origine).
Voici le code, merci à ceux qui prendront le temps d'y jeter un œil!
try {
$stmt = $dbh->prepare("SELECT COUNT(*) as nbe FROM $table WHERE refCmd = :refCmd");
$stmt->bindParam(':refCmd', $reference);
$stmt->execute();
$res = $stmt->fetchAll();
$nombre = $res[0]['nbe'];
//$nombre =1;
if ($nombre>0) {// s'il y a déjà une commande avec cette référence, on l'écrase...
try{
$stmtA = $dbh->prepare("UPDATE $table SET refCmd = :refCmd, dateCmd = :dateCmd, civilite = :civilite, nom = :nom, prenom = : prenom, mail = :mail, adresse = :adresse,
cp = :cp, ville = :ville, pays = : =pays, montant = :montant, commentaire = :commentaire WHERE refCmd = :refCmd");
} catch (PDOException $erreur) {
if ($version) { echo 'Erreur : '.$erreur->getMessage();
} else { echo 'Ce service est momentanément indisponible. Veuillez nous excuser pour la gêne occasionnée.';
}
}
} else {// si la référence n'existe pas
try{
$stmtA = $dbh->prepare("INSERT INTO $table (refCmd, dateCmd, civilite, nom, prenom, mail, adresse, cp, ville, pays, montant, commentaire)
values (:refCmd, :dateCmd, :civilite, :nom, : prenom, :mail, :adresse, :cp, :ville, : pays, :montant, :commentaire)");
} catch (PDOException $erreur) {
if ($version) { echo 'Erreur : '.$erreur->getMessage();
} else { echo 'Ce service est momentanément indisponible. Veuillez nous excuser pour la gêne occasionnée.';
}
}
}
try { //on passe les paramètres et on execute
$stmtA->bindParam(':refCmd', $reference);
$stmtA->bindParam(':dateCmd',$dateCmd);
$stmtA->bindParam(':civilite', $civilite);
$stmtA->bindParam(':nom', $nom);
$stmtA->bindParam(':prenom', $prenom);
$stmtA->bindParam(':mail', $mail);
$stmtA->bindParam(':adresse', $adresse);
$stmtA->bindParam(':cp', $codePostal);
$stmtA->bindParam(':ville', $ville);
$stmtA->bindParam(':pays', $pays);
$stmtA->bindParam(':montant', $montant);
$stmtA->bindParam(':commentaire', $commentaire);
$stmtA->execute();
$dbh = null;
} catch (PDOException $erreur) {
if ($version) {
echo 'Erreur : '.$erreur->getMessage();
} else {
echo 'Ce service est momentanément indisponible. Veuillez nous excuser pour la gêne occasionnée.';
}
}
} catch (PDOException $erreur) {
if ($version) {
echo 'Erreur : '.$erreur->getMessage();
} else {
echo 'Ce service est momentanément indisponible. Veuillez nous excuser pour la gêne occasionnée.';
}
}
Modifié par Acidy (29 Jul 2014 - 17:55)