PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 22-09-2009 11:45:23

t14
Membre
Inscription : 10-09-2009
Messages : 96

Clause WHERE dans PHP

Bonjour,

J'ai une base Mysql, et je souhaite mettre à jour des champs via un formulaire. Sélection de l'enregistrement à mettre à jour, upload d'un fichier (image, doc ou autre), et écriture du lien, du nom et de l'extension du fichier dans la base. Voilà ce que j'ai écris :

$id = $_GET["id"];
     ..............................
// on écrit la requête sql
$sql = "UPDATE manifestations SET(lien_fichier, fichier, extension) VALUES('$dossier$fichier', '$fichier', '$extension') where id='$id'";

Et voici le message en retour :

Chargement effectué avec succès !Erreur SQL !UPDATE manifestations SET(lien_fichier, fichier, extension) VALUES('./dossier_upload/toto.doc', 'toto.doc', '.doc') where id=''You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(lien_fichier, fichier, extension) VALUES('./dossier_upload/toto.doc' at line 1

Pourriez-vous m'aider ? Merci.

Hors ligne

#2 22-09-2009 13:39:12

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Clause WHERE dans PHP

et si tu mets :

$sql = "UPDATE manifestations SET(lien_fichier, fichier, extension) VALUES('".$dossier . $fichier."', '$fichier', '$extension') where id='$id'";

Hors ligne

#3 22-09-2009 15:50:23

t14
Membre
Inscription : 10-09-2009
Messages : 96

Re : Clause WHERE dans PHP

Ben non ! Là, je n'ai plus de message d'erreur, mais rien n'est uploadé, rien ne s'affiche. C'est comme si il ne se passait rien ..... sad

Hors ligne

#4 22-09-2009 18:19:07

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Clause WHERE dans PHP

Saluton,
Cette syntaxe de l'UPDATE n'est pas au standard SQL, essaye celle-ci

$sql = sprintf("UPDATE manifestations SET lien_fichier='%s.%s' , fichier='%s' , extension='%s' WHERE id=%s",$dossier, $fichier,$fichier,$extension,$id);

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 22-09-2009 18:41:51

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Clause WHERE dans PHP

chui con j'ai même pas vu le update ^^ je croyai que c'était un insert

Hors ligne

#6 23-09-2009 08:49:24

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Clause WHERE dans PHP

alors, ca fonctionne ?


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#7 24-09-2009 11:04:30

t14
Membre
Inscription : 10-09-2009
Messages : 96

Re : Clause WHERE dans PHP

En fait, mon premier problème est que je n'arrive pas à récupérer mon ID. Car je commence par afficher un tableau (aff_manif.php) où je sélectionne l'enregistrement à modifier. Puis j'affiche une fenêtre d'upload de fichier (upload.htm). Et enfin je mets à jour la base (add-manif-pj). C'est dans cette dernière partie où je fais mon $_GET["id"]. Et en fait, il faudrait soit que je le récupère dans mon upload.htm, et que je le promène de script en script (mais comment le récupère t'on dans l'upload pour ensuite le passer au add-manif ?), soit je mets le script add-manif-pj.php dans l'upload, mais que devient

<form enctype="multipart/form-data" method="POST" action="add-manif-pj.php" value="envoyer" name="soumettre">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name="monfichier" size="51" /><p>
<input type="reset" value="Effacer">
<input type="submit" name="preview" value="Valider">

de l'upload ? Comment l'écrire ?

Hors ligne

#8 24-09-2009 14:13:24

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Clause WHERE dans PHP

Soit tu utilises les sessions pour le transmettre de page en page soit tu utilises des champs hidden dans ton formulaire.

<input type="hidden" name="id" value="<? echo $_GET['id']; ?>" />

Hors ligne

#9 26-09-2009 11:48:11

t14
Membre
Inscription : 10-09-2009
Messages : 96

Re : Clause WHERE dans PHP

Merci morgan47 ! Mais ça ne fonctionne pas, je me mélange les pinceaux et j'y comprends plus rien !!!!!!!! Je n'arrive toujours pas à récupérer mon "id":mad:

Voici ma boîte d'upload (j'ai mis la ligne "<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />" en commentaire car sinon ça me fait deux lignes de type="hidden", et je ne pense pas que ce soit correct :

<form enctype="multipart/form-data" method="POST" action="add-manif-pj_4.php" value="envoyer" name="soumettre">
<!--<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />-->
<input type="hidden" name="id" value="<? echo $_GET['id']; ?>" />
<input type="file" name="monfichier" size="51" /><p>
<input type="reset" value="Effacer">
<input type="submit" name="preview" value="Valider">
</form>

ensuite, l'upload de fichier s'effectue correctement dans le répertoire désigné, mais par contre, la base n'est pas mise à jour vu que je ne récupère pas mon id :

$id = $_POST["id"];
echo 'L\'id est ';
echo $id;

// --------------------Upload fichier------------------------------
$dossier = './dossier_upload/';
$fichier = basename($_FILES['monfichier']['name']);
$taille_maxi = 2000000;
$taille = filesize($_FILES['monfichier']['tmp_name']);
$extensions = array('.gif', '.jpg', '.jpeg', '.doc', '.pdf', '.PDF', '.png', '.PNG', '.GIF', '.JPG', '.JPEG', '.DOC');
$extension = strrchr($_FILES['monfichier']['name'], '.');

if(move_uploaded_file($_FILES['monfichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
          {
          echo 'Chargement effectué avec succès !';
        }
$requete_update = "UPDATE manifestations SET lien_fichier='".$lien_fichier."' , fichier='".$fichier."' , extension='".$extension."' WHERE id=".$_GET['id']."";

    // on insère les informations du formulaire dans la table
    mysql_query($requete_update) or die('Erreur SQL !'.$sql.mysql_error());

Et voici mon message d'erreur  : L'id est Chargement effectué avec succès !Erreur SQL !You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 :(

Qu'est-ce qu'il faut faire ?

Hors ligne

#10 26-09-2009 12:24:36

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Clause WHERE dans PHP

Saluton,
Il faudrait choisir, c'est $_POST['id'] ou $_GET['id'], mais pas un coup l'un, un coup l'autre.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#11 26-09-2009 14:09:58

t14
Membre
Inscription : 10-09-2009
Messages : 96

Re : Clause WHERE dans PHP

Effectivement ! J'ai essayé avec POST, et le résultat est le même qu'avec GET !!!!!! Même message d'erreur ..... hmm

Hors ligne

#12 26-09-2009 18:09:34

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Clause WHERE dans PHP

Si tu faisais apparaître le texte de la requête tel qu'il est soumis par PHP à MySQL, ton erreur te sauterait aux yeux.

mysql_query($requete_update) or die('Erreur SQL !'.$sql.mysql_error())."<br />$requete_update";

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#13 27-09-2009 19:32:45

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Clause WHERE dans PHP

tu transmets l'id en POST donc tu ne peux pas l'utilisé en GET dans ta requète

Hors ligne

Pied de page des forums