alonsyl
Messages postés348Date d'inscriptionmardi 6 avril 2004StatutMembreDernière intervention 6 novembre 2008
-
18 août 2004 à 10:53
cs_lotr
Messages postés128Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention12 août 2005
-
18 août 2004 à 22:23
bonjour,
contexte:
j'utilise php afin de renseigner une base access (d'ou les procedures odbc du prg ci-dessous).
procedures:
sur ma page web, je recupere a l'aide de formulaires des renseignements tels que $titre_doc, $date_parution, $reference, $chemin_doc ou $observations.
j'applique aux variables $reference, $titre_doc et $observations la procedures addSlashes(). (l. 5 a 7)
je joints ensuite les variables ainsi transformees a ma table 'document'. (l. 10)
pour continuer, j'interroge ma table 'document' afin de connaitre le 'NuméroAuto' (=> 'no_doc') attribue a mon enregistrement par access. (l. 11)
enfin, j'utilise ce 'NuméroAuto' pour creer une copie du fichier sur le serveur. (l. 13)
programme:
1 $date_enregistrement = strtotime("now");
2 $date_parution = mktime (0, 0, 0, $mois, $jour, $annee);
3 if ($reference == "")
4 $reference = "Sans références";
5 $reference = addSlashes($reference);
6 $titre_doc = addSlashes($titre_doc);
7 $observations = addSlashes($observations);
8 echo "INSERT INTO document (utilisateur, date_enr, lien_doc, titr_doc, cod_pub, ref_doc, date_doc, obs_doc) VALUES ('$individu', $date_enregistrement, "$nom_fichier", "$titre_doc", $num_revue, "$reference", $date_parution, "$observations");
";9 echo "SELECT no_doc FROM document WHERE utilisateur '$individu' AND date_enr $date_enregistrement AND lien_doc = "$nom_fichier" AND titr_doc = "$titre_doc" AND cod_pub = $num_revue AND date_doc = $date_parution AND obs_doc = "$observations";";
10 odbc_do($cnx, "INSERT INTO document (utilisateur, date_enr, lien_doc, titr_doc, cod_pub, ref_doc, date_doc, obs_doc) VALUES ('$individu', $date_enregistrement, "$nom_fichier", "$titre_doc", $num_revue, "$reference", $date_parution, "$observations");");11 $numero_fichier odbc_do($cnx, "SELECT no_doc FROM document WHERE utilisateur '$individu' AND date_enr = $date_enregistrement AND lien_doc = "$nom_fichier" AND titr_doc = "$titre_doc" AND cod_pub = $num_revue AND date_doc = $date_parution AND obs_doc = "$observations";");
12 if ($extension_fichier <> "")
13 copy($chemin_doc, "docs_scannes/".odbc_result($numero_fichier, no_doc).$extension_fichier);
probleme:
lorsque je mets des '''''' la requete 'INSERT INTO' (l. 10) ne fonctionne plus.
pourtant si je fais un copier du resultat de la procedure "echo "INSERT INTO ...";" (l. 8) et que je le colle dans l'assistant de creation de requete d'access, l'enregistrement passe sans aucun probleme !!!
on dirait qu'access comprend ma requete mais que php n'arrive pas a lui envoyer convenablement ?!
toujours est il que je suspecte les procedures addSlashes() d'etre pour quelque chose dans cette histoire ...
quelqu'1 saurait-il expliquer cela et m'aider a resoudre mon probleme ???
cs_lotr
Messages postés128Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention12 août 2005 18 août 2004 à 22:23
Bonsoir,
c'est un peu le cirque dans tes requêtes... Parfois tu fais $var, parfois '$var' ou encore"$var".
Comment veut tu que php s'y retrouve ?
Essaies quelquechose du genre :
$req = "SELECT champ_1, champ_2, ...,champ_n FROM ta_table WHERE champ_1='$var_1' AND champ_2='$var_2' AND ... AND champ_n='$var_n'";
$res = odbc_do($connexion, $req) or die(odbc_error()) ;
Ca devrait beaucoup mieux fonctionner avec une syntaxe cohérente...