Récupérer la dernière id d'une base mysql

Résolu
gautier019 Messages postés 154 Statut Membre -  
gautier019 Messages postés 154 Statut Membre -
Bonjour,

J'ai ma base de donnée mysql en local comme ceci :

connexion: 'localhost','root',null
base de donnée: support

table: ticket
id - pseudo - email
1 ............ - ........
2 ............ - ........
3 ............ - ........
4 ............ - ........
...

Je souhaite récupérer sous forme de variable php le champ "pseudo" et "email" de la dernière id.

Je pense qu'il y a moyen avec

"SELECT MAX(id) FROM ticket"

J'ai fait des recherches mais je ne trouve rien qui fonctionne.
Merci d'avance
--
gautier019

3 réponses

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    Salut, utilise des sous-requêtes:
    SELECT * FROM ticket WHERE id=(SELECT max(id) FROM ticket)
    1
  2. gautier019 Messages postés 154 Statut Membre 17
     
    Mais je ne sais pas comment faire, avant j'utilisait :

    try {
    
    $ms_connexion = new PDO('mysql:host='.$ms_host.';dbname='.$ms_name.'; charset=utf8', $ms_user, $ms_pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
    $ms_fonctional = 'on';

    if(!empty($_SESSION['session'])) {
    $req_selectMembre = $ms_connexion->prepare('SELECT * FROM membres WHERE session=:session');
    $req_selectMembre->execute(array(
    'session' => $_SESSION['session']
    ));

    $selectMembre = $req_selectMembre->fetch();
    $pseudo = $selectMembre['pseudo'];
    $mail = $selectMembre['mail'];
    } else {
    return false;
    }
    } catch (PDOException $e) {
    $ms_fonctional = 'off';
    }

    J'ai vu ça dans un tuto et la je suis vraiment pommé 0.0
    1
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      Je vois pas vraiment où tu veux caser cette séléction de dernier ID: le code que tu as donné est un code typique d'un système de membres...
      0
    2. gautier019 Messages postés 154 Statut Membre 17
       
      oui est c'est la première partie qui consiste à envoyer les données et je cherche le moyen d'avoir la dernière ID pour la seconde partie.
      0
    3. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      OK, bah dans le même try/catch, ajoute:
      $req_selectDernier = $ms_connexion->query('SELECT * FROM ticket WHERE id=(SELECT max(id) FROM ticket)');
      
      $dernier = $req_selectDernier->fetch(PDO::FETCH_ASSOC);
      $dernier
      sera un tableau associatif des colonnes de la ligne avec l'ID max:
      $dernierPseudo = $dernier['pseudo'];
      
      $dernierEmail = $dernier['email'];
      0
    4. gautier019 Messages postés 154 Statut Membre 17
       
      Merci !

      Sait tu comment faire pour ensuite supprimer cette ligne en php ?
      0
    5. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      $ms_connexion->query('DELETE FROM ticket WHERE id='.$dernier['id']);
      Pas besoin d'une requête 2 temps pour éviter les injections: il ne peut pas y en avoir vu que l'utilisateur ne touche pas au champ
      id
      , qui est un int en auto-increment géré par la BDD.
      0
  3. gautier019 Messages postés 154 Statut Membre 17
     
    Ok merci !!
    0