stockage de requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : stockage de requête

par ouckileou » 08 juil. 2005, 15:26

en faisant sa
echo $list2["$fieldname"];
sa marche mais je comprends pas pourquoi
parcequ'une chaine entourée de guillemets simples fait que les variables ne seront pas interprétées

donc avec :
echo $list2['".$fieldname."'];
ta chaine (et donc la clé) vaut : ".$fieldname." (guillemets inclus)

alors que si tu vires les guillemets simples :
echo $list2["$fieldname"];
ta chaine (et donc la clé) vaut la valeur de $fieldname, car les guillemets doubles ont permis le remplacement de la variable par sa valeur

;)

par ouckileou » 08 juil. 2005, 15:24

c'ets que tu as une erreur avec tes guillemets

il croit que $fieldname est une clé de tableau, et non la valeur de $fieldname

essaye tout simplement :
echo $list2[$fieldname];

par Invité » 08 juil. 2005, 15:23

en faisant sa
echo $list2["$fieldname"];
sa marche mais je comprends pas pourquoi

par Invité » 08 juil. 2005, 15:20

je me suis renseigner sur les fonction pour avoir les nom de champs et j ai fait cela
mais il y a une petite erreur

Code : Tout sélectionner

$sql="select requete from requete where numrequete=".$_POST['numero']; $result=pg_query($sql); $list=pg_fetch_array($result); $sql2="".$list['requete'].""; $result2=pg_query($sql2); while($list2=pg_fetch_array($result2)) { $i = pg_num_fields($result2); for ($j = 0; $j < $i; $j++) { $fieldname = pg_field_name($result2, $j); echo "field : ".$fieldname; echo $list2['".$fieldname."']; } }

j'ai ce message d'erreur
Notice: Undefined index: ".$fieldname." in c:\program files\easyphp1-7\www\progt\essai.php on line 74

et sa correspond à cette ligne,car la ligne avec le echo j'affiche bien le nom du champs.
echo $list2['".$fieldname."'];
pourtant mon code me semble correct

par Fredo » 08 juil. 2005, 14:53

La fonction serialize() ne serait-elle pas ton amie?

par ouckileou » 08 juil. 2005, 14:10

si c'est un problème de quotes, échappe les avec addSlashes()
=> http://fr.php.net/manual/fr/function.addslashes.php

tu peux aussi afficher la requête qui est générée ($sql) et voir à quoi elle ressemble pour situer els erreurs

par Invité » 08 juil. 2005, 14:08

ok je vais voir ce que je trouve ua niveau fonction
mais la j'ai une petite erreur et je comprends pas d'ou cela viens
Dans mon premier formulaire je souhaite recupere la requete faite dans une variable de session et ensuite je la stocke dans ma table je fais cela

Code : Tout sélectionner

$sql="insert into requete (nom,requete) values ('essai1','".$_SESSION['sql']."')"; echo "<b>".$sql."</b>"; $result=pg_query($sql);
et il met un message d erreur
Warning: pg_query(): Query failed: ERROR: syntax error at or near "31" at character 640
et en faite sa viens des guillemet.
Postgres n accepte que les ' et comme dans ma requete j ai des ' ,il ne sait pas comment faire et si je met des " ,sa ne passe pas car il considere que c est une colonne d une table

par zeus » 08 juil. 2005, 11:55

Ca sert à quoi cette ligne ?
$sql2=".$list['requete']."; 
Si tu tiens à mettre un point de chaque coté, je te conseille TRES vivement de sortir ton tableau de ta chaine
$sql2=".".$list['requete']."."; 

par ouckileou » 08 juil. 2005, 11:53

utilise les fonctions pour connaitre le nombre de champs renvoyés et y accéder ensuite par leur index par exemple.

ou avec mysql_fetch_array, tu pourras récupérer un tableau indexé numériquement, tu auras la taille du tableau, et chaque valeur dans une cellule.

=> http://fr.php.net/manual/fr/ref.mysql.php

par Invité » 08 juil. 2005, 11:46

Merci
c est le type ideal
mais ce qui se passe c'est que certaine requete vont afficher par exemple le nom,prenom,age,adresse
et d'autre le numero de serie,l article, la reference...

et moi ensuite j execute ma requete ainsi
$sql="select requete from requete where numrequete=".$_POST['numero'];
$result=pg_query($sql);
$list=pg_fetch_array($result);
$sql2=".$list['requete'].";
$result2=pg_query($sql2);
while($list2=pg_fetch_array($result2))
{


}
et comment je vais faire pour pouvoir afficher les bon champs car dans le while je suis obliger de mettre $list2['nom'],$list2['prenom'].Et certaine requete ne contienne que 4 champs à afficher et d autre en contienne 10....
Je sais pas si j'ai été clair ?

par ouckileou » 08 juil. 2005, 11:30

Remarque, imagine une requête d'insertion de 500 lignes dans une table de 200 champs ... :shock: :afraid:
ce serait fun :lol:

par zeus » 08 juil. 2005, 11:09

Je sais bien, mon "Quand même" était une suite :wink:

Mais j'ai profiter de ton intérêt pour expliquer mon choix

Remarque, imagine une requête d'insertion de 500 lignes dans une table de 200 champs ... :shock: :afraid:

par ouckileou » 08 juil. 2005, 11:06

Quand même

Mais le gros avantage que je trouve à ce champ, c'est qu'il réserve de la place dynamiquement.

Je veux dire par là qu'il ne réserve pas 65536 octets mais qu'il réserve une place proportionnelle à la chaine qu'il contient
j'imaginais juste une requête SQL de 65000 caractères :-&
c'était pas un commentaire sur le type ou autre :)

par zeus » 08 juil. 2005, 11:03

Quand même

Mais le gros avantage que je trouve à ce champ, c'est qu'il réserve de la place dynamiquement.

Je veux dire par là qu'il ne réserve pas 65536 octets mais qu'il réserve une place proportionnelle à la chaine qu'il contient

par ouckileou » 08 juil. 2005, 11:01

Ce type accepte des chaines jusqu'a 65536 caractères.
et là, ça fait déjà une sacrée requête !! :lol: