Page 1 sur 1

Problème INSERT PHP/mysql

Posté : 02 mai 2011, 17:32
par Swardz
Bonjour,

J'ai construis 2 fonctions. L'une permettant de compter le nombre d'occurence d'un champ (num_nd dans la table 'bacara' et num_désignation dans la table 'gpc').

Voilà la code de la première fonction qui fonctionne :

Code : Tout sélectionner

function nb_occ_nd_gpc() { mysql_query("TRUNCATE TABLE bacara_occ_nd_gpc"); $req=mysql_query("SELECT num_nd FROM bacara"); $req2=mysql_query("SELECT num_designation FROM gpc"); $count=0; while($ligne=mysql_fetch_assoc($req)) { if($ligne['num_nd']!=0) { while($ligne2=mysql_fetch_assoc($req2)) { if($ligne['num_nd'] == $ligne2['num_designation']) { $count++; } } } mysql_query("INSERT INTO bacara_occ_nd_gpc (num_nd,nb_occ_nd_gpc) VALUES ({$ligne['num_nd']},$count)"); mysql_data_seek($req2,0); $count=0; } }
le num_nd et le nombre d'occurence sont stoqués dans une table préalablement crée : 'bacara_occ_nd_gpc'.

Dans les 3 différentes tables, le numéro qui est comparé est stocké dans un champs INT de taille 10.

Jusque là aucun problème


Ma deuxième fonction est pratiquement similaire, il y a seulement plus de champs mis en relation, et cette fois-ci les champs sont tous de type VARCHAR de taille 255.

J'ai fais des traces histoire de vérifier le contenu des variable, tout est ok mais la requête d'insertion ne s'éxecute pas, je suis débutant en php, peut être que quelqu'un pourrait m'éclairer!
Apercu du code de la deuxième fonction :

Code : Tout sélectionner

function nb_occ_ll_gpc() { mysql_query("TRUNCATE TABLE bacara_occ_ll_gpc"); $req=mysql_query("SELECT num_pres_comm_ft_re FROM bacara"); $req2=mysql_query("SELECT num_pres_comm_ft FROM bacara"); $req3=mysql_query("SELECT refint FROM gpc"); $count=0; while(($ligne=mysql_fetch_assoc($req)) && ($ligne2=mysql_fetch_assoc($req2))) { //echo"boucle bacara ---<br>"; if($ligne2['num_pres_comm_ft']!='') { //echo" 2eme colonne ----<br>"; while($ligne3=mysql_fetch_assoc($req3)) { if(substr_count($ligne3['refint'],$ligne2['num_pres_comm_ft']) >=1) { $count++; //echo $ligne3['refint'];echo"------";echo $ligne2['num_pres_comm_ft'];echo "<br>"; //echo $count;echo"<br>"; } } //echo $ligne2['num_pres_comm_ft'];echo"-------------------------------------";echo $count;echo"<br>"; mysql_query("INSERT INTO bacara_occ_ll_gpc(num_ll,nb_occ_ll_gpc) VALUES ({$ligne2['num_pres_comm_ft']},$count)"); // <=== requête non executée } elseif($ligne['num_pres_comm_ft_re']!='') { //[......]} mysql_data_seek($req3,0); $count=0; } }

Je pensais que la non execution de la requête venait d'une discordance au niveau des types de champs dans les différentes tables, mais tout est cohérent, si quelqu'un pouvait jeter un petit coup d'oeil car je bloque vraiment, merci.

Re: Problème INSERT PHP/mysql

Posté : 02 mai 2011, 21:07
par Ryle
Si ta fonction affiche bien les echo"-------------------------------------";echo $count;echo"<br>" quand tu enlèves les commentaires, c'est que ta requête est bien exécutée. Si tu n'as pas de résultat, le problème vient sans doute d'une erreur SQL lors de l'exécution... tu peux le vérifier en contrôlant le résultat du mysql_query() ou en ajoutant un "or die (mysql_error())" qui te permettra de savoir s'il n'y a pas une erreur dans la requête sql que tu génères...

Par ailleurs, tu devrais également regarder du côté des jointures et fonction de groupe en sql. A vue de nez ta première fonction pourraient être grandement simplifiée avec une requête du genre :
SELECT num_nd , COUNT(*) AS nombre FROM bacara, gpc 
  WHERE num_nd = num_designation 
    AND num_nd != 0
  GROUP BY num_nd 

Re: Problème INSERT PHP/mysql

Posté : 03 mai 2011, 11:36
par Swardz
Merci pour ta réponse, j'ai reglé le problème,

il y avait un problème avec la synthaxe INSERT INTO ... VALUES ({$ligne2['num_pres_comm_ft']},$count) car la variable était considérée comme un champ d'une table d'où la non execution de la requête.