Page 1 sur 1

Update ou INSERT sur bd ?

Posté : 01 oct. 2009, 18:34
par t671
Bonjour,

J'ai une base de donnée Mysql qui contient des enregistrements. Je souhaiterais modifier certaines colonnes, en gardant ou pas les éléments qui s'y trouve.
J'affiche un tableau ou j'affiche le contenu de la base, puis je sélectionne un entregistrement à modifier, en récupérant l'id de l'enregistrement. Je fais appel à un script d'upload de fichier qui m'envoie un document dans un dossier définis.
Jusque là, tout va bien.
Ensuite, je veux mettre à jour les champs lien_fichier, fichier et extension (qui peuvent être vide ou contenir déjà une donnée) de l'enregistrement. J'ai testé l'INSERT, l'UPDATE, mais rien ne se passe et pas de message d'erreur !!!!!!!!

Code : Tout sélectionner

$id = $_GET['id']; // --------------------test 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'], '.'); //----------------------------upload fichier-------------------------------- 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 !'; } // on écrit la requête sql . $sql = "UPDATE manifestations SET lien_fichier='.$lien_fichier.', fichier='.$fichier.' , extension='.$extension.' WHERE id='.$id.'"; mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());
Pourriez-vous m'aider, svp ! Merci ! :(

Re: Update ou INSERT sur bd ?

Posté : 01 oct. 2009, 19:43
par AB
// on écrit la requête sql .
$sql = "UPDATE manifestations SET lien_fichier='.$lien_fichier.', fichier='.$fichier.' , extension='.$extension.' WHERE id='.$id.'";
mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());

[/code]
Elle est définie où la variable $lien_fichier ?

Sinon ta syntaxe pour écrire ta requête n'est pas bonne

Code : Tout sélectionner

$sql = "UPDATE manifestations SET lien_fichier='".$lien_fichier."', fichier='".$fichier."' , extension='".$extension."' WHERE id='".$id."'";

Re: Update ou INSERT sur bd ?

Posté : 03 oct. 2009, 19:09
par t671
Merci AB.
Voici ma requête :
$sql = "UPDATE manifestations SET lien_fichier='".$dossier.$fichier."', fichier='".$fichier."' , extension='".$extension."' WHERE id='".$id."'";
Je n'ai de message d'erreur, et rien ne s'inscrit dans ma base. :? :x
Pour ".$dossier.$fichier.", ça peut te paraitre bizarre, mais je l'utilise dans un INSERT pour un autre script (mais là c'est plutôt '$dossier$fichier', et ça fonctionne ....

Re: Update ou INSERT sur bd ?

Posté : 03 oct. 2009, 19:13
par t671
J'ai rajouté mysql_query($query_update) or die('Erreur SQL !'.$sql.mysql_error());
et j'ai comme message :
Chargement effectué avec succès !Erreur SQL !UPDATE manifestations SET lien_fichier='./dossier_upload/AMeli.doc', fichier='AMeli.doc' , extension='.doc' WHERE id=''Query was empty :shock:

Re: Update ou INSERT sur bd ?

Posté : 03 oct. 2009, 20:09
par FuZZyLine
Salut,
[...]
et j'ai comme message :
Chargement effectué avec succès !Erreur SQL !UPDATE manifestations SET lien_fichier='./dossier_upload/AMeli.doc', fichier='AMeli.doc' , extension='.doc' WHERE id=''Query was empty :shock:
Vérifie le type du champ ID de ta table et... fais un enregistrement via phpmyadmin ca devrait,
je pense, résoudre ton problème ('fin te mettre suffisament sur la piste pour le résoudre ;)

@+ ;)

Re: Update ou INSERT sur bd ?

Posté : 06 oct. 2009, 12:33
par t671
Merci ! J'ai donc testé, et j'ai constaté que je perdais l'id, une fois arrivé au script add.
Si je récapitukle : je sélectionne un enregistrement, et je le récupère dans mon script upload.php.
$id = $_GET["id"];

$result=mysql_query("SELECT * FROM manifestations WHERE id='$id'");
echo '<pre>'; print_r($_GET); echo '</pre>'; // visualiser l'id sélectionné
?>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Upload fichier</title>
</head> ..................
<form enctype="multipart/form-data" method="GET" action="add-manif-pj.php" value="envoyer" name="soumettre">
Là je teste l'id et il est bien présent. Par contre, il n'arrive pas à add-manif-pj.php :cry:
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$id = $_GET['id'];
echo 'L\'id est :';  
echo $id ; 
echo '<pre>'; print_r($_GET); echo '</pre>'; // visualiser l'id sélectionné
Et ma fameuse requête d'UPDATE que je n'ai pu donc tester :
$sql = "UPDATE manifestations SET lien_fichier='".$dossier.$fichier."', fichier='".$fichier."' , extension='".$extension."' WHERE id='".$id."'";
        mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());
La variable ".$dossier.$fichier." correspond à deux variable que je veux coller dans mon enregistrement, l'une à la suite de l'autre .....

Re: Update ou INSERT sur bd ?

Posté : 06 oct. 2009, 19:47
par AB
Merci ! J'ai donc testé, et j'ai constaté que je perdais l'id, une fois arrivé au script add.
Si je récapitukle : je sélectionne un enregistrement, et je le récupère dans mon script upload.php.
$id = $_GET["id"];

$result=mysql_query("SELECT * FROM manifestations WHERE id='$id'");
echo '<pre>'; print_r($_GET); echo '</pre>'; // visualiser l'id sélectionné
?>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Upload fichier</title>
</head> ..................
<form enctype="multipart/form-data" method="GET" action="add-manif-pj.php" value="envoyer" name="soumettre">
Là je teste l'id et il est bien présent. Par contre, il n'arrive pas à add-manif-pj.php :cry:
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$id = $_GET['id'];
echo 'L\'id est :';  
echo $id ; 
echo '<pre>'; print_r($_GET); echo '</pre>'; // visualiser l'id sélectionné
Et ma fameuse requête d'UPDATE que je n'ai pu donc tester :
$sql = "UPDATE manifestations SET lien_fichier='".$dossier.$fichier."', fichier='".$fichier."' , extension='".$extension."' WHERE id='".$id."'";
        mysql_query($sql) or die('Erreur SQL !'.$sql.mysql_error());
La variable ".$dossier.$fichier." correspond à deux variable que je veux coller dans mon enregistrement, l'une à la suite de l'autre .....
Ben alors t'a trouvé le pb. Donc plusieurs solutions :
Soit tu regroupe tous tes scripts dans une seule page (souvent c'est bien pratique), soit tu te débrouille pour envoyer l'id dans ton formulaire en tant que champs masqué puisque ce n'est pas une donnée rentrée dans les champs de ton formulaire. Les champs de type hidden sont fait pour ça.

Donc dans ton formulaire (action="add-manif-pj.php") tu ajoutes

Code : Tout sélectionner

<input type = "hidden" name = "id" value = "<?php echo isset($_GET["id"])? $_GET["id"] : ''?>" />
Sinon habituellement on utilise plutôt la méthode post plutôt que get pour envoyer des formulaires. C'est plus sécurisé et on peut envoyer des données plus volumineuses.

Par ailleurs un charset=windows-1252" n'est pas très recommandé, utilises plutôt Iso-8859-1 pour les langues latines ou utf-8 pour l'international