J'ai ecrit un script PHP pour ecrire une ligne de data dans une base MYSQL ,
mais quand je POST mon formulaire on dirait que mon script recoit des data
en extra car mon formulaire me cree une requete du style :
INSERT INTO parts (pcat,pcost,pcode,pdetail,pdescript,pqte,pmodele,x,y)
VALUES ("","","","","","","","25","16")
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle
viennent de j'sais pas ou ????
voici mon script :
function InsertData($donneesForm,$nomTable)
{
if (!is_array($donneesForm))
{
return FALSE;
exit() ;
}
foreach ($donneesForm as $cle => $valeur)
{
$donneesForm[$cle] = trim($donneesForm[$cle]);
$donneesForm[$cle] = strip_tags($donneesForm[$cle]);
if ($cle =="tel")
{
$donneesForm[$cle] = ereg_replace("[)(.-]","",$donneesForm[$cle]);
}
$tableau_champ[]=$cle;
$tableau_valeur[]=$donneesForm[$cle];
}
$champs=implode(",",$tableau_champ);
$valeurs=implode('","',$tableau_valeur);
$requete = "INSERT INTO $nomTable ($champs) VALUES (\"$valeurs\")";
$result = mysql_query($requete) or die ("La requête , $requete, ne peut pas
être effectuée.") ;
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
bruno modulix
Donald Martel wrote:
J'ai ecrit un script PHP pour ecrire une ligne de data dans une base MYSQL , mais quand je POST mon formulaire on dirait que mon script recoit des data en extra car mon formulaire s/mon formulaire/ma fonction/
me cree une requete du style :
INSERT INTO parts (pcat,pcost,pcode,pdetail,pdescript,pqte,pmodele,x,y) VALUES ("","","","","","","","25","16")
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle viennent de j'sais pas ou ????
Ca vient pourtant bien de quelque part. Mais comme on ne sait pas - à la lecture de ton bout de code - d'où vient $donneesForm, on ne pourra pas t'aider à trouver le problème... Maintenant, c'est sur que si tu passe directement $_POST en argument, faut s'attendre à des choses bizarres.
Quelques remarques sans rapport avec ta question...
function InsertData($donneesForm,$nomTable) { if (!is_array($donneesForm)) { return FALSE; exit() ;
Cette instruction ne sera pas exécutée, puisque l'instruction précédent retourne le contrôle au code appelant.
et vu ce à quoi servent ces tableaux, passer par une variable intermédiare n'est pas forcément nécessaire...
$requete = "INSERT INTO $nomTable ($champs) VALUES ("$valeurs")"; $result = mysql_query($requete) or die ("La requête , $requete, ne peut pas être effectuée.") ;
// le problème ici est qu'on n'a pas de vérification de coherence // entre $donnees et le schema de la table. $requete = "INSERT INTO $nomTable ($champs) VALUES ("$valeurs")"; $result = mysql_query($requete) or die ("dans insererDonnees : la requête '$requete' ne peut pas être effectuée.") ;
return TRUE; }
Hum... je n'aime pas le test sur $donnees['tel'], ce n'est pas générique. Si tu ajoute un champs fax, ou si ton champs s'appelle autrement, tu va devoir venir modifier le code ici...
// remplacer XXX par le nom de la table // et ecrire une fonction par table ayant un besoin // specifique en matière de formatage function formaterDonneesXXX($donnees) { $donnees = array_map('nettoyerDonnees', $donnees); if (isset($donnees['tel'])) { $donnees['tel']=ereg_replace("[)(.-]","",$donnees['tel']); } return $donnees; }
function formaterDonneesDefaut($donnees) { return array_map($donnees); }
function insererDonnees($donnees, $nomTable) { if (! is_array($donnees)) { die("dans insererDonnees() : argument invalide"); }
$champs=implode(",",array_keys($donnees)); $valeurs=implode('","',array_values($donnees)); $requete = "INSERT INTO $nomTable ($champs) VALUES ("$valeurs")"; $result = mysql_query($requete) or die ("dans insererDonnees : la requête '$requete' ne peut pas être effectuée.") ;
return TRUE; }
Maintenant, ça ne règle pas tes deux problèmes : 1/ passer les données qui vont bien à la fonction (et là, comme on ne connait pas le reste du code, on ne peut pas t'aider) 2/ s'assurer que la structure de $donnees est cohérente avec celle de la table $nomTable.
Mes deux centimes... -- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"
Donald Martel wrote:
J'ai ecrit un script PHP pour ecrire une ligne de data dans une base MYSQL ,
mais quand je POST mon formulaire on dirait que mon script recoit des data
en extra car mon formulaire
s/mon formulaire/ma fonction/
me cree une requete du style :
INSERT INTO parts (pcat,pcost,pcode,pdetail,pdescript,pqte,pmodele,x,y)
VALUES ("","","","","","","","25","16")
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle
viennent de j'sais pas ou ????
Ca vient pourtant bien de quelque part. Mais comme on ne sait pas - à la
lecture de ton bout de code - d'où vient $donneesForm, on ne pourra pas
t'aider à trouver le problème... Maintenant, c'est sur que si tu passe
directement $_POST en argument, faut s'attendre à des choses bizarres.
Quelques remarques sans rapport avec ta question...
function InsertData($donneesForm,$nomTable)
{
if (!is_array($donneesForm))
{
return FALSE;
exit() ;
Cette instruction ne sera pas exécutée, puisque l'instruction précédent
retourne le contrôle au code appelant.
et vu ce à quoi servent ces tableaux, passer par une variable
intermédiare n'est pas forcément nécessaire...
$requete = "INSERT INTO $nomTable ($champs) VALUES ("$valeurs")";
$result = mysql_query($requete) or die ("La requête , $requete, ne peut pas
être effectuée.") ;
// le problème ici est qu'on n'a pas de vérification de coherence
// entre $donnees et le schema de la table.
$requete = "INSERT INTO $nomTable ($champs) VALUES ("$valeurs")";
$result = mysql_query($requete)
or die ("dans insererDonnees : la requête '$requete' ne peut pas
être effectuée.") ;
return TRUE;
}
Hum... je n'aime pas le test sur $donnees['tel'], ce n'est pas
générique. Si tu ajoute un champs fax, ou si ton champs s'appelle
autrement, tu va devoir venir modifier le code ici...
// remplacer XXX par le nom de la table
// et ecrire une fonction par table ayant un besoin
// specifique en matière de formatage
function formaterDonneesXXX($donnees)
{
$donnees = array_map('nettoyerDonnees', $donnees);
if (isset($donnees['tel'])) {
$donnees['tel']=ereg_replace("[)(.-]","",$donnees['tel']);
}
return $donnees;
}
function formaterDonneesDefaut($donnees)
{
return array_map($donnees);
}
function insererDonnees($donnees, $nomTable)
{
if (! is_array($donnees)) {
die("dans insererDonnees() : argument invalide");
}
$champs=implode(",",array_keys($donnees));
$valeurs=implode('","',array_values($donnees));
$requete = "INSERT INTO $nomTable ($champs) VALUES ("$valeurs")";
$result = mysql_query($requete)
or die ("dans insererDonnees : la requête '$requete' ne peut pas
être effectuée.") ;
return TRUE;
}
Maintenant, ça ne règle pas tes deux problèmes :
1/ passer les données qui vont bien à la fonction (et là, comme on ne
connait pas le reste du code, on ne peut pas t'aider)
2/ s'assurer que la structure de $donnees est cohérente avec celle de la
table $nomTable.
Mes deux centimes...
--
bruno desthuilliers
ruby -e "print 'onurb@xiludom.gro'.split('@').collect{|p|
p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"
J'ai ecrit un script PHP pour ecrire une ligne de data dans une base MYSQL , mais quand je POST mon formulaire on dirait que mon script recoit des data en extra car mon formulaire s/mon formulaire/ma fonction/
me cree une requete du style :
INSERT INTO parts (pcat,pcost,pcode,pdetail,pdescript,pqte,pmodele,x,y) VALUES ("","","","","","","","25","16")
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle viennent de j'sais pas ou ????
Ca vient pourtant bien de quelque part. Mais comme on ne sait pas - à la lecture de ton bout de code - d'où vient $donneesForm, on ne pourra pas t'aider à trouver le problème... Maintenant, c'est sur que si tu passe directement $_POST en argument, faut s'attendre à des choses bizarres.
Quelques remarques sans rapport avec ta question...
function InsertData($donneesForm,$nomTable) { if (!is_array($donneesForm)) { return FALSE; exit() ;
Cette instruction ne sera pas exécutée, puisque l'instruction précédent retourne le contrôle au code appelant.
et vu ce à quoi servent ces tableaux, passer par une variable intermédiare n'est pas forcément nécessaire...
$requete = "INSERT INTO $nomTable ($champs) VALUES ("$valeurs")"; $result = mysql_query($requete) or die ("La requête , $requete, ne peut pas être effectuée.") ;
// le problème ici est qu'on n'a pas de vérification de coherence // entre $donnees et le schema de la table. $requete = "INSERT INTO $nomTable ($champs) VALUES ("$valeurs")"; $result = mysql_query($requete) or die ("dans insererDonnees : la requête '$requete' ne peut pas être effectuée.") ;
return TRUE; }
Hum... je n'aime pas le test sur $donnees['tel'], ce n'est pas générique. Si tu ajoute un champs fax, ou si ton champs s'appelle autrement, tu va devoir venir modifier le code ici...
// remplacer XXX par le nom de la table // et ecrire une fonction par table ayant un besoin // specifique en matière de formatage function formaterDonneesXXX($donnees) { $donnees = array_map('nettoyerDonnees', $donnees); if (isset($donnees['tel'])) { $donnees['tel']=ereg_replace("[)(.-]","",$donnees['tel']); } return $donnees; }
function formaterDonneesDefaut($donnees) { return array_map($donnees); }
function insererDonnees($donnees, $nomTable) { if (! is_array($donnees)) { die("dans insererDonnees() : argument invalide"); }
$champs=implode(",",array_keys($donnees)); $valeurs=implode('","',array_values($donnees)); $requete = "INSERT INTO $nomTable ($champs) VALUES ("$valeurs")"; $result = mysql_query($requete) or die ("dans insererDonnees : la requête '$requete' ne peut pas être effectuée.") ;
return TRUE; }
Maintenant, ça ne règle pas tes deux problèmes : 1/ passer les données qui vont bien à la fonction (et là, comme on ne connait pas le reste du code, on ne peut pas t'aider) 2/ s'assurer que la structure de $donnees est cohérente avec celle de la table $nomTable.
Mes deux centimes... -- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"
CrazyCat
Donald Martel wrote:
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle viennent de j'sais pas ou ????
Peut être de la position de la souris lors du click de validation...
Correction après réflexion de 30s: très certainement....
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.c-p-f.net
Donald Martel wrote:
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle
viennent de j'sais pas ou ????
Peut être de la position de la souris lors du click de validation...
Correction après réflexion de 30s: très certainement....
--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.c-p-f.net
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle viennent de j'sais pas ou ????
Peut être de la position de la souris lors du click de validation...
Correction après réflexion de 30s: très certainement....
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.c-p-f.net
Stephane Pineau
Le 15 Apr 2005 17:59:09 GMT, CrazyCat écrivait:
Peut être de la position de la souris lors du click de validation...
Correction après réflexion de 30s: très certainement....
Non je te confirme ton hypothèse... les cordonnées x,y du bouton de soumission sont toujours transmis lorsque l'on remplace le submit traditionnel par une image.
Le 15 Apr 2005 17:59:09 GMT, CrazyCat <crazycat@nospam.org> écrivait:
Peut être de la position de la souris lors du click de validation...
Correction après réflexion de 30s: très certainement....
Non je te confirme ton hypothèse... les cordonnées x,y du bouton de
soumission sont toujours transmis lorsque l'on remplace le submit
traditionnel par une image.
Peut être de la position de la souris lors du click de validation...
Correction après réflexion de 30s: très certainement....
Non je te confirme ton hypothèse... les cordonnées x,y du bouton de soumission sont toujours transmis lorsque l'on remplace le submit traditionnel par une image.
Effectivements j'envoie mes donnees a la fonction par $_POST InsertData($_POST,"parts"); Donc peut etre de la les donnees d'extra... Autre detail aussi que je n'avais pas mentionne, mon submit se fait avec une image... Cela peut-il influencer le POST ??????
Et merci beaucoup pour les corrections suggerees a mon code... je vais en prendre grandement connaissance et surement les mettre en application... "CrazyCat" a écrit dans le message de news: d3omnb$f7l$
Donald Martel wrote:
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle viennent de j'sais pas ou ????
Peut être de la position de la souris lors du click de validation...
Correction après réflexion de 30s: très certainement....
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.c-p-f.net
Effectivements j'envoie mes donnees a la fonction par $_POST
InsertData($_POST,"parts");
Donc peut etre de la les donnees d'extra...
Autre detail aussi que je n'avais pas mentionne, mon submit se fait avec une
image... Cela peut-il influencer le POST ??????
Et merci beaucoup pour les corrections suggerees a mon code... je vais en
prendre grandement connaissance et surement les mettre en application...
"CrazyCat" <crazycat@nospam.org> a écrit dans le message de news:
d3omnb$f7l$1@s1.news.oleane.net...
Donald Martel wrote:
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle
viennent de j'sais pas ou ????
Peut être de la position de la souris lors du click de validation...
Correction après réflexion de 30s: très certainement....
--
Découvrez Original War: http://www.original-war.org
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.c-p-f.net
Effectivements j'envoie mes donnees a la fonction par $_POST InsertData($_POST,"parts"); Donc peut etre de la les donnees d'extra... Autre detail aussi que je n'avais pas mentionne, mon submit se fait avec une image... Cela peut-il influencer le POST ??????
Et merci beaucoup pour les corrections suggerees a mon code... je vais en prendre grandement connaissance et surement les mettre en application... "CrazyCat" a écrit dans le message de news: d3omnb$f7l$
Donald Martel wrote:
mais x et y et 25 et 16 ne sont pas des datas de mon formulaire.Elle viennent de j'sais pas ou ????
Peut être de la position de la souris lors du click de validation...
Correction après réflexion de 30s: très certainement....
-- Découvrez Original War: http://www.original-war.org Humour: http://www.chatfou.com Tchattez en liberté: http://www.c-p-f.net
Jedi121
Stephane Pineau avait prétendu :
Il suffit donc dans le bout de script indiqué de tester si la clé extraite du tableau de données postée est x ou y et dans ce cas ne pas les traiter.
Ou bien plus sauvage : unset($_POST[x]); unset($_POST[y]); en début de page de traitement.
Stephane Pineau avait prétendu :
Il suffit donc dans le bout de script indiqué de tester si la clé extraite
du tableau de données postée est x ou y et dans ce cas ne pas les traiter.
Ou bien plus sauvage :
unset($_POST[x]);
unset($_POST[y]);
en début de page de traitement.