Affichage du dernier enregistrement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage du dernier enregistrement

par Divad » 31 août 2005, 19:04

Effectivement il y a eu quelques "boulettes" lors de la création de la table mais je les corrige avec ta suggestion Cyrano.

L'auto_increment est effectivement le plus simple. Je suis obliger de rajouter un champ de plus car je ne peux absolument pas mettre un des champ existant en auto_increment car j'en ai besoin pour plein d'autre binze.

Actuellement tout est en ordre. Pas de bug constaté. Merci pour le tuyau mais dès mon premier post j'avais en partie raison en disant que c'était gros comme une maison :)


PS :Cyrano, j'adore ta signature. Le seul problème c'est que je ne connais l'adresse de ce qui devait êtr e à l'époque un soit disant codeur :)

par pjl » 31 août 2005, 12:45

de toute facon, ca doit correspondre à une logique et ce n'est pas MySQL qui va deviner cette logique.

par finipe » 31 août 2005, 12:42

Tu devrais malgré tout mettre un champ id en auto_increment. A priori, ça ne gêne en rien pour tes manipulations sur la table ou tes enregistrements, et puis c'est pas pour le peu de place que ça prend en plus.

Et c'est tellement pratique :)

par Cyrano » 31 août 2005, 08:10

Suggestion de modification:

Code : Tout sélectionner

CREATE TABLE `recap` ( `num` INT NOT NULL auto_increment PRIMARY KEY, `nom` VARCHAR(64) NOT NULL, `ville` VARCHAR(32) NOT NULL, `ncontrat` VARCHAR(64) NOT NULL, `datedebut` date NOT NULL, `datefin` date NOT NULL, `type` VARCHAR(32) NOT NULL, ) TYPE=MyISAM;
Je mets une réserve sur la valeur maximum pour le champ "type", et j'ai supposé que "ncontrat" correspond à un numéro de contrat pouvant comporter des lettres, mais un champ TEXT est complètement injustifié, de même que le champ num en TEXT, c'est original aussi, pour les calculs, bonjour l'angoisse.

Bon, si tu ne mets pas le champ num en INT auto_increment, il te reste peut-être le champ "ncontrat" qui peut te servir de repère, ça dépend quelle règle tu utilises pour définir la valeur du champ: il doit bien y avoir une chronologie ou une méthode exploitable pour classer les lignes ?

par Divad » 31 août 2005, 08:02

La bonne blague c'est que je n'ai rien. Voici la structure de ma table :

CREATE TABLE `recap` (
`num` text NOT NULL,
`nom` text NOT NULL,
`ville` text NOT NULL,
`ncontrat` text NOT NULL,
`datedebut` date NOT NULL,
`datefin` date NOT NULL,
`type` text NOT NULL,
) TYPE=MyISAM;

Dans le champ 'num' j'ai des nombres à 8 chiffres qui ne suivent pas mais je doit connaitre le dernier et je commence à m'arracher les cheveux !

par Cyrano » 31 août 2005, 07:57

Quel type de point de repère peux-tu utiliser ? as-tu un champ de type DATETIME qui serait automatiquement initialisé dans la table lors de l'enregistrement par exemple ?

par Divad » 31 août 2005, 07:42

Je sais bien mais il ni à pas de champ "id" en auto_increment :(

par finipe » 31 août 2005, 00:28

L'idéal c'est de prévoir un champ "id" en auto_increment, qui donne une carte d'identité unique à chacun de tes enregistrements. Du coup ton dernier enregistrement est très facile à retrouver :

Code : Tout sélectionner

$Dernier = "SELECT * FROM recap ORDER BY id DESC LIMIT 1";

Affichage du dernier enregistrement

par Divad » 30 août 2005, 23:19

Bonjour,

Je cherche à connaitre le dernier enregistrement dans une table avec un champ qui contient des valeurs numérique.

Si je fais :

Code : Tout sélectionner

$Dernier = "SELECT * FROM recap ORDER BY num DESC LIMIT 1";
je ressort la plus grand valeur numérique qui n'est pas forcément le dernier enregistrement.

Si je supprime le DESC je n'ai rien de mieux. Je suis sur que c'est gros comme une maison mais là je sèche.

Si quelqu'un parmis vous pouvais me donner le truc, ça serait sympa.


Merci.