Récupérer l'id d'une entrée au moment ou celle-ci est crée - PHP - Programmation
Marsh Posté le 22-06-2011 à 14:40:03
ReplyMarsh Posté le 22-06-2011 à 17:03:49
Merci à toi.
Je viens d'y passer une petit moment, sans succès.
J'ai tenté
Code :
|
et
Code :
|
à la suite de
Code :
|
Mais aucun nombre ne s'affiche.
D'autre part, comment pourrais-je faire, une fois que j'aurai ce nombre, pour l'insérer dans la requête SQL de suppression ?
Edit : C'est à dire, qu'à un moment, je vais assigner la valeur de ce nombre à une variable, mais j'ai l'impression que la syntaxe :
Code :
|
n'est pas correcte.
Merci encore.
Marsh Posté le 23-06-2011 à 15:31:05
Si aucun nombre ne s'affiche, je suppose que c'est ta requête qui échoue.
Car ceci fonctionne chez moi :
Code :
|
Marsh Posté le 23-06-2011 à 21:32:50
Merci à toi !
J'ai tenté en suivant ton script, cela n'a pas fonctionné.
J'ai ensuite tenté de l'adapté à l'existant :
Code :
|
Mais ça n'a pas mieux marché.
J'ai ensuite tenté l'opération suppression :
Code :
|
Sans obtenir de meilleur résultat.
J'avoue que je sèche complètement
Marsh Posté le 24-06-2011 à 11:05:16
$sql="INSERT INTO `table` VALUES (...........)";
$ret=mysql_query($sql);
$id=mysql_insert_id();
Marsh Posté le 24-06-2011 à 12:07:01
Merci
J'ai donc ajouté, pour l'insertion du message :
Code :
|
Mais là encore, je n'obtiens pas le résultat attendu.
Marsh Posté le 24-06-2011 à 13:50:26
Et tu nous certifies qu'en base tes données sont correctement sauvegardées ?
Marsh Posté le 26-06-2011 à 11:23:58
Tout à fait, le titre s'affiche, le message s'affiche.
Mais le n° id non
Marsh Posté le 26-06-2011 à 15:28:35
Pourquoi ne pas utiliser directement la fonction mysql ?
Car à mon avis le problème vient de l'utilsation de pdo (enfin, je vois que ça).
Donc teste avec LAST_INSERT_ID() pour voir.
Marsh Posté le 26-06-2011 à 23:12:27
Merci !
C'est à peu près ce que propose flo850.
Je vais regarder ça de plus près
Edit : Désolé, je n'y suis toujours pas parvenu.
J'ai essayé ceci :
Code :
|
Mais un message d'erreur s'affiche :
Citation : [size=0] Catchable fatal error: Object of class PDOStatement could not be converted to string[/size] |
J'ai essayé de voir là sans y trouver d'indication probante.
J'ai également tenté d'insérer directement la fonction SQL en faisant comme ici, mais lorsque je fais un echo sur un
Code :
|
l'echo m'affiche ce texte tel quel sans interprétation.
Marsh Posté le 29-06-2011 à 11:45:04
orang a écrit : Merci |
Code :
|
Mais là encore, je n'obtiens pas le résultat attendu.
Ne passe par par le $bdd
Code :
|
Ca devrais passer ...
Marsh Posté le 29-06-2011 à 11:45:59
Puis oubli pas le mysql_error() pour afficher les erreurs provenant de mysql.
Marsh Posté le 29-06-2011 à 18:59:57
Merci à toi !
Par contre, désolé, je ne suis pas parvenu à réaliser l'attendu.
Pour :
Code :
|
Puis
Code :
|
Se pose un problème de transmission de la variable $id.
Mais même en faisant cela :
Code :
|
lorsque je ne redirige pas au moment de la création de 'titre' et 'contenu', un chiffre s'affiche et ce chiffre est systématiquement '0'.
Désolé, je sais que je commence à être lourd avec ces questions qui dépassent la question initiale, mais j'avoue être un peu perdu.
Marsh Posté le 29-06-2011 à 19:58:57
orang a écrit : lorsque je ne redirige pas au moment de la création de 'titre' et 'contenu', un chiffre s'affiche et ce chiffre est systématiquement '0'. |
T'es certain que ta clef primaire est en auto-increment ?
Parce là, le 0 indique le contraire.
Code :
|
?
Marsh Posté le 29-06-2011 à 20:12:29
Merci à toi.
Je ne suis pas parvenu à inclure un DESC.
Par contre, j'ai vérifié, tout semble bon :
Marsh Posté le 29-06-2011 à 21:52:01
Je ne me rappelle plus de phpmyadmin, mais l'icone avec la clef, c'est bien pour stipuler une clef primaire ?
ça devrait pas être grisé pour l'id s'il y'en a vraiment une ?
Parce que si pas de primary key, l'auto_increment ne peut être opérationnel.
Bizarre ce type btree
Pour le desc, tu peux normalement l'exécuter dans phpmyadmin.
Marsh Posté le 29-06-2011 à 23:08:57
Ouvre ton my.ini / my.cnf et vérifies que tu as ceci :
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_VALUE_ON_ZERO"
Le mode strict te permet d'afficher les erreurs MySQL avec le plus haut niveau de sévérité, et le no auto value on zero te permet d'insérer la valeur zéro (faut mettre \N à la place de l'id si tu ne veux pas préciser l'id)
Redémarre MySQL et dis nous quoi.
Exporte la structure de la table et copie-colle là nous ici.
Marsh Posté le 30-06-2011 à 00:01:26
Merci !
@boutlatent : Tout à fait, du coup, deux ne sont pas grisées.
Lorsque je tente d'en ajouter une en plus de celle de l'id, j'obtiens le message suivant :
Citation : Incorrect table definition; there can be only one auto column and it must be defined as a key |
Voici pour la structure de la table :
Code :
|
J'ai regardé un peu au sujet du sql mode que tu proposes, je n'ai pas réussi à l'implanter. Le fichier my.ini contient ceci :
Citation : #Path to the language |
Marsh Posté le 01-07-2011 à 18:50:02
Bah en fait, je crois que ça vient bien de ton script php, auquel j'avais mal
Car déjà ce genre de requête, et ta façon d'utiliser le mysql_error() est plutôt saugrenue
orang a écrit : ..... |
Je suppose que les ? ne sont pas insérer tels quels, et que c'était juste pour abréger ton code ?
Claque ton mysql_error() derrière ton query, mysql_query(blabla) or exit (mysql_error());
Et bien évidemment la fonction errorInfo de pdo, puisque tu utilises pdo.
Marsh Posté le 02-07-2011 à 19:14:06
Bonsoir,
Tu parles du
Code :
|
?
car dans ce cas, je l'ai noté ainsi, ne sachant pas noter autre chose.
Sinon, j'ai évité de rentrer un
Code :
|
car ça me génère des erreurs.
Par contre,
Code :
|
Continue à me renvoyer un beau 0.
Marsh Posté le 22-06-2011 à 11:38:13
Bonjour,
Dans l'intention de permettre une suppression, depuis le navigateur, d'une entrée crée par l'utilisateur, je souhaiterais savoir comment récupérer l'id.
Les choses se présenteraient alors comme suit :
Script pour la création de l'entrée :
Suppression de l'entrée :
Par avance, je vous remercie
Message édité par orang le 29-06-2011 à 19:06:52