Dialogue php/mysql pour écriture dans bdd

Résolu/Fermé
Nokazuma - 17 avril 2012 à 17:52
 Nokazuma - 19 avril 2012 à 10:02
Bonjour,

Je souhaite réaliser un catalogue perso de bd. Pour cela j'utilise php et mysql.

Mais je crois que le code écrit échoue à me connecter à la BDD.

J'ai deux fichiers : "index.html" et "traitement.php" dont voici les codes :

Index.html
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>Titre</title></head>
<body>
<form method="post" action="traitement.php">

<fieldset><legend>TYPE</legend>
<p>Type :
<input type="radio" name="type" value ="bd" id="bd" /><label for="bd">BD</label>
<input type="radio" name="type" value="auteur" id="auteur" /><label for="auteur">Auteur</label>
</p></fieldset>

<fieldset><legend>BD</legend>
<p><label for="titre"> Titre</label> : <input type="text" name="titre" id="titre" /></p>
<p><label for="serie"> Série</label> : <input type="text" name="serie" id="serie" /></p>
<p><label for="no_serie"> No dans la série</label> : <input type="number" min="1" name="no_serie" id="no_serie" /></p>
<p><label for="scenar"> Scénario</label> : <input type="text" name="scenar" id="scenar" /></p>
<p><label for="dessin"> Dessins</label> : <input type="text" name="dessin" id="dessin" /></p>
<p><label for="couleur"> Couleurs</label> : <input type="text" name="couleur" id="couleur" /></p>
<p><label for="publi"> Date de publication</label> : <input type="date" name="publi" id="publi" /></p>
<p><label for="isbn"> ISBN</label> : <input type="text" name="isbn" id="isbn" /></p>
<p><label for="couv"> Couverture</label> : <input type="text" name="couv" id="couv" /></p></fieldset>

<fieldset><legend>AUTEUR</legend>
<p><label for="nom"> Nom</label> : <input type="text" name="nom" id="nom" /></p>
<p><label for="prenom"> Prénom</label> : <input type="text" name="prenom" id="prenom" /></p>
<p><label for="pseudo_nom"> Pseudo nom</label> : <input type="text" name="no_serie" id="pseudo_nom" /></p>
<p><label for="pseudo_prenom"> Pseudo prénom</label> : <input type="text" name="pseudo_prenom" id="pseudo_prenom" /></p>
<p><label for="naissance"> Naissance</label> : <input type="date" name="naissance" id="naissance" /></p>
<p><label for="mort"> Mort</label> : <input type="date" name="mort" id="mort" /></p>
<p><label for="nationalite"> Nationalité</label> : <input type="text" name="nationalite" id="nationalite" /></p>
</fieldset>
<fieldset><legend>Boutons</legend>
<p><input type="submit" value="GO !" />
<input type="reset" /></p></fieldset>

</form>
</body>
</html>


Traitement.php
<?php
$mabasededonnee="DB"; 
$connection = mysql_connect("aaa","bbb","ccc");
// teste la connection
if ( ! $connection )
  die ("connection impossible");
  // Connecte la base
  mysql_select_db($mabasededonnee) or die ("pas de connection");

if ($type == "bd")
{$requete="INSERT INTO bd(id, titre, serie, ordre_serie, scenario, dessin, couleur, publi_annee, isbn, couverture) VALUES('', $_POST['titre'], $_POST['serie'], $_POST['no_serie'], $_POST['dessin'], $_POST['couleur'], $_POST['publi'], $_POST['isbn'], $_POST['couv'])"}

else
{$requete="INSERT INTO auteur(id, nom, prenom, pseudo_nom, pseudo_prenom, naissance, mort, nationalite) VALUES('', $_POST['nom'], $_POST['prenom'], $_POST['pseudo_nom'], $_POST['pseudo_prenom'], $_POST['naissance'], $_POST['mort'], $_POST['nationalite'])";}

mysql_query($requete,$connection);
mysql_close($connection);
?>


Quand je rentre des données dans le premier fichier (je n'ai testé que quelques champs, peut-être faut-il tous les tester ?), j'obtiens ce message :

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /"monserveurweb"/traitement.php on line 11

Que faudrait-il changer ? Le but est simplement de rentrer des infos à la chaîne par le formulaire dans une bdd pour, plus tard, afficher un tableau avec tout ça.

Merci d'avance.

4 réponses

Bonsoir,
Je pencherais pour une erreur de syntaxe provoquée par tes variables $_POST['truc'], les simples quotes doivent poser problème car il faut concaténer les variables dans tes 2 requêtes.
D'ailleurs lors de l'exécution des requêtes, MySQL doit émettre un message d'erreur "You have a syntax error..." mais comme tu ne débugues pas tes requêtes avec mysql_error(), on ne saura jamais :p
0
Bonsoir,

Merci pour ta réponse ReDLoG, mais ça va un peu vite là :).

Alors :

1 - ce serait mieux d'écrire $_POST["*"] que $_POST['*'] ? c'est possible, j'y connais pas grand-chose en web. Mais ça change quoi ? parce que concaténer je sais que ça veut dire additionner en gros, mais ça s'arrête là :).

En fait, j'aimerais bien faire plus simple, mais je vois pas comment. L'idée c'est de récupérer les variables de $_POST pour les mettre dans la table de la bdd aux bons endroits. Ma méthode est pas bonne ?

2 - comment tu utilises le mysql_error() ? parce que je voudrais bien l'utiliser mais ces satanés tutos d'internet expliquent les trucs par petits bouts et j'ai un peu de mal à tout rassembler de manière cohérente pour écrire le dit-code qui merdouille :).

Voilà, je vais continuer à chercher mais merci pour ta réponse.

PS : sur le code que j'ai collé, y a un ; qui doit manquer avant le else, mais je n'en suis pas sûr ?
0
Bonsoir

À l'intérieur d'une chaîne entre double quotes, il ne FAUT PAS mettre de simple quotes autour de l'indice d'une variable tableau
if ($type == "bd")
{$requete="INSERT INTO bd(id, titre, serie, ordre_serie, scenario, dessin, couleur, publi_annee, isbn, couverture) VALUES('', $_POST[titre], $_POST[serie], $_POST[no_serie], $_POST[dessin], $_POST[couleur], $_POST[publi], $_POST[isbn], $_POST[couv])"}

Idem pour l'autre requête.
0
Bonjour,

Merci de vos réponses.

Effectivement le père, en enlevant les doubles quotes, ça ne m'affiche plus d'erreur.

Je mets donc le sujet en résolu, mais comme je n'ai ni tout compris, ni le résultat que je veux (je ne crois pas que ça écrive dans la base, parce que quand je lui demande de me l'afficher, il n'y a rien), je continue à chercher.

En tout cas vraiment merci à tous les deux, j'y vois déjà plus clair :).
0