Last_insert_id() ok en local mais ne marche pas chez 1and1

Signaler
Messages postés
30
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
24 juin 2008
-
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
-
Bonjour, je viens pour la deuxième fois demander de l'aide ici car j'ai un petit problème et j'ai beau me casser la tête, pas moyen...
Alors voila, tout marche en local, mais une fois chez mon hébergeur plus rien.
J'ai créer un premier formulaire dans lequel je rentre le nom d'un jeu video ainsi que ces carractéristiques (éditeur...)
De là, aprés insert, je vais sur une deuxième page via un javascript, ou j'ai une liste déroulante à choix multiple contenant les supports de jeux (PS2, PC...)
Il me fallait donc obtenir l'ID du jeux envoyé dans le formulaire précédent.
En tant que débutant j'ai trouvé cette solution:
-Mon premier formulaire rentre le jeu dans sa base.
-Aprés insert un javascript me renvoi vers une deuxieme page de formulaire qui compléte la précédente.
-sur cette nouvelle page j'utilise last_insert_id() pour récupérer l'ID du jeu précédement entré.
-Je fais apparaitre le nom du jeu dans un champs de texte, et l'ID du jeux dans un champs caché.
-Je selectionne le ou les supports de jeux
Donc l'ID du jeu vas dans une table adjacente, et une boucle note en face les ID des supports (exemple IDjeux = 34, avec IDmachine= 2, 4, 5)
Mais une fois le script en ligne, pas moyen de récupérer l'ID et le nom du jeux dans le champs de texte, alors qu'en local tout marche niquel.
Voici mon code pour la deuxième page de formulaire:
-partie du code faisant apparaitre le nom du jeu dans la page:

<td width="185">">"type="text">&nbsp;</td>

-partie du code php qui récupére le last_insert_id():

mysql_select_db($database_mabase, $mabase);$query_jeux "SELECT IDJeux, NomJeux FROM jeux WHERE IDJeux LAST_INSERT_ID() ";
$IDGame = mysql_query($query_jeux, $mabase) or die(mysql_error());
$row_jeux = mysql_fetch_assoc($IDGame);
$totalRows_jeux = mysql_num_rows($IDGame);

Si qq pouvait m'aider, car vu qu'en local ça marche j'ai beau tout retrafficoté je n'obtient aucun résultat.
Merci d'avance.

Lolo

7 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Hello,

pourquoi ne pas utiliser mysql_insert_id avant de passer sur la deuxième page, et de donner à celle-ci l'id dans un champ caché ou autre ?
Messages postés
30
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
24 juin 2008

Ben en fait déja je ne maitrise pas cette fonction, j'ai trouvé qu'elle faisait la meme chose, en utilisant moins de ressources, mais comme il faut l'appeler depuis la page précédente et que je débute je ne m'en suis pas servi (pour le moment).
Mais meme avec je ne pense pas que ça vienne de la fonction, car un last_insert_id() doit tjs renvoyer qq chose si on l'utilise non!!!
Mais je bloque vraiment sur le fait que rien ne soit renvoyé sur 1and1 alors qu'en local ça marche au top.
J'ai vu que sur 1an1 il y avait MySql5, contre le 4 dans Easyphp. La fonction peut elle etre désactivée?
En tout cas merci pour ta réponse Evangun

Lolo
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Je ne vois pas pourquoi elle serait désactivée non...
c'est étonnant, teste tes requêtes dans phpmyadmin pour voir ce qu'il te donne comme erreur ?

Une intuition à moi, c'est que s'il n'y a pas de last_insert_id, c'est qu'il n'y a pas eu d'insertion dans la base... ton pb vient peut-être donc d'ailleurs.
Messages postés
30
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
24 juin 2008

Ben dans phpmyadmin ne renvoi aucune erreur, tout marche a la perfection dedans.
La page1 insert les données du formulaire, la page2 récupére l'ID inséré par la page1 et le note dans la table adjacente avec les valeurs de la page2.
Et une fois en ligne il y a bien une insertion dans la base aprés la page1. Mais pas moyen de la récupérer avec la page2.
le code de la page 1 est un insert classique.
Celui de la page 2 est:

<?php
mysql_select_db($database_mabase, $mabase);$query_jeux "SELECT jeux.IDJeux, jeux.NomJeux FROM jeux WHERE jeux.IDJeux LAST_INSERT_ID()";
$jeux = mysql_query($query_jeux, $mabase) or die(mysql_error());
$row_jeux = mysql_fetch_assoc($jeux);
$totalRows_jeux = mysql_num_rows($jeux);
//
puis la boucle qui insere la suite de mon formulaire de la page2, mais là aucun problème
?>

et dans la page2 l'appel se fait par:

">
              " readonly="true">

Je n'y comprend plus rien là!!!

Lolo
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Je ne comprends pas ce que tu veux dire par

et dans la page2 l'appel se fait par:

">
              " readonly="true">

ceci dit, ce qui m'étonne c'est plus que ça marchait en local !!
peut-être as-tu une connexion sql persistente en local et pas chez ton hébergeur. Parce que last insert id ne marche que sur la session sql en cours, donc si tu déconnectes et reconnectes entre 2 pages, normal que ça ne marche plus.

Bon mais bref, envoie l'id en champ caché grâce à mysql_insert_id ( ) sur la page 1 et ce sera aussi bien.
Messages postés
30
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
24 juin 2008

Encore merci Evangun,
Mais j'ai eu beau chercher et pas moyen de faire marcher ça en ligne.
Je n'avais pas pensé non plus au fait qu'il puisse y avoir une déconnection entre les deux pages (débutant, et ouais...  lol).
Mais ce n'est pas ça non plus car je ne fermé pas les connections.
Bon du coup j'ai suivi ton conseil avec mysql_insert_id(), j'ai un peu potasser le truc et je l'ai inclus dans le script de la page1 et ça marche, meme en ligne.
Du coup je n'ai plus qu'une seule page qui gére tout.
Je te remercis encore pour ton aide.
Je reste un peu sur ma faim pour le coup mais je vais continuer à chercher.

Lolo
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
En fait par défaut, la connexion se ferme automatiquement à la fin de chaque page, même si tu ne fais pas mysql_close( ) ! De toute évidence c'est ce qui se passe chez ton hébergeur et c'est normal. C'est chez toi qu'il doit y avoir une connexion persistante, et c'est inhabituel.
Mystère élucidé ?