Page 1 sur 1

Formulaire php multimania

Posté : 21 avr. 2008, 09:58
par thoomas
Bonjour à tous,

Dans le cadre d'un cours informatique à la fac, je dois faire cela: créer un formulaire avec plusieurs choix (menu déroulant ou cases à cocher). En fait, lorsqu'un visiteur passe sur mon site il doit pouvoir voter pour un produit (mauvais, moyen, bien, très bien) par exemple. Bien sûr il faut que cela soit relié à la base de données php de multimania pour que les choix de chacun soient enregistrés.

J'utilise Open Office pour créer le formulaire. Jusque là pas de problèmes mais après je dois insérer un script dans cette page pour que ce soit relié à la table de données.

Comme vous l'aurez deviné, je suis débutant et j'ai besoin d'aide.

Merci :D

UPDATE

Voici plus de détails.

Voici le script que je dois utiliser. C'est un script utilisé pour un travail précédent mais le prof a dit que basiquement ca restait le même. Il faut juste modifier quelques trucs pour un menu déroulant.
Que faut-il remplacer dans ce script ? Que modifier dans la base de données ?


Voici mon formulaire:
http://membres.lycos.fr/ggthomas/volvic.php

Que faudrait-il modifier pour que ca marche ? Pour chaque case à cocher, j'ai crée une entrée dans la base de données. J'ai fais plusieurs essais en essayant de tout bien remplacer dans le script mais sans succès...


// Parametres de connexion à la base de données

$dbhost="localhost";
$dblogin="root";
$dbpassword="";
$dbname="dbname";

// Conversion des variables externes
// en variables globales
// Adaptez les listes à vos champs

$prenom = $_GET["prenom"];
$nom = $_GET["nom"];
$adresse = $_GET["adresse"];

echo "Bonjour $prenom $nom,<br>";
mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);
$result=mysql_query("INSERT INTO elections (nom,prenom,adresse,n1,n2)
VALUES ('$nom','$prenom','$adresse',0,0)");
if (!$result) {
echo "L'enregistrement de vos données a échoué. Essayez plus tard<br>";
} else {
echo "Félicitations. Vous êtes desormais inscrit!<br>";
}
mysql_close();
?>

Posté : 21 avr. 2008, 13:48
par Ryle
Si tu ne précises pas la méthode d'envoi des données d'un formulaire (attribut "method"), alors celles-ci sont par défaut envoyée en POST et non en GET. Il faudrait donc les les récupérer avec la variable $_POST.

Par ailleurs, une case à cocher n'est envoyée au serveur que si elle a été cochée. Ainsi si le nom de la case est "gout", alors il te suffit de faire un isSet($_POST['gout']) pour savoir si la variable $_POST['gout'] est définie et donc si la case est cochée.

Enfin, la requête est à adapter en fonction de la structure de ta table et des valeurs que tu récupères :)

Posté : 21 avr. 2008, 14:15
par thoomas
Merci de prendre la peine de me répondre mais j 'avoue ne pas trop comprendre ce qu'il faut faire d'après tes explications. Je suis moins qu'un débutant :oops: :)

Posté : 21 avr. 2008, 14:22
par Truc
Au niveau FAC tu devrais pouvoir te dépatauger avec ces indication mais aussi avec google, des tutoriels et site (siteduzero)

Posté : 21 avr. 2008, 14:32
par thoomas
Oui je vais chercher plus. Sinon quelqu'un serait intéréssé pour me le faire contre rémunération (via paypal) ? Cette rémunération serait d'environ 30 euros.

Posté : 21 avr. 2008, 14:33
par Truc
Et tu vas acheter ton diplôme aussi ? :roll:

Posté : 21 avr. 2008, 14:36
par thoomas
T'inquiéte, je n'étudie pas du tout l'informatique. C'est une toute petite matière dans mon cursus (1h par semaine). Je ne sais pas même pas pourquoi on a de l'informatique vu que j'étudie les langues étangères. 8-)

Posté : 21 avr. 2008, 15:51
par Hywan
Hey :),

On ne s'improvise pas informaticien en quelques secondes. Pour arriver à tes fins tu devrais connaître l'HTML, le PHP et accessoirement le CSS (de nos jours, ce serait quand même un minimum), avec en plus des notions (même superficielles) en base de données relationnelle, et un de ces gestionnaires (SGBDR, Système de Gestion de Base de Données Relationnelle), comme MySQL.

Apparemment, ce serait une matière complètement annexe, mais ayant des amis en faculté de langues étrangères, je leur ai demandé s'ils avaient des cours du genre, et non. Je me pose donc la question, est-ce que c'est vrai ce gros mensonge ?

Il n'est pas rare de voir débarqué des étudiants qui doivent rendre pour la veille un devoir à faire sur 6 mois. D'où ma méfiance.

Si c'est effectivement le cas, comme je l'ai précisé plus haut : l'informatique ne s'improvise pas, et encore moins la programmation. Tu serais le premier à le savoir. Une langue, comme un langage, est basée sur une grammaire, une sémantique particulière. Chaque mot (ou mot-clé, opérateur etc.) a un sens très précis.
J'en arrive donc à penser que tu dois avoir des cours en soutient ? Genre : les balises simples de l'HTML, qu'est-ce une page HTML etc., non ?
Car ce n'est pas avec des outils comme OpenOffice que tu vas réaliser un site Web (à la limite, si tu es très débutant, je te conseille NVu).

En fait, ce qui me choque le plus, c'est que si c'est une matière annexe, on ne va pas te demander de l'HTML, du CSS, du PHP, et du MySQL ... Car c'est quand même le programme du premier semestre de seconde année de licence d'informatique (soit le semestre 3 en fait). C'est donc très étonnant de voir ça en fac de langues étrangères ...

Posté : 21 avr. 2008, 16:21
par Truc
Apparemment, ce serait une matière complètement annexe, mais ayant des amis en faculté de langues étrangères, je leur ai demandé s'ils avaient des cours du genre, et non. Je me pose donc la question, est-ce que c'est vrai ce gros mensonge ?
Voir du du php j'en sais rien mais du javascript en LEA oui... j'en connais... ça dépend de la FAC dirons nous.
L'utilité reste à démontrer ! :roll:

Bref tu y arriveras seul avec un peu de jugeote et lecture...

Posté : 21 avr. 2008, 18:38
par thoomas
Non non il ne faut faut pas réaliser un site en php, juste un formulaire. Je suis en 2éme année de LEA. Merci de me faire la leçon Hywan et truc, je ne le prends pas mal, je sais bien qu'on a rien sans rien mais j'ai pas trop envie de perdre beaucoup de temps à comprendre tout ça. Surtout que j'en ai peu (stage + rapport de stage + partiels). Quant aux cours, ils ont été inutiles vu que le prof reste assis devant son ordi ou à la fenêtre toute la séance et n'explique quasiment rien.

Posté : 22 avr. 2008, 18:53
par thoomas
Voici ce que j'ai essayé de faire mais évidemment ce n'est pas ça. Qui peut m'indiquer mes erreurs svp? Merci.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
<TITLE></TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 2.3 (Win32)">
<META NAME="AUTHOR" CONTENT="Thomas ">
<META NAME="CREATED" CONTENT="20080320;14241179">
<META NAME="CHANGEDBY" CONTENT="Thomas ">
<META NAME="CHANGED" CONTENT="20080322;14523623">
<META NAME="CHANGEDBY" CONTENT="Thomas ">
<META NAME="CHANGEDBY" CONTENT="Thomas ">
<STYLE TYPE="text/css">
<!--
@page { size: 21cm 29.7cm }
-->
</STYLE>
</HEAD>
<BODY LANG="fr-FR" DIR="LTR">
<P><BR><BR>
</P>
<FORM NAME="Standard" ACTION="../Info">
<TABLE WIDTH=820 BORDER=0 CELLPADDING=4 CELLSPACING=0 STYLE="page-break-inside: avoid">
<COL WIDTH=406>
<COL WIDTH=191>
<COL WIDTH=199>
<TR VALIGN=TOP>
<TD WIDTH=406>
<P><BR>
</P>
</TD>
<TD WIDTH=191>
<P ALIGN=CENTER><FONT FACE="Tahoma, sans-serif"><FONT SIZE=4 STYLE="font-size: 16pt"><B>EVIAN</B></FONT></FONT></P>
</TD>
<TD WIDTH=199>
<P ALIGN=CENTER><FONT FACE="Tahoma, sans-serif"><FONT SIZE=4 STYLE="font-size: 16pt"><B>VOLVIC</B></FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=406>
<P>Avez-vous appr&eacute;ci&eacute; la douceur de l'eau ?</P>
</TD>
<TD WIDTH=191>
<P><INPUT TYPE=CHECKBOX NAME="dou" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
<TD WIDTH=199>
<P><INPUT TYPE=CHECKBOX NAME="douc" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=406>
<P>Avez-vous appr&eacute;ci&eacute; le go&ucirc;t de l'eau ?</P>
</TD>
<TD WIDTH=191>
<P><INPUT TYPE=CHECKBOX NAME="gou" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
<TD WIDTH=199>
<P><INPUT TYPE=CHECKBOX NAME="gout" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=406>
<P>Avez-vous appr&eacute;ci&eacute; la min&eacute;ralisation de
l'eau .</P>
</TD>
<TD WIDTH=191>
<P><INPUT TYPE=CHECKBOX NAME="min" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
<TD WIDTH=199>
<P><INPUT TYPE=CHECKBOX NAME="mine" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=406>
<P>Avez-vous appr&eacute;ci&eacute; l'effet produit sur votre
corps par l'eau ?</P>
</TD>
<TD WIDTH=191>
<P><INPUT TYPE=CHECKBOX NAME="eff" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
<TD WIDTH=199>
<P><INPUT TYPE=CHECKBOX NAME="effe" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=406>
<P>Le service consommateur vous a-t-il satisfait ?</P>
</TD>
<TD WIDTH=191>
<P><INPUT TYPE=CHECKBOX NAME="sav" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
<TD WIDTH=199>
<P><INPUT TYPE=CHECKBOX NAME="savv" VALUE="" STYLE="width: 2.18cm; height: 0.54cm">Cocher
si oui
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=406>
<P><BR>
</P>
</TD>
<TD WIDTH=191>
<P><BR>
</P>
</TD>
<TD WIDTH=199>
<P><INPUT TYPE=SUBMIT NAME="PushButton" VALUE="Valider" STYLE="width: 2.5cm; height: 0.9cm"></P>
</TD>
</TR>
</TABLE>
</FORM>
<?php


// Parametres de connexion à la base de données

$dbhost="localhost";
$dblogin="root";
$dbpassword="";
$dbname="ggthomas_db";

// Conversion des variables externes
// en variables globales
// Adaptez les listes à vos champs

$dou = $_GET["dou"];
$gou = $_GET["gou"];
$min = $_GET["mine"];
$eff = $_GET ["eff"];
$sav = $_GET ["sav"];
$douc = $_GET ["douc"];
$gout = $_GET ["gout"];
$mine = $_GET ["mine"];
$effe = $_GET ["effe"];
$savv = $_GET ["savv"];

mysql_connect($dbhost,$dblogin,$dbpassword);mysql_selectdb($dbname);
$result=mysql_query("INSERT INTO eau (dou,gou,min,eff,sav,douc,gout,mine,effe,savv)
VALUES ('$dou','$gou','$min','$eff','$sav','$douc','$gout','$mine','$effe','$savv)");
if (!$result) {
echo "Merci d'avoir voté !<br>";
} else {
echo "Merci d'avoir voté !<br>";
}
mysql_close();
?>
<P><BR><BR>
</BODY>
</HTML>

Posté : 23 avr. 2008, 08:30
par Ryle
Qui peut m'indiquer mes erreurs svp?
Ben... PHP... il est le mieux placé pour ça et il doit en normalement te les écrires noir sur blanc (ou autres couleurs selon ta feuille de style) ;)

- Dis nous ce que devrait faire ton script.
- Dis nous ce que fait réellement ton script.
- Dis nous ce qu'en dit php s'il te retourne un ou des messages d'erreurs

A première vue, il y a une erreur de syntaxe dans ta requête SQL, un mysql_error() en cas d'erreur après l'exécution t'indiquera ce qui pose problème... :)

Posté : 23 avr. 2008, 08:53
par thoomas
Bonjour,

En fait quand on va sur cette page:
http://membres.lycos.fr/ggthomas/volvic.php

On devrait pouvoir cocher les cases que l'on souhaite et que les cases cochées (les réponses de chaque personne) soient envoyées à ma base de données multimania.

Dans ma base de données, j'ai crée une table et un champ pour chaque case (donc 10 en tout), chacune ayant un nom différent.

Le problème c'est que j'obtiens une erreur 404 quand je coche des cases et clique sur valider.

Je pense qu'il doit y avoir un problème dans le script mais je ne parviens pas à identifier quoi. Lorsque j'ai réalisé le formuaire avec Open Office (normalement ca devrait suffire pour faire un formulaire), j'ai donné un nom pour chaque case, identique à chaque champ dans la table de la base de données (table appelée "eau").

Merci.