Xone
Jarrie Arena
Messages : 1 040 Inscrit le 02/11/03
Ville : Grenoble (Jarrie)
Non connecté
|
|
Posté le 09 avril 2005 - 16 h 33 m 05 s |
|
|
bonjour qq1 pourra t 'il m'aider ?
voici le code
1. <html>
2. <head>
3. <title>Document sans titre</title>
4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
5. </head>
6.
7. <body>
8. <html>
9. <form method="POST" action="ad.php">
10. <center>
11. <input type="text" name="titre" size="20" value="titre" maxlength="35">
12. <input type="text" name="artiste" size="20" value="artiste" maxlength="35">
13. <br>
14. <input type="text" name="label" size="20" value="label" maxlength="70">
15. <input type="text" name="genre" size="20" value="genre" maxlength="11">
16. <br>
17.
18. <br>
19. <input type="submit" value="Envoyer" name="envoyer">
20. </center>
21. </form>
22. </html>
23.
24. <?
25. // On commence par récupérer les champs
26. if(isset($_POST['titre'])) $titre=$_POST['titre'];
27. else $titre="";
28.
29. if(isset($_POST['artiste'])) $artiste=$_POST['artiste'];
30. else $artiste="";
31.
32. if(isset($_POST['label'])) $label=$_POST['label'];
33. else $label="";
34.
35. if(isset($_POST['genre'])) $genre=$_POST['genre'];
36. else $genre="";
37.
38.
39. // On vérifie si les champs sont vides
40. if(empty($titre) OR empty($artiste) OR empty($genre) )
41. {
42. echo '<font color="red">Attention, seul le champs <b>label</b> peut rester vide !</font>';
43. }
44.
45. // Aucun champ n'est vide, on peut enregistrer dans la table
46. else
47. {
48. // connexion à la base
49. $db = mysql_connect('localhost', 'root', '');
50. // sélection de la base
51.
52. mysql_select_db('max',$db);
53.
54. // on écrit la requête sql
55. $sql = "INSERT INTO tracks_tbl(titre, artiste, label, genre,) VALUES('$titre','$artiste','$label','$genre')";
56.
57. // on insère les informations du formulaire dans la table
58. mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
59.
60. // on affiche le résultat pour le visiteur
61. echo 'Vos infos on été ajoutées.';
62.
63. mysql_close(); // on ferme la connexion
64. }
65. ?>
66. </body>
67. </html>
j'obtient sa comme erreur
Erreur SQL !INSERT INTO tracks_tbl(titre, artiste, label, genre,) VALUES('titre','artiste','label','genre')
Erreur de syntaxe près de ') VALUES('titre','artiste','label','genre')' à la ligne 1
merci de votre aide
|
|
| |
Cherche dvd de ELEPHANT
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 09 avril 2005 - 16 h 47 m 40 s |
|
|
ben fo juste que tu mettes des $ dans ta requete devaznt les noms de variable, la tu balances du texte dans la table et non la valeur de tes variables. d'autre part, dans ton insert, apres le nom de la table, pas besoin de repreciser l'ordre des champs car le insert insere les donnees dans l'ordre ou tu les insere.
INSERT INTO tracks_tbl VALUES ('$titre', '$artiste', '$label', '$genre');
bon sinon au debut de ton code tu fais 2 tests pour savoir si la variable est affectee ou non, 1 des 2 (voire les 2) est inutile ! au lieu d'affecter tes variables en disant $machin=$_POST['machin'] utilises directement $_POST['machin'], c'est pareil  en gros vires tes 10 premieres lignes de php, elles servent a rien.
enfin bon... comme tu le sens ! dernier truc, au lieu de faire bosser ton serveur pour verif les champs, ajoutes un code javascript pour que les champs soient testes AVANT l'envoi du formulaire, comme ca ca evite du boulot inutile a ton serveur
autre point important, dans ta table, il faut creer un index, sinon, bonjour les doublons...
bon courage
|
|
| |
|
Xone
Jarrie Arena
Messages : 1 040 Inscrit le 02/11/03
Ville : Grenoble (Jarrie)
Non connecté
|
|
Posté le 09 avril 2005 - 16 h 57 m 38 s |
|
|
nikel merci grabber
qu'appelle tu un index ?
comment faire ça ?
sinon j'ai rajouté un id
|
|
| |
Cherche dvd de ELEPHANT
|
DeVice
Boulet occasionel...
Messages : 3 022 Inscrit le 12/03/03
Ville : Grenoble
Non connecté
|
|
Posté le 10 avril 2005 - 12 h 18 m 46 s |
|
|
Le 09 avril 2005 - 16 h 33, Xone a écrit :
$sql = "INSERT INTO tracks_tbl(titre, artiste, label, genre,) VALUES('$titre','$artiste','$label','$genre')";
|
Je pense que cette virgule en trop peut-être la source de l'erreur syntaxique
|
|
| |
Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 008 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 10 avril 2005 - 12 h 18 m 54 s |
|
|
INSERT INTO tracks_tbl(titre, artiste, label, genre,) VALUES('titre','artiste','label','genre')
Regarde apres genre, t'a une virgule toute seule! L'erreur viens de la!
EDIT :
|
|
| |
Message édité 1 fois, la dernière par Woofy le 10 avril 2005 - 12 h 19. |
| |
Totalement inutile, donc completement indispensable 
|
DeVice
Boulet occasionel...
Messages : 3 022 Inscrit le 12/03/03
Ville : Grenoble
Non connecté
|
|
Posté le 10 avril 2005 - 12 h 21 m 38 s |
|
|
Le 09 avril 2005 - 16 h 47, grabber a écrit :enfin bon... comme tu le sens ! dernier truc, au lieu de faire bosser ton serveur pour verif les champs, ajoutes un code javascript pour que les champs soient testes AVANT l'envoi du formulaire, comme ca ca evite du boulot inutile a ton serveur 
|
C'est une mauvaise idée de ne pas vérifier les données soumises par l'utilisateur avant utilisation par le serveur. Si tu fais la vérif. en javascript, coté client, un bidouilleur peut bricoler une "attaque" de ta base, tandis que si tu fais les tests de validité coté serveur, tu es plus tranquille.
C'est mon opinion de parano averti
|
|
| |
Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 11 avril 2005 - 00 h 11 m 17 s |
|
|
Le 10 avril 2005 - 12 h 21, DeVice a écrit :
Le 09 avril 2005 - 16 h 47, grabber a écrit :enfin bon... comme tu le sens ! dernier truc, au lieu de faire bosser ton serveur pour verif les champs, ajoutes un code javascript pour que les champs soient testes AVANT l'envoi du formulaire, comme ca ca evite du boulot inutile a ton serveur 
|
C'est une mauvaise idée de ne pas vérifier les données soumises par l'utilisateur avant utilisation par le serveur. Si tu fais la vérif. en javascript, coté client, un bidouilleur peut bricoler une "attaque" de ta base, tandis que si tu fais les tests de validité coté serveur, tu es plus tranquille.
C'est mon opinion de parano averti 
|
l'un n'empeche pas l'autre, mais je persiste, il est inutile de faire bosser le serveur si aucun champ requis n'est rempli. apres, libre a toi de faire les tests que tu veux sur tes donnees en aval, mais avant de tester la validite d'une info, il faut que l'info soit presente
la bande passante est un parametre important, tout comme les connexions simultanees sur mysql, et imposer a l'utilisateur un rechargement supplementaire de la meme page si certaines donnees requises sont absentes est hors de propos, c'est d'ailleurs a cela que sert javascript, tester les evenements 
je suis donc en partie daccord avec toi seulement
... et c vrai t un peu parano lol, mais je suis un peu comme toi donc
pour l'interesse en ce qui concerne les index : en gros, tu ajoutes une colonne a ta base genre si tu as les colonnes suivantes actuellement :
- titre
- artiste
- label
- genre
tu ajoutes une premiere colonne "identifiant_chanson" a laquelle tu vas apporter une propriete auto increment lors de sa creation(dans ton phpmyadmin  ). lorsque tu vas faire une insertion dans ta base, tu ne t'occupes pas de cette identifiant qui va etre gere tt seul. auto-increment fa&it que lors de la 1ere insertion dans ta table, les donnees porteront l'ident 1, la seconde serie l'identifiant 2, etc. l'interet de l'autoincrement est d'eviter les doublons, par exemple si tu tapes 2 fois la meme chanson dans ton formulaire, tu auras un doublon  pas avec l'index car il n'est pas falsifiable. imaginons que tu aies entre 3 titres dans ta table, avec comme index 1, 2 et 3, si tu supprimes le 2, ta table commencera avec le 1, puis le 3 (car le 2 est supprime). si tu ajoutes une nouvelle chanson, elle aura l'identifiant 4, et le 2 ne sera plus jamais utilise 
la methode des index permet egalement de "classer" par ordre d'arrivee tes enregistrements des plus recents aux plus anciens pourquoi pas !
tu comprends ?
la seule facon de reinitialiser les index fait avec autoiincrement sans supprimer une table et la recreer serait de faire un truncate, qui aurait pour effet de vider la table et de reinitialiser les index sans aneantir la strucutre de la dite table.
|
|
| |
|
Xone
Jarrie Arena
Messages : 1 040 Inscrit le 02/11/03
Ville : Grenoble (Jarrie)
Non connecté
|
|
Posté le 11 avril 2005 - 18 h 03 m 22 s |
|
|
oui je comprend c'est justement ce que j'avais fais
petite question comment on fait pour coder un pass par dans une base mysql
?
|
|
| |
Cherche dvd de ELEPHANT
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 12 avril 2005 - 00 h 39 m 26 s |
|
|
encodage md5
|
|
| |
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 008 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 12 avril 2005 - 00 h 47 m 05 s |
|
|
sinon y a une fonction PASSWORD dans mysql si tu veut.
Utilisation : INSERT INTO `ma_table` (`...`, `...`, `...`) VALUES ('...', PASSWORD('monpass', '...');
|
|
| |
Totalement inutile, donc completement indispensable 
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 12 avril 2005 - 01 h 07 m 29 s |
|
|
Le 12 avril 2005 - 00 h 47, Woofy a écrit :
sinon y a une fonction PASSWORD dans mysql si tu veut.
Utilisation : INSERT INTO `ma_table` (`...`, `...`, `...`) VALUES ('...', PASSWORD('monpass', '...');
|
attention a cette fonction !!!
elle a evolue au cours des versions de mysql, ce qui veut dire que des pass crees avec telle version ne seront pas forcement operationnels suite a une maj de mysql ! je deconseille donc a moins d'etre sur de la maitrise des updates
http://www.nexen.net/docs/mysql/annotee/password-hashing.php?lien=suivant
|
|
| |
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 008 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 12 avril 2005 - 02 h 26 m 41 s |
|
|
|
|
|
| |
Totalement inutile, donc completement indispensable 
|
tempo
Zen
Messages : 2 177 Inscrit le 14/09/02
Ville : Grenoble (SMH)
Non connecté
|
|
Posté le 12 avril 2005 - 12 h 20 m 33 s |
|
|
Le 11 avril 2005 - 00 h 11, grabber a écrit :
Le 10 avril 2005 - 12 h 21, DeVice a écrit :
Le 09 avril 2005 - 16 h 47, grabber a écrit :enfin bon... comme tu le sens ! dernier truc, au lieu de faire bosser ton serveur pour verif les champs, ajoutes un code javascript pour que les champs soient testes AVANT l'envoi du formulaire, comme ca ca evite du boulot inutile a ton serveur 
|
C'est une mauvaise idée de ne pas vérifier les données soumises par l'utilisateur avant utilisation par le serveur. Si tu fais la vérif. en javascript, coté client, un bidouilleur peut bricoler une "attaque" de ta base, tandis que si tu fais les tests de validité coté serveur, tu es plus tranquille.
C'est mon opinion de parano averti 
|
l'un n'empeche pas l'autre, mais je persiste, il est inutile de faire bosser le serveur si aucun champ requis n'est rempli. apres, libre a toi de faire les tests que tu veux sur tes donnees en aval, mais avant de tester la validite d'une info, il faut que l'info soit presente
la bande passante est un parametre important, tout comme les connexions simultanees sur mysql, et imposer a l'utilisateur un rechargement supplementaire de la meme page si certaines donnees requises sont absentes est hors de propos, c'est d'ailleurs a cela que sert javascript, tester les evenements 
je suis donc en partie daccord avec toi seulement
... et c vrai t un peu parano lol, mais je suis un peu comme toi donc
|
securité !!!
=> il faut faire les deux:
- coté client pour traquer au maxi les erreurs utilisateur => evite de "surcharger" le serveur et permet d'interagir plus rapidement avec l'utilisateur (style la popup js pour lui signifier: "oups, la t'as mis un truc qui va pas..")
- coté serveur: surtout pour se premunir des mauvaises surprises, style le champ rempli avec une quote (') et ce qui va bien derriere.... => il y a une fonction php/mysql que je conseille d'utiliser: mysql_escape_string
pour le md5 => php a une jolie fonction md5...
EDIT: juste pour mettre en evidence mysql_escape_string...
|
|
| |
Message édité 1 fois, la dernière par tempo le 13 avril 2005 - 11 h 58. |
| |
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 12 avril 2005 - 21 h 01 m 32 s |
|
|
Le 12 avril 2005 - 12 h 20, tempo a écrit :
Le 11 avril 2005 - 00 h 11, grabber a écrit :
Le 10 avril 2005 - 12 h 21, DeVice a écrit :
Le 09 avril 2005 - 16 h 47, grabber a écrit :enfin bon... comme tu le sens ! dernier truc, au lieu de faire bosser ton serveur pour verif les champs, ajoutes un code javascript pour que les champs soient testes AVANT l'envoi du formulaire, comme ca ca evite du boulot inutile a ton serveur 
|
C'est une mauvaise idée de ne pas vérifier les données soumises par l'utilisateur avant utilisation par le serveur. Si tu fais la vérif. en javascript, coté client, un bidouilleur peut bricoler une "attaque" de ta base, tandis que si tu fais les tests de validité coté serveur, tu es plus tranquille.
C'est mon opinion de parano averti 
|
l'un n'empeche pas l'autre, mais je persiste, il est inutile de faire bosser le serveur si aucun champ requis n'est rempli. apres, libre a toi de faire les tests que tu veux sur tes donnees en aval, mais avant de tester la validite d'une info, il faut que l'info soit presente
la bande passante est un parametre important, tout comme les connexions simultanees sur mysql, et imposer a l'utilisateur un rechargement supplementaire de la meme page si certaines donnees requises sont absentes est hors de propos, c'est d'ailleurs a cela que sert javascript, tester les evenements 
je suis donc en partie daccord avec toi seulement
... et c vrai t un peu parano lol, mais je suis un peu comme toi donc
|
securité !!!
=> il faut faire les deux:
- coté client pour traquer au maxi les erreurs utilisateur => evite de "surcharger" le serveur et permet d'interagir plus rapidement avec l'utilisateur (style la popup js pour lui signifier: "oups, la t'as mis un truc qui va pas..")
- coté serveur: surtout pour se premunir des mauvaises surprises, style le champ rempli avec une quote (') et ce qui va bien derriere.... => il y a une fonction php/mysql que je conseille d'utiliser: mysql_escape_string
pour le md5 => php a une jolie fonction md5...
|
c'est justement ce qui est ecrit
|
|
| |
|
DeVice
Boulet occasionel...
Messages : 3 022 Inscrit le 12/03/03
Ville : Grenoble
Non connecté
|
|
Posté le 12 avril 2005 - 21 h 41 m 41 s |
|
|
On est d'accord : les deux, c'est mieux
|
|
| |
Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"
|
grabber
Coordinateur
MacBook Pro 2,4 Powered
Messages : 8 510 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 13 avril 2005 - 11 h 30 m 27 s |
|
|
Le 12 avril 2005 - 21 h 41, DeVice a écrit :
On est d'accord : les deux, c'est mieux 
|
a 2 c toujours mieux lol  (oula, chui en forme...  )
|
|
| |
|
mik69
Allez l'OL !
Messages : 1 282 Inscrit le 02/07/03
Ville : GRIGNY 69
Non connecté
|
|
Posté le 25 mai 2005 - 18 h 21 m 36 s |
|
|
oui mais deux bouts, c'est mou...
La sortie c'est où ? Ah ! c'est là.
|
|
| |
|
|