Récupérer une donnée de BDD avec PHP ...

Résolu
Bonjour,

Je n'arrive pas à trouver le bout de code (PHP et SQL) qui me permettrait de récupérer l'avant dernier jeu de données d'une table, de ma base de données...

Si quelqu'un pouvait m'aiguiller voire me donner ce code se serait super :)

Je suis novice en PHP-MySQL, ne soyez pas trop sévère vis-à-vis de ma question ;-)

Merci,
Angy

5 réponses

  1. Salut,

    Tu peux inverse l'ordre avec « ORDER BY cle DESC »
    (où le champ 'cle' est la clé primaire de ta table, souvent 'id')

    Une fois que tu as les plus récent en tête de liste, il suffit de récupérer le deuxième élément.
    Tu peux utiliser « LIMIT 1,1 ».
    0
    1. Bonjour,

      on créé un champ 'id' qui s'incrémente automatiquement,
      on exécute la requéte SQL en mettant une condition

      $req = mysql_query("SELECT champ1,champ2 FROM table WHERE id = MAX(id) -1") or die(mysql_error());

      on affiche

      while ($row=$mysql_fetch_assoc($req)) {
      echo $row['champ1'],$row['champ2'];
      }
      0
      1. Salut ...
        Pas besoin de while, vu que y a qu'un seule résultat ...

        Et c'est plutôt ça ...
        $req = mysql_query("SELECT MAX(id)-1 as id FROM tables") or die(mysql_error());
        0
      2. Ce n'est pas le sujet mais je préfère en profiter pour le dire : la gestion des erreurs SQL avec « or die » est à éviter ! L'exécution de la page est arrêtée et on se retrouve avec des demi-pages et du code invalide.

        Je conseille de faire comme ceci :
        if(($resultat = @mysql_query($query)) === false) {   
            echo 'Erreur SQL : '.mysql_error();   
        } else {   
         echo 'OK';   
         // On peut utiliser $resultat (ressource)   
        }

        Ou mieux, utiliser PDO qui utilise les exceptions pour gérer les erreurs.
        0
    2. Merci pour vos réponses.

      avion-f16 : je pense que cette solution peut complétement me convenir, merci.

      Sinon, pitxu, c'est ce que j'avais fait dans un premier temps ce que tu m'as montré. Le fait est qu'étant amené à supprimer des jeux de données, je ne peux pas me permettre de prendre un résultat du type "toutes les données de ((dernier id)-1)" :-/
      0
      1. Résolu en haut à droite ! ;)
        0
    3. $requete="SELECT * FROM connexions ORDER BY idConnexion DESC LIMIT 1,1";

      Parfait! Code parfaitement fonctionnel :) Merci encore.
      0