problème php

Répondre
Partager Rechercher
Bonjour,

J'ai décidé de me mettre au php seul, cependant, j'ai déjà un problème !
J'ai voulu faire un formulaire simple qui s'appelle "formulaire.php",
Code PHP:

<p>
    
Veuillez taper votre surnom :
</
p>

<
form action="cible.php" method="post">
<
p>
    <
input type="text" name="surnom" />
    <
input type="submit" value="Valider" />
</
p>
</
form
que voici, ou l'on demande le surnom du visiteur.

J'ai donc crée une cible, "cible.php" ou j'aimerai récupérer ce qu'a écris l'utilisateur
Code PHP:

<p>Bonjour !</p>

<p>Tu t'appelles <?php echo $_POST['surnom']; ?> !</p>

<p>Tu veux changer de surnom, <a href="formulaire.php">clique ici</a> pour revenir sur la page formulaire.php.</p>
Problème, lorsque que je lance tout ça, réponds au formulaire, ma cible m'écris ça "Bonjour !

Tu t'appelles !

Tu veux changer de surnom, clique ici pour revenir sur la page formulaire.php." elle me donne pas le résultat à la réponse à la suite de "tu t'appelles", des idées ?

merci
Tu aurais pas oublié de te faire un environnement de travail des fois (genre installation de WampServer)? Parce-que pour que le php soit interprété il faut qu'il soit hébergé sur un serveur web gérant le php.

Là ça ressemble au résultat qu'on aurait en essayant d'accéder en local à des fichiers non hébergés. Le code php n'est tout simplement pas traité (ce qui est normal dans ce cas, il doit impérativement être interprété par un serveur dédié, contrairement au code html qui est bien géré par le navigateur comme dans ton exemple).
Merci pour vos réponses.

En effet, je n'ai pas de serveur apache, mais j'ai wampserver, vous connaissez la démarche à suivre si c'est pour wampserver, ou alors un serveur apache si c'est préférable ?

merci
Wamp contient PHP5/Apache/Mysql, c'est un package pour te simplifier la vie. Je pense que ton serveur est mal configuré du coup. A mon avis le plus simple pour toi va être de le désinstaller et retenter une installation pas à pas avec l'un des nombreux guides qu'on peut trouver sur le web.
A voir si d'autres peuvent te donner des pistes, je n'ai que rarement touché à wamp...
Après à voir, le serveur peut être bien configuré mais mal utilisé. Comment accèdes-tu à ton fichier? Dans ton navigateur, est-ce que tu as une adresse du type "localhost/formulaire.php" ou plutôt du type "file:///C:/wamp/www/formulaire.php"?

Si tu es dans le premier cas alors tu as effectivement un problème d'install et/ou de config de wampserver, dans le second cas c'est juste que tu t'y prends mal pour ouvrir ton fichier, tu dois placer ton fichier dans le répertoire "www" de ton répertoire d'installation de wampserver et y accéder directement via ton navigateur internet (et pas via un double clic sur le fichier dans l'explorateur, ce qui donnerait lieu au second type d'URL) en passant par l'adresse qui commence par "localhost".

Si tu veux placer tes fichiers dans un sous répertoire de ton répertoire "www" plutôt qu'à sa racine, tu dois juste ajouter les répertoires intermédiaires dans l'URL.
Ex : Si tu mets tes fichiers php dans le répertoire "wamp/www/testphp" ton url devient "localhost/testphp/formulaire.php".

Edit : Oui, donc tu es bien dans le second cas de figure.
Citation :
Publié par sourigsd
Edit: Ah, mes deux fichiers ne sont pas dans mon répertoire www sur wamp, c'est peut-être ça ? J'essaie!
Y a des chances ouais !
Sinon t'as le tutoriel d'openclassroom qui explique l'installation et l'utilisation.
Citation :
Publié par sourigsd
A mon avis, je ne sais juste pas l'utiliser ^^

Edit: Ah, mes deux fichiers ne sont pas dans mon répertoire www sur wamp, c'est peut-être ça ? J'essaie!
Ah oui c'est surement ça ^^
Bon bah j'ai migré mes deux fichiers sur mon répertoire www mais toujours rien :/

mes fichiers sont bien dans C:\wamp\www\ et après j'essai de les lancer via notepad++ mais toujours pas la réponse à mon questionnaire

edit: j'ai réussi !

Alors en faîtes, je lançais mes fichiers à partir de notepad++, mais j'ai essayé sur wampserver via localhost, et ça marche, je ne connaissais pas ce petit détail !

Maintenant j'aimerai savoir, si je veux mettre un formulaire en ligne et récupérer les données, c'est possible via un fichier stocké sur mon ordinateur qui stockera les réponses ? Un peu comme mon cible.php mais qui du coup me sera destiné. Sinon je pensais rediriger les réponses sur mon adresse mail.

en gros mon idée, serai de donner mon formulaire à des personnes pour qu'elles le remplissent et lorsqu'elles valident, j'ai leurs réponses.

en tout cas merci de m'avoir aidé

Dernière modification par sourigsd ; 21/07/2014 à 12h31.
Si ton formulaire est hébergé sur ton PC, oui ton fichier sera bien sur ton PC. Si tu souhaites l'héberger sur un serveur distant (ex : free, ovh ...), non (enfin si, sûrement mais trop compliqué). Ca sera donc un fichier/base de données sur le serveur distant, ou alors via mail comme tu le dis.
Initie toi aux bases de données plutôt que de t'amuser à écrire dans des fichiers.

Tu crées une base via l'url http://localhost/phpmyadmin/, ensuite tu créées une table "Personne" avec un champ prénom et/ou d'autres champs (+ un premier champ "id" unique auto-incremental qui sera la clé primaire).

Ensuite dans ta page cible du formulaire, tu fais une insertion en bdd.

Ensuite je te conseille de créer une page qui affichera la liste de tes personnes avec éventuellement la possibilité de modifier/supprimer et ton initiation sera déjà pas mal.

Sache quand même que de nos jours, on ne code plus très souvent ce genre de choses car on a des CMS type Wordpress qui font de base pas mal de choses.

Et pour ceux qui veulent des trucs plus adaptés, on a des framework php qui sont à la base de tout maintenant (symfony, cake php, ...).
Oui, je te conseille de lire des cours sur le Php / Mysql afin d'apprendre à utiliser les bases de données et requêtes SQL, surtout pour ce que tu souhaites faire.
Ce n'est pas nécessairement simple à comprendre au début mais il y a pas mal de tutoriaux (qui peuvent t'amener à comprendre la logique) et de cours gratuits sur le net.
Rebonjour à tous.

Merci pour vos réponses, notamment @n3o-.

J'ai plus d'une trentaine de champ maintenant dans mon "formulaire.php" et je n'aurai pas le temps de me consacrer à une bdd dans un premier temps je pense.

Je vais rester sur l'idée de l'envoi par mail dans un premier temps, un minimum, mais merci pour vos conseils.

Sinon j'ai une question, je voudrais que mon formulaire ne puisse être validé que si certains champs sont remplis, malheureument, j'ai beau mettre des required, ça ne change rien, on peut toujours validé le formulaire en ayant rien répondu, un exemple de ce que je fais :
Code PHP:

<p>Effectif:</p>
<
p><input type="text" name="Effectif" required /></p
C'est bien ce qu'il faut écrire non ? Mon required reste noir et ne marche pas, je comprends pas.
L'avantage d'une BDD, c'est que tu peux faire des requêtes SQL qui vont communiquer avec les tables et donc tes données.

Notamment pour les champs de formulaires. Dans ce cas précis où tu souhaites que tes champs soient impérativement remplis par l'utilisateur, tu pourras utiliser:

Code:
if(empty($_POST['nom'))
{
echo "champ à remplir";
}
Cela obligera la personne à mettre une info dans ton champ.
Citation :
Publié par sourigsd
Code PHP:

<p>Effectif:</p>
<
p><input type="text" name="Effectif" required /></p
C'est bien ce qu'il faut écrire non ? Mon required reste noir et ne marche pas, je comprends pas.
T'utilises quel navigateur pour tester ? C'est pas compatible IE9 et Safari à priori. Si tu veux faire des tests en live et comparer avec ton code : http://www.w3schools.com/tags/tryit....input_required

Et la doc qui va avec.
J'ai trouvé, à la fin de mon fichier, j'ai réorganisé mes fins de balises (form, table, body, html) elles étaient apparemment mal ordonnés et du coup, il me faisait des caprices, là j'ai fait un truc un peu plus propre et ça marche, 1h perdu sur ça

Comme toujours merci pour votre réactivé
Ah et petite question au passage, est ce embêtant d'avoir plusieurs name avec le même nom ? Par exemple j'ai plusieurs name="courriel" ou name="nom", quand je demanderai à ma cible.php de mes les afficher ou enregistrer celà ne posera pas de problème ? Je peux même gagner du temps non ?
Citation :
Publié par sourigsd
@Lilva, donc ton code se met dans un MYSQL pour communiquer avec une bdd ?

@LordYu, je suis sous Chrome dans un fichier en .php avec les balises html si tu veux tout savoir
Le code que Lilva indique se fait dans du php, avant de préparer ta requête pour l'insertion. En gros :

1. L'utilisateur valide le formulaire
2. Tu vérifies qu'il a renseigné le(s) champ(s) avec le code de Lilva
3. Si les champs sont bons, tu créé ta requête
Si les champs ne sont pas bons, tu informes l'utilisateur

Et avoir plusieurs name, tu peux suivre cette idée, je sais pas trop si c'est une bonne pratique ou non cela dit : Stackoverflow
J'ai deux fichiers php, mon formulaire et ma cible, j'ai mis le code de Lilva dans la cible avec les balises php, mais j'ai un page blanche quand je retourne le formulaire, le message contenu dans "echo" n'apparaît pas.

Mais le résultat est le même au final de toute façon ? Si il manque un champ, petit message d'erreur ?
Citation :
Publié par sourigsd
J'ai deux fichiers php, mon formulaire et ma cible, j'ai mis le code de Lilva dans la cible avec les balises php, mais j'ai un page blanche quand je retourne le formulaire, le message contenu dans "echo" n'apparaît pas.

Mais le résultat est le même au final de toute façon ? Si il manque un champ, petit message d'erreur ?
Le fait de préciser le champs required, il me semble que c'est une spécificité HTML5. Du coup, sur Safari par exemple, il ne sera pas utilisé. Sur Chrome, tu devrais avoir le champs qui se surligne ou quelque chose du style qui indique qu'il doit être renseigné.

Pour le bout de code php :
Code:
if(empty($_POST['nom'))
{
   echo "champ à remplir";
}
else
{
  echo "Enregistrement effectué";
}
Ça te permet de garder un oeil par où tu passes dans ton code, qui à virer le else quand tu en a plus besoin.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés