> Tous les forums > Forum des Webmasters
 rajout données ds champs mysql
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t671
  Posté le 19/09/2009 @ 19:21 
Aller en bas de la page 
Astucien

Bonjour,

Je cherche la commande SQL qui permet de rajouter un ou des éléments dans un champ d'une table mysql déjà existante, sans toucher à l'élément en place.

C'est à dire que j'ai mon enregistrement "XXX" dans le champ A de la table B. Je voudrais, suite à la manip, retrouver mon enregistrement ainsi => "XXX YYY" (sans avoir à toucher à "XXX", et si possible avec l'espace représentant un retour à la ligne).

Merci

Publicité
Malcolm
 Posté le 19/09/2009 à 21:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

En numérique, c'est facile, mais en texte, à moins de réécrire complètement le champ, je ne vois pas ...

t671
 Posté le 20/09/2009 à 10:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Malcolm a écrit :

En numérique, c'est facile, mais en texte, à moins de réécrire complètement le champ, je ne vois pas ...

C'est un peu ce que je redoutais. Va donc falloir que je réécrive le champ en entier !?

t671
 Posté le 20/09/2009 à 11:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

J'ai quand même essayé de faire quelque chose sans réécrire le champ en entier ....

Voici le déroulement des opérations :

Après avoir cliqué sur un lien "Ajouter document ...." correspondant à un enregistrement ciblé affiché dans un tableau, j'ai une fenêtre qui s'ouvre où j'ai un onglet "Parcourir", et où je peux rechercher l'élément à rajouter. Je le sélectionne, je valide et j'ai ce message d'erreur : Erreur SQL !UPDATE manifestations SET(lien_fichier, fichier, extension) VALUES('./dossier_upload/Proverbes.doc', 'Proverbes.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/Proverbes.doc', 'Pro' at line 1

Une fois le document choisi, je cherche à complémenter trois champs (lien_fichier, fichier, extension) dans une table mysql.

Le terme 'Pro' at line 1 du message d'erreur, je ne vois pas à quoi cela correspond !

mon script d'ajout de fichier dans le champ de la table :

$id = $_GET["id"]; // id de l'enregistrement ciblé auquel on souhaite complémenter les champs lien_fichier, fichier, extension

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

...........................

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

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

Où ça bloque ?

Merci



Modifié par t671 le 20/09/2009 11:27
t671
 Posté le 22/09/2009 à 14:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Quelqu'un peut il m'aider ????? Je m'en sort pas, je trouve pas .....

Malcolm
 Posté le 22/09/2009 à 21:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

UPDATE table SET champ1='X', champ2='Y', champ3='Z' WHERE...

faut revoir ton SQL...

edit : protège ton ID



Modifié par Malcolm le 22/09/2009 21:56
t671
 Posté le 24/09/2009 à 11:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

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 ?

Malcolm
 Posté le 24/09/2009 à 13:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

T'as 2 solutions, comme je te l'ai déjà expliqué :

- soit tu mets ton ID en champ caché

- soit dans l'URL avec un ?id=$ton_id par exemple.

Le souci c'est que sur une page HTML (si j'ai bien compris, qui est à mi chemin) tu ne peux pas traiter de PHP.

Je ne comprends pas toute ton organisation, mais c'est pas le but. Je t'ai doné les possibilités techniques.

t671
 Posté le 26/09/2009 à 18:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

OK ! Je demande à récupérer mon id dans ma boîte d'upload de fichier (upload.html)

<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>

(j'ai mis la ligne "" en commentaire car sinon ça me fait deux lignes de type="hidden", et je ne sais pas si c'est correct).

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 Je ne sais plus comment ni quoi faire !!!!!!

Quelle organisation devrais-je adopter ?



Modifié par t671 le 26/09/2009 18:41
Publicité
Malcolm
 Posté le 26/09/2009 à 18:29 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

déjà, un manque de clarté dans ta présentation.

ton premier bloc est vide.

ton second est un gros paté.

Je sais que ce forum n'est pas bon pour la présentation du code (c'est ce qui me gave d'ailleurs) mais tu epeux faire un minimum.

ensuite, première chose à faire quand tu valides un formulaire :

echo '<pre>'; print_r($_POST); echo '</pre>';

ça te montre TOUTES les données que tu récupères depuis ton formulaire.

2è chose :

echo '<pre>'; print_r($_FILES); echo '</pre>';

ça te montre toutes les données des fichiers uploadés.

3è chose :

echo $req_update;

ça te montre quelle est la requête effectuée.

Si déjà tu n'as pas ce qu'il faut dans $_POST, ça ne sert à rien d'aller plus loin.

Si au final ta requête n'est pas conforme à ce que tu attends, idem.

Il faut que tu apprennes à avoir le réflexe de débugger un tout petit peu tes variables, c'est bien de venir dire "ça ne marche pas" mais au final, tu irais plus vite en vérifiant si tout est OK déjà au départ.

L'ID est {vide} donc tu ne récupères pas l'ID en $_POST.

Mon premier test te permet de le voir, si tu avais eu l'idée d'afficher le contenu de $_POST, tu l'aurais vu et tu aurais compris que ça ne sert à rien de se préoccuper de la requête MySL si déjà l'ID est foireux ...

PS : ne prends pas mon message comme un coup de gueule, mais juste une réflexion que tu dois avoir.

t671
 Posté le 26/09/2009 à 19:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Je ne prends pas ton message comme un coup de gueule ... Mais c'est sympa à toi "de tenter" à me mettre sur le bon chemin, et merci pour tous tes conseils ..... !

J'ai remis en place mon premier bloc qui avait disparu (je ne sais pas pourquoi ?).

Je n'arrive pas à corriger le deuxième bloc, donc le voici

$id = $_GET["id"];

echo '<pre>'; print_r($_GET); echo '</pre>'; // dans le doute ....

echo '<pre>'; print_r($_POST); echo '</pre>';

// --------------------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 ce que j'obtiens :

Array
(
)
Array
(
    [id] => 
    [preview] => Valider
)
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

Donc, effectivement, l'ID n'est pas récupéré ...... !!!!! Mais ça je m'en doutais un peu .

Malcolm
 Posté le 27/09/2009 à 09:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

t'as plus qu'à remonter à la page précédente pour voir pourquoi l'ID n'est pas transféré.

(PS : je ne te réponds pas sur HFR en //)

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
151,79 €Ecran 27 pouces AOC G2790VXA (VA, FullHD, 1 ms, 144 Hz, FreeSync) à 151,79 €
Valable jusqu'au 25 Juillet

RueDuCommerce propose actuellement l'écran 27 pouces AOC G2790VXA à 151,79 € alors qu'on le trouve ailleurs à partir de 220 €. Cet écran à rétroéclairage LED dispose d'une dalle VA Full HD (1920x1080), dispose d'entrées HDMI et DisplayPort. Grâce à son temps de réponse ultra rapide de 1 ms et à sa fréquence de 144 Hz, compatible FreeSync, il se distingue par sa très bonne réactivité ! Il possède les technologies anti-scintillement (Flicker Free) et anti lumière bleue (Eye Care).  


> Voir l'offre
499,99 €Vélo assistance électrique Xiaomi Mi Smart pliable à 499,99 €
Valable jusqu'au 25 Juillet

Fnac fait une promotion sur le vélo à assistance électrique Xiaomi Mi Smart pliable qui passe à 499,99 € au lieu de 799 €. Ce vélo pliable 16 pouces offre une autonomie de 45 km et une vitesse jusqu'à 25 km/h. 


> Voir l'offre
9,99 €Bloc multiprise parasurtenseur BRENNENSTUHL 8 prises à 9,99 €
Valable jusqu'au 25 Juillet

Cdiscount fait une promotion sur le bloc multiprise parasurtenseur BRENNENSTUHL avec 8 prises à orientation inversée qui passe à 9,99 € au lieu de 20 €. Le câble fait 1,4 m.


> Voir l'offre

Sujets relatifs
tester un champs mysql
Considérer un champs vide mysql non null
test champs base mysql
php/mysql: données ne sont pas inseres dans la bd
comparaison de données saisie/mysql
PHP/MySQL: count () plusieurs champs
Récupérer données de mysql
Probleme base de données MySQL
MySQL - somme des valeurs d'un champs [->Résolu
champs de longueur indéfini dans mysql
Plus de sujets relatifs à rajout données ds champs mysql
 > Tous les forums > Forum Forum des Webmasters