Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1104 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Requete mysql qui s'execute avant l'execution de la page

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete mysql qui s'execute avant l'execution de la page

n°1963867
johnson950
Posté le 08-02-2010 à 11:53:17  profilanswer
 

Bonjour,
 
Voici mon problème :
 
Prenons un exemple simple :  
un utilisateur A veut faire une sélection d'objet.
Afin de vérifier qu'il ne possède pas déjà cet objet, je vérifie avec son identifiant "utilisateur A" qu'il ne possède rien sur la base de données.
 

Code :
  1. $obj_a_inserer = "tv";
  2. $identifiant = "utilisateur A";
  3. $tab_id_objet = array();
  4. //Connexion a la BDD
  5. $connexion = mysql_connect($host, $login, $mdp);
  6. mysql_select_db("toto" ); // Sélection de la base mateo21
  7. $resultat = mysql_query("SELECT objet
  8.    FROM test
  9.   WHERE identifiant='$identifiant';" ) or die(mysql_error());
  10. $i = 0;
  11. while($donnees = mysql_fetch_assoc($resultat)){
  12. $tab_id_objet[$i] = $donnees['id_objet'];
  13. $i++;
  14. }
  15. mysql_close();
  16. if (in_array($obj_a_inserer,$tab_id_objet)){
  17. echo "Entre 1".'<br>';
  18. }else{
  19. echo "Entre 2".'<br>';
  20. }


 
Ce code fonctionne très bien !
 
Je veux maintenant insérer la valeur si elle n'existe pas dans la base de données

Code :
  1. $obj_a_inserer = "tv";
  2. $identifiant = "utilisateur A";
  3. $tab_id_objet = array();
  4. //Connexion a la BDD
  5. $connexion = mysql_connect($host, $login, $mdp);
  6. mysql_select_db("toto" ); // Sélection de la base mateo21
  7. $resultat = mysql_query("SELECT objet
  8.    FROM test
  9.   WHERE identifiant='$identifiant';" ) or die(mysql_error());
  10. $i = 0;
  11. while($donnees = mysql_fetch_assoc($resultat)){
  12. $tab_id_objet[$i] = $donnees['id_objet'];
  13. $i++;
  14. }
  15. mysql_close();
  16. if (in_array($obj_a_inserer,$tab_id_objet)){
  17. echo "Entre 1".'<br>';
  18. }else{
  19. echo "Entre 2".'<br>';
  20. $connexion = mysql_connect($host, $login, $mdp);
  21. mysql_select_db("toto" );
  22. mysql_query("INSERT INTO test VALUES ('$identifiant','$obj_a_inserer');" ) or die(mysql_error());
  23. mysql_close();
  24. }


 
C'est la que se pose mon problème, je me retrouve toujours dans la boucle "Entre  1", que l'objet soit ou ne soit pas la base de données...
En plus, l'objet a insérer est bien inséré dans la base de données...
 
On dirait que la requête pour inclure l'objet se fait des le démarrage de la page et qu'ensuite il exécute le contenu de la page.
 
Savez vous d'où peux provenir ce phénomène ?
 
Merci
 
 
 
 

mood
Publicité
Posté le 08-02-2010 à 11:53:17  profilanswer
 

n°1963886
rufo
Pas me confondre avec Lycos!
Posté le 08-02-2010 à 13:29:15  profilanswer
 

c'est normal que dans ta requête SQL, le champ dans le select s'appelle "objet" alors que quand tu récupère le résultat, le champ s'appelle "id_objet"?
 
ps : c'est très ballot de fermer et réouvrir ta connexion dans le script. Faut l'ouvrir une fois en début et la fermer à la in du script :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1963889
johnson950
Posté le 08-02-2010 à 13:43:39  profilanswer
 

Bonjour,
 
Merci pour ta réponse.
 
Pour ta première question, il s'agit juste d'une faute de frappe.
 
Pour ton PS : j'ai tout tester pour savoir d'où ca pouvait venir, d'habitude je ne ferme jamais la connexion avant d'avoir terminer.

n°1963891
Pascal le ​nain
Posté le 08-02-2010 à 13:49:29  profilanswer
 

Tu sais que tu peux ouvrir la connexion mysql au début de la page, et la fermeture se fera toute seule à la fin  ;)  
 
Ensuite tu peux remplacer
 

Code :
  1. $i = 0;
  2. while($donnees = mysql_fetch_assoc($resultat)){
  3. $tab_id_objet[$i] = $donnees['id_objet'];
  4. $i++;
  5. }


 
...par...
 

Code :
  1. while($donnees = mysql_fetch_assoc($resultat)){
  2.     $tab_id_objet[] = $donnees['id_objet'];
  3. }


 
Ensuite, 'id_objet' n'est pas demandé par ta requête SQL, je ne vois pas comment tu peux l'utiliser par la suite  ;)  
 
 
Enfin, tu peux faire tout ca en SQL pur...
 

Code :
  1. SELECT COUNT(id_objet) AS nbre
  2. FROM test
  3. WHERE identifiant='$identifiant'
  4.     AND id_objet='$obj_a_inserer'


 
Ensuite tu récupères la réponse :
 

Code :
  1. $donnees = mysql_fetch_assoc($resultat);
  2. $nombre = $donnees['nbre'];


 
$nombre vaudra soit 0, soit 1 (ou plus s'il y a un problème  :na: ), et tu peux l'utiliser dans tes conditions  ;)


Message édité par Pascal le nain le 08-02-2010 à 14:14:06

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Requete mysql qui s'execute avant l'execution de la page

 

Sujets relatifs
Erreur de requete Post avec HttpClientRequete SQL de selection complexe
Requete MySQL avec condition globalePB requête récursive
Script pour recuperer des données dans une page .htmComment écrire l'uptime du serveur dans une page php ?
Remplacer le contenu d'une pagetrigger sous requete
Trouver les sauts de page 
Plus de sujets relatifs à : Requete mysql qui s'execute avant l'execution de la page


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR