Récupérer dernier ID
Résolu
LaChaux78
Messages postés
585
Date d'inscription
Statut
Membre
Dernière intervention
-
LaChaux78 Messages postés 585 Date d'inscription Statut Membre Dernière intervention -
LaChaux78 Messages postés 585 Date d'inscription Statut Membre Dernière intervention -
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
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonsoir, 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; } -
Il 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.