bonsoir a tous

Ce que je fais

je suis en train de suivre un tuto
https://www.youtube.com/watch?v=J3nfLrxsmro
apres avoir cree la table et la base
je rentre ce morceau de formulaire

<body>
<h1>ajouter un contact</h1>

<form action="insert.php" method="post">

<p>
<label for="nom">nom</label>
<input id="nom" type="text" name="firsName">
</p>

<p>
<label for="prenom">prenom</label>
<input id="prenom" type="text" name="LastName">
</p>

<p>
<label for="tel">telephone</label>
<input id="tel" type="text" name="phone">
</p>

<p>
<label for="mel">mail</label>
<input id="mel" type="email" name="mail">
</p>

<p><input type="submit" value="Enregistrer">
</p>

</form >
</body>

l auteur
ecris ce morceau de code dans un fichier php

<?php 

var_dump($post);

Ce que je veux

je souhaiterais pouvoir obtenir le contenu des infos que je rentre lorsque je lance le fichier
index.php
et que je clique sur enregistrer

Ce que j'obtiens

Not Found
The requested URL was not found on this server.

Apache/2.4.46 (Win64) PHP/7.3.21 Server at localhost Port 80

comment ca ce fait
je suis en local

13 réponses


Hello,

Sur ton formulaire tu indique l'attribut action qui est : action="insert.php" avec l'attribut method="post".
Cela signifie que tu souhaite accèder à ton fichier insert.php via une requête post.

As-tu vérifier que le fichier insert.php existe et qu'il y a bien du code à l'interieur de celui-ci ?

Bonjour.
En plus de ce que dit DarkenNights, je pense que c'est plutôt :

<?php
var_dump($_POST);

Au lieu de :

<?php
var_dump($post);

Merci pour l aide
des fois je me demande si mes yeux sont bien ouvert ...
donc le soucis resolu et nouvel apprentissage
pour l instant j utilise notepad++
mais existe t il un outil plus evolue

Tu peux par exemple utiliser Visual Studio Code.

voila enfin j ai reussi pour la premiere fois a injecter des donnees via un formulaire dans une base de donnee

voici le code

<?php

$objetPdo = new PDO('mysql:host=localhost;dbname=agenda','root','');

// preparation de la requete d insertion

$pdoStat =$objetPdo -> prepare('INSERT INTO contact Values(NULL,:nom,:prenom, :tel,:mel)');

// on lie chaque marqueur a une valeur

$pdoStat->bindValue(':nom',$_POST['firsName'],PDO::PARAM_STR);
$pdoStat->bindValue(':prenom',$_POST['LastName'],PDO::PARAM_STR);
$pdoStat->bindValue(':tel',$_POST['phone'],PDO::PARAM_STR);
$pdoStat->bindValue(':mel',$_POST['mail'],PDO::PARAM_STR);

// execution de la requete preparee

$insertIsok=$pdoStat->execute();

if($insertIsok){
    $message ='le contact a ete ajoute dans la bdd';
    }
    else{
    $message ='echec de l insertion';   

    }
?>
<!doctype html>
<html lang="fr">
<head>
<body>
<meta charset ="UTF-8">
<meta name="viewport "
content="width=device-width , user-scalable=no ,initial-scale=1.0,maximum-scale=1.0 minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title> document</title>
</head>
<h1>insertion des contact</h1>
<p><?php echo $message;?></p>
</body>
</html>

Mais a present comment inserer une checkbox dans ma base de donnee , tout en sachant que l utilisateur peux coisir plsuieurs choix ?

merci de l aide

je dois faire ceci ?

$pdoStat->bindValue(':nom',$_POST['firsName'],PDO::PARAM_STR);
$pdoStat->bindValue(':prenom',$_POST['LastName'],PDO::PARAM_STR);
$pdoStat->bindValue(':tel',$_POST['phone'],PDO::PARAM_STR);
$pdoStat->bindValue(':mel',$_POST['mail'],PDO::PARAM_STR);
$pdoStat->bindValue(':vehicle1',$_POST['vehicle1'],PDO::PARAM_STR);
$pdoStat->bindValue(':vehicle2',$_POST['vehicle2'],PDO::PARAM_STR);
$pdoStat->bindValue(':vehicle3',$_POST['vehicle3'],PDO::PARAM_STR);

voici le code html que j ai modifie

<body>
<h1>ajouter un contact</h1>

<form action="insertion.php" method="post">

<p>
<label for="nom">nom</label>
<input id="nom" type="text" name="firsName">
</p>

<p>
<label for="prenom">prenom</label>
<input id="prenom" type="text" name="LastName">
</p>

<p>
<label for="tel">telephone</label>
<input id="tel" type="text" name="phone">
</p>

<p>
<label for="mel">mail</label>
<input id="mel" type="email" name="mail">
</p>
<label for="cars">Choose a car:</label>

 <input type="checkbox" id="vehicle1" name="vehicle1" value="Bike">
  <label for="vehicle1"> I have a bike</label><br>
  <input type="checkbox" id="vehicle2" name="vehicle2" value="Car">
  <label for="vehicle2"> I have a car</label><br>
  <input type="checkbox" id="vehicle3" name="vehicle3" value="Boat">
  <label for="vehicle3"> I have a boat</label><br><br>
<p><input type="submit" value="Enregistrer">
</p>

</form >
</body>

merci de l aide

salut,
en ce qui concerne var_dump il faut plutot utiliser de la maniere suuvant :
var_dump($_POST) pour voir tous ceux qui sont envoyé dans la variable POST

Quand tu récupère via ta variable POST la valeur de ta checkbox, tu récupère en réalité un tableau.
A toi ensuite de le traiter et de le mettre dans ta base !
Par exemple, tu peux faire une nouvelle colonne dans ta base dans laquelle tu y met un string qui sera la concaténation de tous les choix de l'utilisateur séparé par des virgules.
Tu peux ensuite récupérer depuis ta base cette colonne et si besoin recréer un tableau à partir de ce string grâce à la fonction explode() de PHP.

J'espère que c'est claire :)

en ce qui concerne le checkbox j'esperes il faut utiliser un seul name en mettant de crochet [] mais avec de differentes value
ex : name = " level [] " value=" html"
name =" level " value = " css "

Est-ce qu'il y a une question dans ta réponse ?

Si non, je t'invite à clôturer ton post :)

bonsoir
desole j avais aps vu les messages
je reviens demain
merci pour les reponses

merci pour l aide

donc je dois remplacer

<input type="checkbox" id="vehicle1" name="vehicle1" value="Bike">
<label for="vehicle1"> I have a bike</label><br>

par ceci
<input type="checkbox" id="vehicle []" name="vehicle []" value="Bike">
<label for="vehicle []"> I have a bike</label><br

Salut,

Désolé pour mon précédent message, j'ai confondu Rabby avec toi initiateur du sujet :)

Pour te répondre pas tout à fait !

<input type="checkbox" id="vehicleBike" name="vehicle[]" value="Bike">
<label for="vehicleBike"> I have a bike</label><br>
<input type="checkbox" id="vehicleCar" name="vehicle[]" value="Car">
<label for="vehicleCar"> I have a car</label><br>

Ton attribut name doit avoir les crochets alors que pour l'id et le for de ton label non ce doit être autre chose.

Essaye avant de demander si c'est bien ça de tester ton code. Ca te permet de visualiser les éventuelle erreurs :)

salut flexi22 seulement le name qui doit doit contenir le crochet pas le id et for darkenNight a eclaircit ça