Récupérer dernier ID
Résolu
Bonjour,
J'arrive presque à la fin de ma partie administration et voilà que je tombe sur un p'tit problème.
Lorsque je veux récupérer le dernier ID voici l'erreur qui m'est retourné.
Voici la page concerné pouvez-vous m'aider s'ils vous plait, je vous remercie.
J'arrive presque à la fin de ma partie administration et voilà que je tombe sur un p'tit problème.
Lorsque je veux récupérer le dernier ID voici l'erreur qui m'est retourné.
Fatal error: Call to a member function lastInsertId() on null in
Voici la page concerné pouvez-vous m'aider s'ils vous plait, je vous remercie.
$action = 'new';
$a = !empty($_GET['a']) ? $_GET['a'] : NULL;
$submit = !empty($_POST['submit']) ? $_POST['submit'] : NULL;
$haction = !empty($_POST['haction']) ? $_POST['haction'] : NULL;
$idrep = !empty($_REQUEST['idrep']) ? $_REQUEST['idrep'] : NULL;
$drepet = !empty($_POST['drepet']) ? dw2m($_POST['drepet']) : '';
$idpers = !empty($_POST['idpers']) ? $_POST['idpers'] : '';
$idloc = !empty($_POST['idloc']) ? $_POST['idloc'] : '';
switch($a) {
case 'new': $action = 'new'; break;
default : $action = 'new'; break;
}
if($submit) {
switch($haction) {
case 'new':
// Construction de la requete d'ajout
$sql = "INSERT INTO cdc_repetitions (drepet, idloc) VALUES (:drepet, :idloc)";
$datas = array('drepet' => $drepet, 'idloc' => $idloc);
$result = executeQuery($sql,$datas);
$typenr = "enregistré";
$reqaj = $sql;
$idrep = $bdd->lastInsertId();
$presents = isset($_POST['presents']) ? $_POST['presents'] : NULL;
if (is_array($presents)) {
foreach($presents as $idpers) {
$sql = "INSERT INTO cdc_assister (idpers, idrep) VALUES (:idpers, :idrep)";
$datas = array('idpers' => $idpers, 'idrep' => $idrep);
$result = executeQuery($sql,$datas);
$typenr = "enregistré";
$reqaj = $sql;
}
}
$success = "<span class='success'>Les présences à la répétition - ".trim(stripslashes(" du " . dateFR("$drepet")))." - a été $typenr.</span>";
break;
}
}
4 réponses
-
Contributeurbonsoir, que vaut $bdd?
-
Bonsoir,
En haut de ma page j'ai
require("libs/init.php");
et dans le fichier init.php j'ai les 2 fonctionsfunction bdd() { $PARAM_hote ='**********'; $PARAM_nom_bdd ='*********'; $PARAM_utilisateur ='************'; $PARAM_mot_passe ='******'; try { $bdd = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bdd, $PARAM_utilisateur, $PARAM_mot_passe); $bdd->exec("SET CHARACTER SET utf8"); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e) { echo 'Impossible de se connecter à la base de donnée</br>'; echo 'Erreur : ' . $e->getMessage() . '<br />'; echo 'N° : ' . $e->getCode(); } return $bdd; } // Fonction qui sert à faire les requêtes SQL // Contient déjà le try/catch function executeQuery($sql,$datas = NULL) { $bdd = bdd(); //exécution de la requête try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); exit(0); // en cas d'erreur.. arrête le script ! } return $requete; } -
ModérateurIl faut ajouter un nouvelle fonction à ton fichier init.php
//Fonction à utiliser pour faire un INSERT // return : l'id auto-incrémenté généré par l'insertion function QueryInsert($sql,$datas = NULL) { $bdd = bdd(); //exécution de la requête try { $requete = $bdd->prepare($sql); $requete->execute($datas); $newid = $bdd->lastInsertId(); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); exit(0); // en cas d'erreur.. arrête le script ! } return $newid; }
et donc dans ton codecase 'new': // Construction de la requete d'ajout $sql = "INSERT INTO cdc_repetitions (drepet, idloc) VALUES (:drepet, :idloc)"; $datas = array('drepet' => $drepet, 'idloc' => $idloc); $idrep = QueryInsert($sql,$datas); // récupère l'id AutoIncrémenté de l'insert $typenr = "enregistré"; $reqaj = $sql //la suite de ton code ....
-
Bonjour,
Je te remercie c'est nickel.
Cordialement.