simplifier ce code

simplifier ce code - PHP - Programmation

Marsh Posté le 28-06-2004 à 09:58:53    

bonjour a tous  
mon probleme je suis débutant et
je voudrais changer le code suivant de maniere a supprimer les fonctions mysql_list_fields
mysql_field_name
et les remplacer par es mysql_query...
mais je n'arrive pas a faire un affichage correct
pourriez vous m'indiquer la marhe a suivre
 
 
 $fds = @mysql_list_fields($db,$tb,$dbl);
  for ($j = 0; ($fd = @mysql_field_name($fds, $j)) != ''; $j++) {
   if ($fd == $id) {
    echo_buffer("\$opts['key_type'] = '".@mysql_field_type($fds, $j)."';" );
    break;
   }
  }
 MERCI

Reply

Marsh Posté le 28-06-2004 à 09:58:53   

Reply

Marsh Posté le 28-06-2004 à 10:02:45    

mysql_query sert à passer une requête et ne fait pas la même chose que les 2 autres fonctions.
 
lis la doc plutôt que d'essayer de te débarasser de fonctions que tu comprends pas.
 
et je suis gentil : http://www.nexen.net/docs/php/anno [...] lien=mysql


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 28-06-2004 à 10:37:42    

Dit Atic, tu es gentil, mais j'ai répondu à ta question vendredi 25 et je t'ai donné un lien vers un autre topic ou j'explique comment faire.
 


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 28-06-2004 à 10:39:00    

t'as pas tort quand tu dis que je veux me débarrasser de ces fonctions
mais le truc c'est qu'il faut que j'adapte ce code a une base pgsql
et je trouve pas d'équivalent donc je cherche un moyen de contourner l'obstacle
et je trouve pas!

Reply

Marsh Posté le 28-06-2004 à 10:42:03    

Je t'ai donné la solution !


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 28-06-2004 à 10:47:40    

T509 jai honte de cette reponse mais c la vérité
"MAIS JAI PAS COMPRIS"
jai rien pigé a ce quil y avai ds le topic
si tu pouvais te rabaisser a mon niveau et etre plus clair ca serait gentil

Reply

Marsh Posté le 28-06-2004 à 11:03:41    

regarde la doc dans la gestion des bases postgresql tu verras qu'il y a l'équivalent. en générale il y a quasiment le meme nom !

Reply

Marsh Posté le 28-06-2004 à 11:21:48    

plutôt que d'utiliser une fonction PHP, fait une requête SQL
 
La syntaxe de la requête est "SHOW COLUMNS FROM ta_table;"
pg_query($link_base, $requete);
 
Cela doit être décrit dans la doc Postgré


Message édité par T509 le 28-06-2004 à 11:22:19

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 28-06-2004 à 12:40:18    

voila ce que jai fais mais qui ne marche pas
en fait je voudrais afficher des boutons avec les noms des differentes colonnes
$qr="SHOW COLUMNS FROM $tb";
$ou = @pg_query($conn,$qr);
  for($j=0;$ouais =@pg_fetch_array($ou,$j,PGSQL_ASSOC)!= '';$j++){
   $ouais = htmlspecialchars($ouais);
  $checked = $j == 0 ? ' checked' : '';
  echo '<tr><td><input'.$checked.' type="radio" name="tb" value="'.$ouais.'"></td><td>'.$ouais.'</td></tr>'."\n";
   
  echo ouais;}
 
voila mon truc. T509 si tu es là manifeste toi j'ai besoin de toi!!

Reply

Marsh Posté le 28-06-2004 à 12:43:59    

A quel niveau, cela ne fonctionne pas ?


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 28-06-2004 à 12:43:59   

Reply

Marsh Posté le 28-06-2004 à 12:47:01    

ben ca naffiche rien mais comme la syntaxe des fonctions parai bonne je nai aucun moyen de verifier où est le pb
mai je pense que c'est laboucle qui est super mal faite

Reply

Marsh Posté le 28-06-2004 à 12:51:02    

Premièrement, tu as des fonctions qui te permettent de vérifier le résultat de ta requètes :  

Code :
  1. pg_last_error
  2. pg_last_notice
  3. pg_result_status
  4. pg_result_error


 
Ensuite, s'il n'y a pas d'erreur, tu peux regarder si ta boucle est bien parcourue via un petit echo dans la boucle.


Message édité par Lord II le 28-06-2004 à 12:51:21

---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 28-06-2004 à 12:55:16    

atic a écrit :

voila ce que jai fais mais qui ne marche pas
en fait je voudrais afficher des boutons avec les noms des differentes colonnes
$qr="SHOW COLUMNS FROM $tb";
$ou = @pg_query($conn,$qr);
  for($j=0;$ouais =@pg_fetch_array($ou,$j,PGSQL_ASSOC)!= '';$j++){
   $ouais = htmlspecialchars($ouais);
  $checked = $j == 0 ? ' checked' : '';
  echo '<tr><td><input'.$checked.' type="radio" name="tb" value="'.$ouais.'"></td><td>'.$ouais.'</td></tr>'."\n";
   
  echo ouais;}
 
voila mon truc. T509 si tu es là manifeste toi j'ai besoin de toi!!


 
essaie ce code :
 
 

Code :
  1. $j=0;
  2. $qr="SHOW COLUMNS FROM $tb";
  3. $ou = pg_query($conn,$qr);
  4.   while($buffer=pg_fetch_array($ou,$j,PGSQL_ASSOC)){
  5.    $tab[] = $buffer;
  6.         $j++;
  7. }
  8. print_r ($tab);


 
ensuite dis nous ce que tu obtiens


Message édité par T509 le 28-06-2004 à 12:57:22

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 28-06-2004 à 12:57:51    

c'est bien ce que je pensais ma boucle n'est pas parcourue
et l je vois pas d'ou vient le pb
serait il preferable de faire un foreach pour retourner tout ce qu'il y a ds la liste?

Reply

Marsh Posté le 28-06-2004 à 13:05:00    

T509 je n'obtiens rien avec ton code
rien ne s'affiche
c'est désolant

Reply

Marsh Posté le 28-06-2004 à 13:12:53    

Ta requète renvoir t'elle quelque chose ??


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 28-06-2004 à 13:19:12    

Code :
  1. $qr="SHOW COLUMNS FROM $tb";
  2. $ou = pg_query($conn,$qr);
  3. $num_result = pg_num_rows($ou);
  4. if ($num_result > 0) {
  5.      for($i = 0; $i < $num_result ; $i++){
  6.        $tab[] = pg_fetch_array($ou);
  7.      }
  8.      print_r ($tab);
  9. } else {
  10.       echo "Erreur, nombre de rangs retournés : ".$num_result;
  11. }


et ceci ?


Message édité par T509 le 28-06-2004 à 16:11:12

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 28-06-2004 à 13:24:54    

Tu as moyen de faire la requête avec un outil d'administration de la base qui ressemble à PhpMyAdmin ? Sinon, va voir  
 
Si oui, cette requête renvoie quelquechose ?


Message édité par T509 le 28-06-2004 à 13:30:01

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 28-06-2004 à 14:50:14    

je viens de tester le morceau de code et rien
mais la requete renvoie bien kelke chose vue kelle le faisait pour la base sous mysql
bon je me replonge dans le code et je vous tiens au courant
merci pour tout les gars ça fait plaisir

Reply

Marsh Posté le 28-06-2004 à 14:54:10    

Tu vex dire que tu n'as pas testé ta requète sous le nouveau SGBD ???
 
Attention, il peut y avoir de petites différences d'un SGBD à un autre


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 28-06-2004 à 14:55:28    

C'est pour cela que je te propose de tester la requête avec un outil d'administration de base comme indiqué 2 posts plus haut


Message édité par T509 le 28-06-2004 à 14:55:57

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 28-06-2004 à 15:10:45    

c bon jai db tools manager
et ca marche impec
donc c'est ce ke je pensais je dois avoir une betise dans mon code
de là a dire koi...

Reply

Marsh Posté le 28-06-2004 à 16:07:58    

maintenant ca me renvoie le message d'erreur
Erreur nonmbre de rang retourné
ça veut dire que la requete ne marche pas?

Reply

Marsh Posté le 28-06-2004 à 16:10:13    

avce quel code source ?


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 28-06-2004 à 16:11:52    

pardon avec le tien

Reply

Marsh Posté le 28-06-2004 à 16:12:12    

atic a écrit :


ça veut dire que la requete ne marche pas?


 
Oui, ou que celle-ci ne renvoie aucun résultat
 
A tout hasard, fait unb echo de la requete avant execution ,pour voir si celle ci est correcte


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 28-06-2004 à 16:26:04    

ben la requete est correcte mais kan je fais echo $ou ça ne m'affiche meme pas d'identifiant ou koi ke ce soit..

Reply

Marsh Posté le 28-06-2004 à 16:30:42    

tu es sur que $tbl contient bien la table,  
 
utilise également la fonction pg_last_error après l'execution de la requète car si le résultat est vide c'est qu'il y a un souci dans l'execution et tu peux le voir via pg_last_error


Message édité par Lord II le 28-06-2004 à 16:31:08

---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 28-06-2004 à 16:34:41    

sur et certain car kan je fais echo $qr ca affiche show columns from imrimante ki est la table que jai choisi

Reply

Marsh Posté le 28-06-2004 à 16:38:46    

ok pour la requete, mais y a t-il un message d'erreur via pg_last_error


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 28-06-2004 à 16:46:03    

ben rien je fais un pg_last_error() juste apres la requete qr
et ca donne rien
??

Reply

Marsh Posté le 28-06-2004 à 16:50:11    

donc il ne doit pas y avoir d'erreur, et la requete s'éxécute bien.
 
Ensuite il faut que tu testes le retour de pg_num_rows, et ainsi de suite pour voir où le problème se situe


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 28-06-2004 à 16:56:59    

ça n'affiche strictement rien
bon j'arrete pour aujourd'hui
jreviens dessus demain  
a+ et merci encore

Reply

Marsh Posté le 28-06-2004 à 17:12:21    

Code :
  1. $qr="SHOW COLUMNS FROM $tb";
  2. echo "requete : ".$qr."<br>";
  3. //faisons la requête
  4. $ou = pg_query($conn,$qr) or die("erreur de requête" );
  5. $num_result = pg_num_rows($ou);
  6. //recup des erreurs éventuelles
  7. echo "erreur sur connection : ".pg_last_error($conn)."<br>";
  8. echo "erreur sur requête : ".pg_result_error_field($ou, PGSQL_DIAG_SQLSTATE)."<br>";
  9. echo "Num de rangs seléctionnés : ".$num_result."<br>";
  10. //traitement du résultat
  11. if ($num_result > 0) {
  12.      for($i = 0; $i < $num_result ; $i++){
  13.        $tab[] = pg_fetch_array($ou);
  14.      }
  15.      print_r ($tab);
  16. } else {
  17.       echo "Erreur, nombre de rangs retournés inferieur à 0";
  18. }


et ceci ?


Message édité par T509 le 28-06-2004 à 18:03:09

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 29-06-2004 à 09:40:42    

alors avec ce dernier code l'erreur vient de la requete
ça m'affiche bien requete SHOW COLUMNS FROM imprimante
mais juste en dessous j'ai le message d'erreur  
erreur de requ(caractere chinois)mais j'ai changé le code en mettant la fonction pg_result_error a la place de pg_result_error_field
ça vous dit quelque chose??

Reply

Marsh Posté le 29-06-2004 à 10:59:26    

donne nous les messages d'erreurs


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 29-06-2004 à 11:46:33    

non mais le pb c'est que ya pas de messages d'erreurs
je me suis rendu compte aprs que "erreue de requete" s'affiche obligatoirement
pg_resullt_error prend bien les memes arguments que pg_result_error_field??

Reply

Marsh Posté le 29-06-2004 à 11:50:39    

Vérifie dans la doc
 
SI tu a "erreur de requête", il ne va pas plus loin de toute façon à cause de la commande die()
 
Est tu sûr de l'ouverture de la connexion avec la base ?
Est ce que $conn est affecté ?


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 29-06-2004 à 11:56:01    

sur et certain c'est ce que j'ai vérifié en premier quand j'ai vu le message d'erreur
en fait ds mon code la connexion $dbl
 
 
 
$dbl = ADONewConnection('postgres7');
//$dbl->debug = true;
$dbl->Connect($hn,$un,$pw,$db);  
 
mais j'ai l'impression que le pb vient malgré tout de là

Reply

Marsh Posté le 29-06-2004 à 12:03:23    

Pour te connecter à ta base, utilise la commande pg_connect()
 
Ta variable $conn n'a pas l'air d'être affectée. C'est donc normal que cela ne marche pas.
 
Tu devrais lire quelques tutos concernant la récup d'infos en BDD. Va voir sur phpdebutant.org ce sera utile. Ces tutos sont basés sur MySQL, mais le principe reste le même. Il faut que tu acquiers les bases.


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed