Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1581 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Erreur de syntaxe pour un update de base access

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur de syntaxe pour un update de base access

n°1432492
snp
quand on sait pas, on se tait
Posté le 28-08-2006 à 13:56:31  profilanswer
 

Bonjour,
j'ai un fichier PHP tout bete de traitement de mail qui m'update normalement une base de données ACCESS.
mais j'ai un message d'erreur et je n'arrive pas a trouvber d'ou ça peux provenir !!
Quelqu'un peut-il voler a mon secours SVP ?
Merci d'avance...
 :hello:  

Code :
  1. <?php
  2. $etat = $_GET['Etat_de_fabrication'];
  3. $url = $_GET['url'];
  4. $utilisateur = $_GET['utilisateur'];
  5.   //$dest = "toto@titi.fr";
  6.   $sujet = "Suivi de production";
  7.   $exp = "";
  8.   $message = "Etat de la fabrication: " . $etat;
  9.  
  10.  
  11.   //$envoi = mail($dest, $sujet, $message, $exp);
  12.  
  13. //Sauvegarde dans la base de donnees dde_fab
  14. include ('../../include/connexion_base.php');
  15. $query = "UPDATE dde_fab SET etat=$etat WHERE url=$url ";
  16. $query .= " VALUES ($etat) ";
  17. $result = odbc_do ($cnx,$query);
  18. odbc_close( $cnx); 
  19. echo '<script language="javascript">
  20. alert("La modification de la Fabrication a été envoyée et sauvegardée" );
  21. window.history.back();
  22. </script>';
  23. ?>



Voici le message d'erreur que je reçois :

Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans la requête. La clause de la requête est incomplète., SQL state S1000 in SQLExecDirect in c:\program files\easyphp1-8\www\legris\formulaires\dde_fab\traitement.php on line 21

mood
Publicité
Posté le 28-08-2006 à 13:56:31  profilanswer
 

n°1432499
rufo
Pas me confondre avec Lycos!
Posté le 28-08-2006 à 14:07:09  profilanswer
 

faut mettre "UPDATE dde_fab SET etat=\"$etat\" WHERE url=\"$url\""

n°1432507
snp
quand on sait pas, on se tait
Posté le 28-08-2006 à 14:14:57  profilanswer
 

Merci rufo mais j'obtines ceci a présent :
 
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression 'url=[../../fichiers/demandes_sce_outillage/Demande_Fabrication] VALUES (Réalisée)'., SQL state 37000 in SQLExecDirect in c:\traitement.php on line 22

n°1432534
jbourdello​n
Posté le 28-08-2006 à 14:48:51  profilanswer
 

Juste une question, a quoi te sert la derniere partie de ta requete ? (Values($etat)) ????

n°1432538
snp
quand on sait pas, on se tait
Posté le 28-08-2006 à 14:51:00  profilanswer
 

bien joué....à rien du coup.
je l'avais viré (copié-coller d'une autre page de code) mais j'ai dû faire un ctrl+Z de trop !
Néanmoins, mon pb n'est toujours pas réglé...

n°1432541
jbourdello​n
Posté le 28-08-2006 à 14:53:21  profilanswer
 

Remplace ca :  

Citation :

$query = "UPDATE dde_fab SET etat=$etat WHERE url=$url ";


 
Par ca
 

Code :
  1. $query = 'UPDATE dde_fab SET etat="'.$etat.'" WHERE url like "'.$url.'"';


n°1432548
snp
quand on sait pas, on se tait
Posté le 28-08-2006 à 14:58:38  profilanswer
 

merci jbourdellon
Nouveau msg d'erreur :
 
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Le moteur de base de données ne peut pas trouver ''. Assurez-vous que le nom de paramètre ou d'alias est valide, qu'il ne comprend pas de caractère ou de ponctuation incorrect et qu'il n'est pas trop long., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\legris\formulaires\dde_fab\traitement.php on line 21


Message édité par snp le 28-08-2006 à 14:59:11
n°1432551
jbourdello​n
Posté le 28-08-2006 à 15:00:33  profilanswer
 

est ce que tu es sur que tes variables $etat et $url sont complétées ?

n°1432560
snp
quand on sait pas, on se tait
Posté le 28-08-2006 à 15:13:24  profilanswer
 

justement c ce que je regardais....
et bien non en fait, il m'en manque un bout !
Pour ma variable $url je devrais obtenir un truc du genre :
../../fichiers/demandes_sce_outillage/Demande de Fabrication tata du  28-08-2006.pdf
et là j'obtiens :
../../fichiers/demandes_sce_outillage/.'Demande_Fabrication'  
 
Par contre $etat est bon


Message édité par snp le 28-08-2006 à 15:16:31
n°1432570
jbourdello​n
Posté le 28-08-2006 à 15:19:02  profilanswer
 

Citation :

../../fichiers/demandes_sce_outillage/Demande de Fabrication tata du  28-08-2006.pdf


 

Citation :

../../fichiers/demandes_sce_outillage/.'Demande_Fabrication


 
qu'il manque un bout je comprend bien mais que la chaine de caractere soit modifiée c'est plus bizarre  :??:  
 
et dans ta table qu'est ce que tu as comme url pour cette entrée ?

mood
Publicité
Posté le 28-08-2006 à 15:19:02  profilanswer
 

n°1432572
snp
quand on sait pas, on se tait
Posté le 28-08-2006 à 15:20:25  profilanswer
 

../../fichiers/demandes_sce_outillage/Demande de Fabrication tata du  28-08-2006.pdf

n°1432573
snp
quand on sait pas, on se tait
Posté le 28-08-2006 à 15:20:56  profilanswer
 

je t'explique le principe du truc:

  • demande par formulaire

formulaire envoyé par mail de type HTML
dans ce mail HTML, un champs "hidden" name=url -> chemin du fichier PDF généré à partir du formulaire
Ce mail contient donc un nouveau formulaire HTML envoyé en GET au changement d'état.
Ensuite, update de la BD access en fonction du changement d'état


Message édité par snp le 28-08-2006 à 15:28:10
n°1432586
jbourdello​n
Posté le 28-08-2006 à 15:31:07  profilanswer
 

Oui ca j'avais compris Affiche voir  :  
- les valuers de $etat et d' $url
- ta requete
- et la réponse de SELECT * from dde_fab where url like "Demande%"

n°1432590
snp
quand on sait pas, on se tait
Posté le 28-08-2006 à 15:36:20  profilanswer
 

../../fichiers/demandes_sce_outillage/
En cours
UPDATE dde_fab SET etat="En cours" WHERE url="$url"  
SELECT * from dde_fab where url like "Demande%"

n°1432594
jbourdello​n
Posté le 28-08-2006 à 15:41:18  profilanswer
 

Citation :

UPDATE dde_fab SET etat="En cours" WHERE url="$url"


 
Tu as bien mis ca  
 

Code :
  1. $query = 'UPDATE dde_fab SET etat="'.$etat.'" WHERE url like "'.$url.'"';


 
T'es sur ?  
 

Citation :

SELECT * from dde_fab where url like "Demande%"


 
C'est le resultat de la REQUETE que je voulais....

n°1432637
snp
quand on sait pas, on se tait
Posté le 28-08-2006 à 17:03:29  profilanswer
 

quand je mets ce $query j'obtiens :
Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Le moteur de base de données ne peut pas trouver ''. Assurez-vous que le nom de paramètre ou d'alias est valide, qu'il ne comprend pas de caractère ou de ponctuation incorrect et qu'il n'est pas trop long., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\legris\formulaires\dde_fab\traitement.php on line 36
 
Par contre, maintenant j'ai bien la valeur de $url. ça c réglé. Mais les valeurs ne changent pas dans ma BD et g tj ce msg d'erreur

n°1432853
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 08:34:02  profilanswer
 

up
 
Mon code correspond désormais à ça :

Code :
  1. <?php
  2. include ('../../include/connexion_base.php');
  3. include_once("../../outils/html_mime/html_mime_mail.inc" );
  4. $etat = $_GET['Etat_de_fabrication'];
  5. $url = $_GET['lien'];
  6. $utilisateur = $_GET['utilisateur'];
  7. //********************************************************************//   
  8. //*************************Envoi du chgt d'etat**************************//
  9. //********************************************************************//
  10. include '../../admin/variables.php';
  11. $result = odbc_exec($cnx, "SELECT nom,prenom FROM utilisateurs WHERE initiales='$utilisateur'" );
  12. $data = odbc_fetch_array($result);
  13. $nom = $data['nom'];
  14. $prenom = $data['prenom'];
  15. $full_name = $prenom.' '.$nom;
  16. $dest = $prenom.'.'.$nom.$domaine;
  17. function envoi_mail($name_from, $mail_from, $name_to, $mail_to)
  18.    {
  19. $etat = $_GET['Etat_de_fabrication'];
  20. $url = $_GET['lien'];
  21. $utilisateur = $_GET['utilisateur'];
  22.       //Contenu de notre email
  23.   $nom_fab = substr(strrchr($url, "_" ), 1, -4);
  24.   echo $nom_fab;
  25.       $corps = "La $nom_fab est " . $etat;
  26.      
  27.       $mon_mail = new html_mime_mail(102400, "iso-8859-1" );
  28.      
  29.      $mon_mail->add_body($corps);
  30.       //creation de l’email
  31.       $mon_mail->build_mail("base64",1);
  32.       $mon_mail->send($name_from, $mail_from, $name_to, $mail_to, "Suivi de production" );
  33.    }
  34. envoi_mail("Outillage", $dest_outillage, '', $dest);
  35.  
  36. //**********************************************************************//   
  37. //************Sauvegarde dans la base de donnees dde_fab********************//
  38. //**********************************************************************//
  39. include ('../../include/connexion_base.php');
  40. //$query = 'UPDATE dde_fab SET etat=$etat WHERE url=$url ';
  41. $query = 'UPDATE dde_fab SET etat="'.$etat.'" WHERE url like "'.$url.'"';
  42. $result = odbc_exec ($cnx,$query);
  43. odbc_close( $cnx); 
  44. echo '<script language="javascript">
  45. alert("Le changement d\'état de la fabrication a été envoyé et sauvegardé avec succès." );
  46. window.history.back();
  47. </script>';
  48. ?>


 
et mon message d'erreur est toujours le suivant :
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Le moteur de base de données ne peut pas trouver ''. Assurez-vous que le nom de paramètre ou d'alias est valide, qu'il ne comprend pas de caractère ou de ponctuation incorrect et qu'il n'est pas trop long., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\....\traitement.php on line 66


Message édité par snp le 29-08-2006 à 09:27:46
n°1432886
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 09:42:57  profilanswer
 

up up up

n°1432894
jbourdello​n
Posté le 29-08-2006 à 09:52:04  profilanswer
 

Citation :

$query = 'UPDATE dde_fab SET etat="'.$etat.'" WHERE url like "'.$url.'"';


 
Essaye voir plutot ca  :  
 

Code :
  1. $query = 'UPDATE dde_fab SET etat="'.$etat.'" WHERE url like \''.$url.'\'';

n°1432897
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 09:57:10  profilanswer
 

Salut jbourdellon
J'obtiens desormais un nouveau message d'erreur :
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 1 attendu., SQL state 07001 in SQLExecDirect in traitement.php on line 66
 
et rien ne change ds ma BD

n°1432902
jbourdello​n
Posté le 29-08-2006 à 10:00:02  profilanswer
 

Affiche voir ta requete

n°1432910
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 10:09:18  profilanswer
 

j'arrive pas.
je fais ça  

Code :
  1. while ($row = odbc_fetch_array($result) )
  2. {
  3. $toto = $row[0];
  4. $tata = $row[1];
  5. echo "<tr>\n
  6. <td><a href=\"$tata\">$toto</a></td>\n
  7. <td>$tata</td>\n
  8. </tr>\n";
  9. }


 
et j'obtiens :
Warning: odbc_fetch_array(): supplied argument is not a valid ODBC result resource in traitement.php on line 71

n°1432912
jbourdello​n
Posté le 29-08-2006 à 10:10:37  profilanswer
 

Comment ca t'arrives pas afficher ta requete,
 
juste en dessous de  
 
$query='xxxxx';
tu fais un
 
echo $query;
 
 
????


Message édité par jbourdellon le 29-08-2006 à 10:11:26
n°1432915
jbourdello​n
Posté le 29-08-2006 à 10:14:37  profilanswer
 

Quand tu fais ca :

Citation :

while ($row = odbc_fetch_array($result) )


 
le result que tu passe en paramètre c'est quoi, c'est celui la ?  
 

Citation :

$query = 'UPDATE dde_fab SET etat="'.$etat.'" WHERE url like "'.$url.'"';
$result = odbc_exec ($cnx,$query);


 
Dans ce cas c'est normal un UPDATE ne retourne pas la ligne modifée mais juste le nombre de lignes modifiées...

n°1432916
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 10:15:51  profilanswer
 

j'obtiens ça en utilisant or die :
UPDATE dde_fab SET etat="Réalisée" WHERE url like '../../fichiers/demandes_sce_outillage/Demande_Fabrication SNP ESSAI 29-08-2006.pdf'

n°1432917
jbourdello​n
Posté le 29-08-2006 à 10:17:40  profilanswer
 

Citation :

$query = 'UPDATE dde_fab SET etat=\''.$etat.'\' WHERE url like \''.$url.'\'';


 
Modifie la aussi

n°1432922
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 10:26:39  profilanswer
 

La requete :
UPDATE dde_fab SET etat='Réalisée' WHERE url like '../../fichiers/demandes_sce_outillage/Demande_Fabrication SNP ESSAI 29-08-2006.pdf'
 
Plus de msg d'erreur par contre la BD n'est pas updatée !


Message édité par snp le 29-08-2006 à 10:27:18
n°1432928
jbourdello​n
Posté le 29-08-2006 à 10:33:27  profilanswer
 

Comment ca pas updatée ?

n°1432930
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 10:40:08  profilanswer
 

dans ma BD le champ "etat" de Demande_Fabrication SNP ESSAI 29-08-2006.pdf' ne change pas.
Il devrait passer de "en attente" à "en cours"

n°1432939
jbourdello​n
Posté le 29-08-2006 à 10:50:42  profilanswer
 

ben déjà elle pourra pas passer à 'en cours' vu que tu fais un SET etat='Réalisée' ...

n°1432941
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 10:53:36  profilanswer
 

y'a trois état que le fabricant coche au fur et a mesure par boutons radio:
en attente (par défaut)
en cours
réalisé
quel qu'il soit ça ne se modifie pas ds la BD

n°1432976
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 11:32:52  profilanswer
 

en spécifiant directement l'ID ça marche par contre

n°1432988
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 11:46:04  profilanswer
 

bon ça marche mais c un peu usine à gaz :

Code :
  1. $query = 'UPDATE dde_fab SET etat=\''.$etat.'\', remarque=\''.$remarque.'\'
  2. WHERE date_dde=\''.$today.'\' AND projet=\''.$projet.'\' ';


 
pourquoi ça marche pas en faisant WHERE url LIKE \''.$url.'\''; ????


Message édité par snp le 29-08-2006 à 11:46:35
n°1433032
snp
quand on sait pas, on se tait
Posté le 29-08-2006 à 13:17:36  profilanswer
 

dans tous les cas je viens de me rendre compte que mon mon champ url etait vidé quand je fais un UPDATE

n°1433562
snp
quand on sait pas, on se tait
Posté le 30-08-2006 à 10:16:33  profilanswer
 

up

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Erreur de syntaxe pour un update de base access

 

Sujets relatifs
Base MySql sur free et gestion de traductions sur un site webcss / message d'erreur
Conflit entre update et foreign key!!!!!!!liste deroulante dans un etat access
[Access]Problème de requete dans un formulairerequete access
requette selection sur AccessGalerie vidéo considérée comme base de données?
SQL Access Regrouper tous les champsConnection à la base de données
Plus de sujets relatifs à : Erreur de syntaxe pour un update de base access


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR