PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 05-04-2019 14:51:13

filabala321
Membre
Inscription : 02-12-2017
Messages : 9

Envoi d'un formulaire dans une base de données

Bonjour. je bloque sur un problème que je pense de PHP et je voudrais demander votre aide.
je développe en local avec Wamp serveur et j'ai un formulaire qui après remplissage doit a travers un fichier php envoyer des information a ma base de données. Seulement lorsque je soumet le formulaire, j'ai ce message d'erreur que je n'arrive pas a passer. ci joint mes codes. Merci de m'aider

Ma page html

<html>
<body>

<form action="insertion.php" method="post">
Nom: <input type="text" name="Nom"><br>
Prenom: <input type="text" name="Prenom"><br>
CNIB: <input type="text" name="CNIB"><br>
Tel 1: <input type="text" name="TEL1"><br>
Tel 2: <input type="text" name="TEL2"><br>
<label>
  <input type="submit"/>
<label/>
</form>

</body>
</html>

Mon fichier de traitement php

<?php
//connexion
include('connexion.php');
//print_r($_FILES);
if( isset($_POST['Valider']) ) // si formulaire soumis

 
$text_rep= $_POST['Nom'];
$text_rep= $_POST['Prenom'];
$text_rep= $_POST['CNIB'];
$text_rep= $_POST['TEL1'];
$text_rep= $_POST['TEL2'];
$requete = "INSERT INTO `formulaire` (`id`, `nom`, `prenom`, `cnib`, `tel1`, `tel2`)
      VALUES(NULL,'$nom','$prenom','$cnib','$tel1','$tel2');";
 $resultat= $bdd-> exec($requete);
if($resultat==1) { echo'les information ont bien été enregistrer';
}else {
echo ' ohlala ...problème';
}


?>

et là le message d’erreur qui  revient

Notice: Undefined variable: nom in C:\wamp64\www\projet\insertion.php on line 14
Notice: Undefined variable: prenom in C:\wamp64\www\projet\insertion.php on line 14
Notice: Undefined variable: cnib in C:\wamp64\www\projet\insertion.php on line 14
Notice: Undefined variable: tel1 in C:\wamp64\www\projet\insertion.php on line 14
Notice: Undefined variable: tel2 in C:\wamp64\www\projet\insertion.php on line 14
les information ont bien été enregistrer


la fameuse ligne 14 est la suivante

VALUES(NULL,'$nom','$prenom','$cnib','$tel1','$tel2');";

je précise qu’après verification, il s'averse que le "id" et la "date" sont bel et bien prient a chaque fois mais pas les autres informations.

Dernière modification par filabala321 (05-04-2019 14:53:35)


Hors ligne

#2 05-04-2019 22:50:13

tof73
Membre
Inscription : 21-12-2014
Messages : 145
Site Web

Re : Envoi d'un formulaire dans une base de données

$text_rep= $_POST['Nom'];

il est donc mis le nom dans la variable $text_rep, variable qui n'est pas utilisée ensuite.

$text_rep= $_POST['Prenom'];

il est donc mis le prenom dans la variable $text_rep, variable qui n'est pas utilisée ensuite.

...

Hors ligne

#3 07-04-2019 03:32:59

KOogar
Membre
Lieu : PHP
Inscription : 09-05-2009
Messages : 27
Site Web

Re : Envoi d'un formulaire dans une base de données

Bonjour,

Je t'ai refais le code vite fait, si tu as des questions hésites pas.

<?php

    $nom = $_POST['Nom'];
    $prenom = $_POST['Prenom'];
    $cnib = $_POST['CNIB'];
    $tel1 = $_POST['TEL1'];
    $tel2 = $_POST['TEL2'];

    $requete = "INSERT INTO `formulaire` (`id`,
                                          `nom`,
                                          `prenom`,
                                          `cnib`,
                                          `tel1`,
                                          `tel2`)
                       VALUES(NULL,
                             '$nom',
                             '$prenom',
                             '$cnib',
                             '$tel1',
                             '$tel2');";

    $resultat= $bdd-> exec($requete);

    if($resultat==1) echo'les information ont bien été enregistrer';
    else echo ' ohlala ...problème';


?>

Hors ligne

#4 11-04-2019 18:25:11

filabala321
Membre
Inscription : 02-12-2017
Messages : 9

Re : Envoi d'un formulaire dans une base de données

Merci énormément Tof73 & KOogar! Vous m'avez été d'un grand secourt. Grace à vous j'ai compris et corriger l'erreur.

Je vous demande une dernière chose, que veut dire ce message

Fatal error: Uncaught Error: Call to undefined function mysql_query() in C:\wamp64\www\projet\modifier.php on line 27
( ! ) Error: Call to undefined function mysql_query() in C:\wamp64\www\projet\modifier.php on line 27

voici le code cette fameuse ligne :

mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

et maintenant le code entier

<?php
//connexion
include('connexion.php');

if(isset($_POST['Bouton']))
   // Réecriture des variables
   $Lun=$_POST['lun'];
   $Mar=$_POST['mar'];
   $Mer=$_POST['mer'];
   $Jeu=$_POST['jeu'];
   $Ven=$_POST['ven'];
   $Sam=$_POST['sam'];
   $Dim=$_POST['dim'];
   
   // lancement de la requête de modification d'enregistrement
   $sql ="UPDATE formulaire SET
   lun='$Lun',
   mar='$Mar',
   mer='$Mer',
   jeu='$Jeu',
   ven='$Ven',
   sam='$Sam',
   dim='$Dim' ";

   
 // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
?>

Hors ligne

#5 11-04-2019 19:15:57

tof73
Membre
Inscription : 21-12-2014
Messages : 145
Site Web

Re : Envoi d'un formulaire dans une base de données

https://www.php.net/manual/fr/function.mysql-query.php
"Cette extension était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0"
j'en conclus que vous êtes en php 7

Hors ligne

#6 12-04-2019 19:54:44

filabala321
Membre
Inscription : 02-12-2017
Messages : 9

Re : Envoi d'un formulaire dans une base de données

effectivement je suis sur php7.1.9 Si donc le problème venait de cette extension, j'ai refais mon code sous mysqli (selon ton lien) et j'ai obtenu ce résultat. Mais il ne marche pas. j’obtiens cette erreur :

Parse error: syntax error, unexpected '$mysqli' (T_VARIABLE) in C:\wamp64\www\projet\modifier.php on line 27  (je signale que c'est la dernière ligne de mon code)

je vous met ici le code entier (celui refait sous msqli)

<?php
//connexion
include('connexion.php');

if(isset($_POST['Bouton']))
   // Réecriture des variables
   $_POST['lun'];
   $_POST['mar'];
   $_POST['mer'];
   $_POST['jeu'];
   $_POST['ven'];
   $_POST['sam'];
   $_POST['dim'];
   
   // lancement de la requête de modification d'enregistrement
   $requete='UPDATE formulaire SET
   lun="'.$_POST['Lun'].'",
   lun="'.$_POST['Lun'].'",
   lun="'.$_POST['Lun'].'",
   lun="'.$_POST['Lun'].'",
   lun="'.$_POST['Lun'].'",
   lun="'.$_POST['Lun'].'",
   lun="'.$_POST['Lun'].'" '

   
 // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
$mysqli->query($requete);

?>

Hors ligne

#7 12-04-2019 20:25:16

KOogar
Membre
Lieu : PHP
Inscription : 09-05-2009
Messages : 27
Site Web

Re : Envoi d'un formulaire dans une base de données

et que contient votre fichier connexion.php ?

Hors ligne

#8 15-04-2019 08:41:48

filabala321
Membre
Inscription : 02-12-2017
Messages : 9

Re : Envoi d'un formulaire dans une base de données

Bonjour. Merci pour l'aide. Avec une tête un peu reposée j'ai finalement trouver les erreurs (syntaxique d'abord, de structure ensuite et enfin de choix). Il me fallait compléter les différents jours de la semaine, rajouter un semi-colon à la fin de la dernière ligne de la requête (ce qui donne: dim="'.$_POST['Dim'].'" ';) pour boucle celle-ci et enfin utilise PDO pour l’exécution de la requête.

Par contre j'ai (encore big_smile) un nouveau soucis: <<Undefined index:>> que je ne comprends pas jusque là. Un coup de pouce serait salutaire. Merci!

Pour que vous puissiez m'aider en ayant une vision claire du projet, je vous met tous les codes avec captures d'écrans. Merci d'avance et désoler de vous prendre la tête big_smile

01 - La page index (formulaire)

<?php
$currentWeekNumber = date('W');
echo "Nous sommes à la semaine N°" . date("W") . " de l'année ". date("Y") ."";
?>

<!DOCTYPE html>
<html>

<head>
  <title>formulaire-journalier</title>
 
</head>

<body>

<form action="insertion.php" method="post">
Nom:  <input type="text" name="Nom"><br>
Prenom: <input type="text" name="Prenom"><br>
CNIB:   <input type="text" name="CNIB"><br>
Tel 1:  <input type="text" name="Tel1"><br>
Tel 2:  <input type="text" name="Tel2"><br>
<label>
  <input type="submit"/>
  <input type="reset" value="Reinitialiser"><br>
  <a href="affiche.php"> <input type="button" value="Voir la liste des inscrits"></a>
  <a href="pointer.php"> <input type="button" value="pointer"></a>
</label>
</form><br>

</body>

</html>

1k0.jpg

02- La page connection

<?php


try {
    $bdd = new PDO("mysql:host=localhost;dbname=bdd_journaliers;charset=utf8", "root",
        "", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));  
}
catch (Exception $e) {
    die('Erreur fatale : ' . $e->getMessage());
}


?>

03 - La page insertion

<?php
//connexion
include('connexion.php');

if( isset($_POST['Valider']) ) // si formulaire soumis

// recuperons à présent les infos entrees dans le formulaire
$Date= $_POST[''];  // il faut rajouter cette 6ème ligne pour equilibrer avec le nombre de collone dans la table (bdd)
$Nom= $_POST['Nom'];
$Prenom= $_POST['Prenom'];
$CNIB= $_POST['CNIB'];
$Tel1= $_POST['Tel1'];
$Tel2= $_POST['Tel2'];

// Envoyons maintenant ses infos dans la bdd
$requete = "INSERT INTO `formulaire` (`id`, `nom`, `prenom`, `cnib`, `tel1`, `tel2`, `lun`, `mar`, `mer`, `jeu`, `ven`, `sam`, `dim`)
              VALUES(NULL,'$Nom','$Prenom','$CNIB','$Tel1','$Tel2','0','0','0','0','0','0','0');"; // Les "names" dans le formulaire
 $resultat= $bdd-> exec($requete);
if($resultat==1) { echo'le journalier a bien été enregistrer';
}else {
echo ' ohlala ...problème';

 } // Le code php se termine ici. a present mettons un boutton pour repartir a la page formulaire

 ?> <br/>
 
 
 <!DOCTYPE html>
<html>
<body>
  <a href="formulaire-journalier.php"> <input type="button" value="Inscrir un nouveau journalier"> </a>
</body>
</html>

Une image de la page insertion:
1k0.jpg

04 - La page affiche

<!DOCTYPE html>

<html>
<head>
  <title>affiche</title>
 
</head>

<body>

 
<a href="Formulaire-journalier.php"> <input type="button" value="Inscrir un nouveau journalier"> </a>

<table>
    <thead>
        <th>Nom </th>
        <th>Prenom </th>
    <th>CNIB </th>
    <th>Lun </th>
    <th>Mar </th>
    <th>Mer </th>
    <th>Jeu </th>
    <th>Ven </th>
    <th>Sam </th>
    <th>Dim </th>
    <th>Salaire hebdomadaire</th>
      </tr>
    </thead>
 
    <body>
  <?php
//tjrs :on commence par inclure le fichier connexion
include('connexion.php');
// écrire la requete de la lecture de la table formulaire
 $reponse = $bdd->query('SELECT * FROM formulaire WHERE YEARWEEK(date)=YEARWEEK(NOW());');
//executer la requête à l'aide de la fonction exec et mettre le resultat dans $resultat
while ($donnees = $reponse->fetch())
//lecture des tiroirs de l'armoire $resultat à l'aide de la fonction foreach
{
// mettre ds une ligne
echo '<th>'.$donnees['nom'].'</th>  <td>'.$donnees['prenom'].'</td>  <td>'.$donnees['cnib'].'</td>  <td>'.$donnees['lun'].'</td>  <td>'.$donnees['mar'].'</td>  <td>'.$donnees['mer'].'</td>  <td>'.$donnees['jeu'].'</td>  <td>'.$donnees['ven'].'</td>  <td>'.$donnees['sam'].'</td>  <td>'.$donnees['dim'].'</td>  </tr>';
}

?>
    </tbody>
  </table>
 

</div><!-- /page -->

</body>


</html>

Une image de la page affiche:
1k0.jpg

05 - La page pointer

<!DOCTYPE html>

<html>
<head>
  <title>affiche</title>
 
</head>

 
<a href="Formulaire-journalier.php"> <input type="button" value="Inscrir un nouveau journalier"> </a>

<form action="modifier.php" method="post">
<table>
    <thead>
        <th>Nom </th>
        <th>Prenom </th>
    <th>CNIB </th>
    <th>Lun </th>
    <th>Mar </th>
    <th>Mer </th>
    <th>Jeu </th>
    <th>Ven </th>
    <th>Sam </th>
    <th>Dim </th>
      </tr>
    </thead>
 
    <body>
  <?php
//tjrs :on commence par inclure le fichier connexion
include('connexion.php');
// écrire la requete de la lecture de la table formulaire
 $reponse = $bdd->query('SELECT * FROM formulaire WHERE YEARWEEK(date)=YEARWEEK(NOW());');
//executer la requête à l'aide de la fonction exec et mettre le resultat dans $resultat
while ($donnees = $reponse->fetch())
//lecture des tiroirs de l'armoire $resultat à l'aide de la fonction foreach
{
// mettre ds une ligne
echo '<th>'.$donnees['nom'].'</th>  <td>'.$donnees['prenom'].'</td>  <td>'.$donnees['cnib'].'</td>  <td>'.$Lun='<SELECT name="lun" size="0.3"><OPTION>0<OPTION>2000<OPTION>3000</SELECT>'.'</td>  
                                                  <td>'.$Mar='<SELECT name="mar" size="0.3"><OPTION>0<OPTION>2000<OPTION>3000</SELECT>'.'</td>
                                                  <td>'.$Mer='<SELECT name="mer" size="0.3"><OPTION>0<OPTION>2000<OPTION>3000</SELECT>'.'</td>
                                                  <td>'.$Jeu='<SELECT name="jeu" size="0.3"><OPTION>0<OPTION>2000<OPTION>3000</SELECT>'.'</td>
                                                  <td>'.$Ven='<SELECT name="ven" size="0.3"><OPTION>0<OPTION>2000<OPTION>3000</SELECT>'.'</td>
                                                  <td>'.$Sam='<SELECT name="sam" size="0.3"><OPTION>0<OPTION>2000<OPTION>3000</SELECT>'.'</td>
                                                  <td>'.$Dim='<SELECT name="dim" size="0.3"><OPTION>0<OPTION>2000<OPTION>3000</SELECT>'.'</td>
                                                 
                                                  </tr>';
}

?>

    </body>
  </table>
  <input type="submit" name="Bouton" value="Pointer">
  </form>
 

</div><!-- /page -->

</body>


</html>

Une image de la page pointer:
1k0.jpg

06 - La page modifier (la fameuse page problématique big_smile)

<?php
//connexion
include('connexion.php');

if(isset($_POST['Bouton']))
   // Réecriture des variables
   $_POST['lun'];
   $_POST['mar'];
   $_POST['mer'];
   $_POST['jeu'];
   $_POST['ven'];
   $_POST['sam'];
   $_POST['dim'];
   
   // lancement de la requête de modification d'enregistrement
   $requete='UPDATE formulaire SET
   id="",
   nom="",
   prenom="",
   cnib="",
   tel1="",
   tel2="",
   date="",
   lun="'.$_POST['Lun'].'",
   mar="'.$_POST['Mar'].'",
   mer="'.$_POST['Mer'].'",
   jeu="'.$_POST['Jeu'].'",
   ven="'.$_POST['Ven'].'",
   sam="'.$_POST['Sam'].'",
   dim="'.$_POST['Dim'].'" ';

$resultat= $bdd-> exec($requete);
if($resultat==1) { echo'Pointage effectuer';
}else {
echo ' ohlala ...problème';
}

?>

07 - Une image du message d'erreur:
1k0.jpg

Pour finir je signale que absolument tout marche là maintenant sauf cette dernière étape pour modifier les données de la bdd. Merci de m'aider!

Dernière modification par filabala321 (15-04-2019 12:35:01)

Hors ligne

#9 15-04-2019 14:50:22

tof73
Membre
Inscription : 21-12-2014
Messages : 145
Site Web

Re : Envoi d'un formulaire dans une base de données

$_POST['lun'];
   $_POST['mar'];
   $_POST['mer'];
   $_POST['jeu'];
   $_POST['ven'];
   $_POST['sam'];
   $_POST['dim'];
cela ne sert à rien

<SELECT name="lun" size="0.3">
lun="'.$_POST['Lun'].'",
le message d'erreur est normal vu qu'il n'y a pas de champ avec Lun comme nom.

pour pouvoir faire un update d'un enregistrement de la table, il faut que le formulaire passe l'id, souvent dans un input hidden. là, le champ id vaut ''.

Hors ligne

#10 15-04-2019 16:10:17

filabala321
Membre
Inscription : 02-12-2017
Messages : 9

Re : Envoi d'un formulaire dans une base de données

Merci bien @tof73. Je doutais un peu également quant-à la nécessité des $_POST[' '];

Si je te comprend donc,
1) je retire ses $_POST[' '];
2)Dans le code de "pointer.php" il me faut définir des champs qui correspondraient a mes cases à sélectionné et qui par la même occasion devraient avoir pour nom (name=) les dénomination correspondantes a mes colonnes lun, mar,mer etc dans ma bdd.

pour la dernière partie de ton commentaire j'avoue ne pas très bien suivre mais je vais de ce pas check comme disent certains.

Hors ligne

#11 Hier 17:28:18

filabala321
Membre
Inscription : 02-12-2017
Messages : 9

Re : Envoi d'un formulaire dans une base de données

Bonjour, merci pour l'aide que vous m'avez apporter. je progresse très bien dans mon projet. J'ai finalement réussi à "Update" ma bdd. Il s'avérait effectivement que le problème venait de la définition de mes variables. après correction voici ce que j'obtiens comme code:

<?php
//connexion
include('connexion.php');

if(isset($_POST['Bouton']))
{ // recuperons à présent les infos entrees dans le formulaire
  $lun= $_POST['lun'];
  $mar= $_POST['mar'];
  $mer= $_POST['mer'];
  $jeu= $_POST['jeu'];
  $ven= $_POST['ven'];
  $sam= $_POST['sam'];
  $dim= $_POST['dim'];
   // lancement de la requête de modification d'enregistrement
   $requete="UPDATE formulaire SET
   lun=".$lun.",
   mar=".$mar.",
   mer=".$mer.",
   jeu=".$jeu.",
   ven=".$ven.",
   sam=".$sam.",
   dim=".$dim."; ";
}

$resultat= $bdd-> exec($requete);
echo $requete;
if($resultat==1){ echo'Pointage effectuer';}
else{echo ' ohlala ...problème';}

?>

Un aperçu du code:
1k0.jpg

Cependant je rencontre de nouvelles difficultés et j'espère que vous m'aidiez toujours comme jusqu'à présent.

En effet: je ne peut pointer que le dernier inscrit de ma bdd, et lorsque je pointe celui-ci pour un jour donné, tous les autres jours de la semaine prennent systématiquement la valeur ''0''. Pire, lorsque je pointe ce dernier, tous les autres inscrits (toutes les lignes de ma table) sont aussi pointer pour ce jour.
Voici un aperçu de ma bdd après que j'ai pointer la valeur ''3000'' à l'inscrit nommé ''mardi impricolor'' pour le jour de Lundi.
1k0.jpg

Je suis dérouté et j'ai vraiment besoin d'aide. Merci d'avance!

Hors ligne

#12 Hier 19:58:56

tof73
Membre
Inscription : 21-12-2014
Messages : 145
Site Web

Re : Envoi d'un formulaire dans une base de données

qu'est-ce qu'affiche le echo $requete; ?

je disais :
"pour pouvoir faire un update d'un enregistrement de la table, il faut que le formulaire passe l'id, souvent dans un input hidden. là, le champ id vaut ''."
je développe :
"pour pouvoir faire un update d'un enregistrement de la table (et d'un seul), il faut que le formulaire passe l'id, souvent dans un input hidden. là, le champ id vaut ''."

Hors ligne

Pied de page des forums