Notice: Undefined index: titre in C:\wamp64\...
Tiween
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
Je viens vers vous dans le cadre de la création d'un formulaire, visant à collecter des données en conformité RGPD.
Pour créer un ce formulaire, j'ai utilisé un code qui fonctionne, mais qui permettait de traiter le listage, les ajouts, les modifications et la suppression sur une seule page via la fonction switch.
Dans le cas présent, je dois juste récolter les données, pas de modif, ni listage ou autre.
Le développement n'étant pas mon activité professionnelle principale, j'avoue être souvent perdue lorsque je dois m'y remettre.
Vous trouverez donc ci-dessous le codes que j'ai adapté, mais j'ai le message suivant qui apparait lors de la visualisation :
Notice: Undefined index: titre in C:\wamp64\www\cdos\autorisation2.php on line 123
Je précise que j'ai effectué déjà plusieurs recherche et verifier l'orthagraphe... avant de vous écrire.
Vous remerciant d'avance pour votre aide,
Cordialement,
Laetitia
Je viens vers vous dans le cadre de la création d'un formulaire, visant à collecter des données en conformité RGPD.
Pour créer un ce formulaire, j'ai utilisé un code qui fonctionne, mais qui permettait de traiter le listage, les ajouts, les modifications et la suppression sur une seule page via la fonction switch.
Dans le cas présent, je dois juste récolter les données, pas de modif, ni listage ou autre.
Le développement n'étant pas mon activité professionnelle principale, j'avoue être souvent perdue lorsque je dois m'y remettre.
Vous trouverez donc ci-dessous le codes que j'ai adapté, mais j'ai le message suivant qui apparait lors de la visualisation :
Notice: Undefined index: titre in C:\wamp64\www\cdos\autorisation2.php on line 123
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>autorisation de collecte de données</title>
<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" />
<!--<link rel="icon" type="image/jpg" href="images/favicon.jpg">-->
<link href="css/reset.css" rel="stylesheet" type="text/css" />
<link href="css/menu.css" rel="stylesheet" type="text/css" />
<link href="css/design.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="lib/bootstrap-4.1.1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0">
<script src="lib/jquery/jquery-3.3.1.min.js"></script>
<script src="lib/bootstrap-4.1.1/dist/js/bootstrap.bundle.min.js"></script>
<script src="js/lightbox.js"></script>
</head>
<body>
<?php
session_start();
include_once("analyticstracking.php")
?>
<div id="contains">
<?php include("include/inc_header.php"); ?>
<?php include("include/bdd.inc.php"); ?>
<?php include("include/inc_search.php"); ?>
<?php include("include/inc_menu.php"); ?>
<div id="page" class="bor_general">
<div id="corps">
<div id="tit_corps">
<h2 class="gen">AUTORISATION DE COLLECTE DE DONNEES</h2>
<div class="clear"></div>
</div>
<div id="form_contact">
<div id="adresse">
<h4>CONDITIONS D'UTILISATION DE VOS DONNEES PERSONNELLES</h4>
<p class="contact">En complétant ce formulaire, vous acceptez que le Comité Départemental Olympique et Sportif de Seine-Saint-Denis (CDOS 93) mémorise et utilise vos données pendant 1 an dans le but de répondre à vos demandes.</p>
<p class="contact">En l’occurence, vous autorisez le CDOS 93 à communiquer avec vous s’il le juge opportun afin de vous apporter des informations sur son actualité ou vous proposez des services susceptibles de vous intéresser.</p>
<p class="contact">Afin de protéger la confidentialité de vos données personnelles, le CDOS 93 s’engage à ne pas divulguer, ne pas transmettre, ni partager vos données personnelles avec d’autres entités, entreprises ou organismes, quels qu’ils soient.</p>
<p class="contact">Vous pouvez accéder aux données vous concernant, les rectifier, demander leur effacement ou exercer votre droit à la limitation du traitement de vos données.
Vous pouvez retirer à tout moment votre consentement au traitement de vos données.</p>
<p class="contact">Pour exercer ces droits ou pour toute question sur le traitement de vos données dans ce dispositif, vous pouvez contacter <a href="mailto:oriane.odin@cdos93.org"><u><b>oriane.odin@cdos93.org</b></u></a>.</p>
<p class="contact">En cochant la case ci-après, vous donnez votre consentement au traitement de vos données personnelles par le CDOS 93, conformément au réglement général sur la protection des données (RGPD) et à notre politique de protection des données.
</p>
</div>
<?php
if (isset($_GET["action"])) {
$action <> $_GET["action"]; # code...
} else {
$action = "ajouter";
if (empty($_POST["validation"])) {
?>
<form method="post" action="autorisation2.php?action=ajouter" enctype="multipart/form-data">
<input type="hidden" name="validation" value="ok">
<div class="form-group">
<div class="form-group form-inline">
<label for="titre">Titre </label>
<input type="text" class="form-control" name="titre" id="titre" placeholder="nom du fichier" required>
</div>
<div class="form-group form-inline">
<label for="titre">Prénom </label>
<input type="text" class="form-control" name="prenom" id="prenom" placeholder="nom du fichier" required>
</div>
<div class="form-group form-inline">
<label for="titre">Nom </label>
<input type="text" class="form-control" name="nom" id="nom" placeholder="nom du fichier" required>
</div>
<div class="form-group form-inline">
<label for="titre">Structure </label>
<input type="text" class="form-control" name="structure" id="structure" placeholder="nom du fichier" required>
</div>
<div class="form-group form-inline">
<label for="titre">Fonction </label>
<input type="text" class="form-control" name="fonction" id="fonction" placeholder="nom du fichier" required>
</div>
<div class="form-group form-inline">
<label for="titre">Mail </label>
<input type="text" class="form-control" name="mail" id="mail" placeholder="nom du fichier" required>
</div>
<div class="form-group form-inline">
<label for="titre">Tel </label>
<input type="text" class="form-control" name="tel" id="tel" placeholder="nom du fichier" required>
</div>
<div class="form-check form-check-inline">
<label for="etat">en cochant cette case, je donne mon consentement </label>
<select name="etat" id="etat">
<option value="0">Inactif</option>
<option value="1">Actif</option>
</select>
</div>
<div class="form-group form-inline">
<label for="date">le </label>
<input type="text" class="form-control" id="date" name="date" required readonly>
<script>
$("#date").datepicker();
$("#date").datepicker("option", "dateFormat", "yy-mm-dd");
</script>
</div>
<input class="btn btn-primary" type="submit" value="AUTORISER">
</form>
<?php
}
$bdd->beginTransaction();
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$requete = "INSERT INTO `contacts` (`titre`, `prenom`, `nom`, `structure`, `fonction`, `mail`, `telephone`, `etat`, `date`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
$reponse = $bdd->prepare($requete);
$reponse->execute(array($_POST['titre'], $_POST['prenom'], $_POST['nom'], $_POST['structure'], $_POST['fonction'], $_POST['mail'], $_POST['tel'], $_POST['etat'], $_POST['date']));
$bdd->commit();
}
?>
</div>
</div>
<div id="bandeau">
<?php include("include/inc_bandeau_droit.php"); ?>
</div>
<div class="clear"></div>
</div>
<?php include("include/inc_footer.php"); ?>
</div>
<!-- Start of StatCounter Code for Dreamweaver -->
<script type="text/javascript">
var sc_project=9784985;
var sc_invisible=1;
var sc_security="c3caf157";
var scJsHost = (("https:" == document.location.protocol) ?
"https://secure." : "http://www.");
document.write("<sc"+"ript type='text/javascript' src='" +
scJsHost+
"statcounter.com/counter/counter.js'></"+"script>");
</script>
<noscript><div class="statcounter"><a title="web analytics"
href="http://statcounter.com/" target="_blank"><img
class="statcounter"
src="http://c.statcounter.com/9784985/0/c3caf157/1/"
alt="web analytics"></a></div></noscript>
<!-- End of StatCounter Code for Dreamweaver --
</body>
</html>
Je précise que j'ai effectué déjà plusieurs recherche et verifier l'orthagraphe... avant de vous écrire.
Vous remerciant d'avance pour votre aide,
Cordialement,
Laetitia
Configuration: Windows / Firefox 70.0
A voir également:
- Notice: Undefined index: titre in C:\wamp64\...
- Notice gratuite - Guide
- Notice chromecast - Guide
- Notice télécommande universelle grundig - Forum Téléviseurs
- Homday x-pert écouteur bluetooth notice ✓ - Forum Casque et écouteurs
- Uleway g381 notice - Forum Mobile
2 réponses
Bonjour,
https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
Mais aussi :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et comme tu fais du PDO.. ça aussi :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Avec tout ça, ton code devrait fonctionner parfaitement.
https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
Mais aussi :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et comme tu fais du PDO.. ça aussi :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Avec tout ça, ton code devrait fonctionner parfaitement.
Voici à quoi ton code devrait ressembler
<?php session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd require_once "include/bdd.inc.php"; //récupération PROPRE des variables AVANT de les utiliser $titre = !empty($_POST['titre']) ? $_POST['titre'] : NULL; $prenom = !empty($_POST['prenom']) ? $_POST['prenom'] : NULL; $nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL; $structure = !empty($_POST['structure']) ? $_POST['structure'] : NULL; $fonction = !empty($_POST['fonction']) ? $_POST['fonction'] : NULL; $mail = !empty($_POST['mail']) ? $_POST['mail'] : NULL; $telephone = !empty($_POST['telephone']) ? $_POST['telephone'] : NULL; $etat = !empty($_POST['etat']) ? $_POST['etat'] : NULL; $date = !empty($_POST['date']) ? $_POST['date'] : date("d-m-Y"); $validation = !empty($_POST['validation']) ? $_POST['validation'] :NULL; $action = !empty($_GET["action"]) ? $_GET["action"] : "ajouter"; if($validation =="ok" ){ //si le formulaire est envoyé... //préparation de la requête $datas = array($titre ,$prenom ,$nom ,$structure ,$fonction ,$mail ,$telephone ,$etat ,$date); $requete = "INSERT INTO `contacts` (`titre`, `prenom`, `nom`, `structure`, `fonction`, `mail`, `telephone`, `etat`, `date`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"; //execution de la requête // nb : le code : $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); se place au niveau de la connexion à la bdd.... // nb² : Il faut mettre CHAQUE requête dans un bloc TRY/CATCH try{ $bdd->beginTransaction(); $reponse = $bdd->prepare($requete); $reponse->execute($datas); $bdd->commit(); }catch(Exception $e){ echo 'Erreur ' .$e->getMessage(); exit; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"> <title>autorisation de collecte de données</title> <link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" /> <!--<link rel="icon" type="image/jpg" href="images/favicon.jpg">--> <link href="css/reset.css" rel="stylesheet" type="text/css" /> <link href="css/menu.css" rel="stylesheet" type="text/css" /> <link href="css/design.css" rel="stylesheet" type="text/css" /> <link rel="stylesheet" href="lib/bootstrap-4.1.1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous"> <link rel="stylesheet" href="lib/bootstrap-4.1.1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous"> <link rel="stylesheet" href="css/style.css"> <link rel="apple-touch-icon" sizes="57x57" href="apple-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="apple-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="apple-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="apple-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="apple-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="apple-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="apple-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="apple-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="apple-icon-180x180.png"> <link rel="icon" type="image/png" sizes="192x192" href="android-icon-192x192.png"> <link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png"> <link rel="icon" type="image/png" sizes="96x96" href="favicon-96x96.png"> <link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png"> <link rel="manifest" href="manifest.json"> <script src="lib/jquery/jquery-3.3.1.min.js"></script> <script src="lib/bootstrap-4.1.1/dist/js/bootstrap.bundle.min.js"></script> <script src="js/lightbox.js"></script> </head> <body> <?php include_once("analyticstracking.php") ?> <div id="contains"> <?php include("include/inc_header.php"); include("include/inc_search.php"); include("include/inc_menu.php"); ?> <div id="page" class="bor_general"> <div id="corps"> <div id="tit_corps"> <h2 class="gen">AUTORISATION DE COLLECTE DE DONNEES</h2> <div class="clear"></div> </div> <div id="form_contact"> <div id="adresse"> <h4>CONDITIONS D'UTILISATION DE VOS DONNEES PERSONNELLES</h4> <UL> <li>En complétant ce formulaire, vous acceptez que le Comité Départemental Olympique et Sportif de Seine-Saint-Denis (CDOS 93) mémorise et utilise vos données pendant 1 an dans le but de répondre à vos demandes.</li> <li>En l’occurence, vous autorisez le CDOS 93 à communiquer avec vous s’il le juge opportun afin de vous apporter des informations sur son actualité ou vous proposez des services susceptibles de vous intéresser.</li> <li>Afin de protéger la confidentialité de vos données personnelles, le CDOS 93 s’engage à ne pas divulguer, ne pas transmettre, ni partager vos données personnelles avec d’autres entités, entreprises ou organismes, quels qu’ils soient.</li> <li>Vous pouvez accéder aux données vous concernant, les rectifier, demander leur effacement ou exercer votre droit à la limitation du traitement de vos données. Vous pouvez retirer à tout moment votre consentement au traitement de vos données.</li> <li>Pour exercer ces droits ou pour toute question sur le traitement de vos données dans ce dispositif, vous pouvez contacter <a href="mailto:oriane.odin@cdos93.org"><u><b>oriane.odin@cdos93.org</b></u></a>.</li> <li>En cochant la case ci-après, vous donnez votre consentement au traitement de vos données personnelles par le CDOS 93, conformément au réglement général sur la protection des données (RGPD) et à notre politique de protection des données. </li> </UL> </div> <?php if (isset($_GET["action"])) { $action <> $_GET["action"]; # code... } else { if (!$validation) { ?> <form method="post" action="autorisation2.php?action=ajouter" enctype="multipart/form-data"> <input type="hidden" name="validation" value="ok"> <div class="forms"> <div class="form-group"> <label class="form-inline" for="titre">Titre </label> <input type="text" class="form-control" name="titre" id="titre" placeholder="titre de civilité" required> </div> <div class="form-group"> <label class="form-inline" for="titre">Prénom </label> <input type="text" class="form-control" name="prenom" id="prenom" placeholder="votre prénom" required> </div> <div class="form-group"> <label class="form-inline" for="titre">Nom </label> <input type="text" class="form-control" name="nom" id="nom" placeholder="votre nom" required> </div> <div class="form-group"> <label class="form-inline" for="titre">Structure </label> <input type="text" class="form-control" name="structure" id="structure" placeholder="votre structure" required> </div> <div class="form-group"> <label class="form-inline" for="titre">Fonction </label> <input type="text" class="form-control" name="fonction" id="fonction" placeholder="votre fonction" required> </div> <div class="form-group"> <label class="form-inline" for="titre">Mail </label> <input type="text" class="form-control" name="mail" id="mail" placeholder="votre mail" required> </div> <div class="form-group"> <label class="form-inline" for="titre">Tel </label> <input type="text" class="form-control" name="tel" id="tel" placeholder="votre numéro de téléphone" required> </div> <div class="form-group"> <label class="form-check-inline" for="etat">En cochant cette case, je donne mon consentement </label> <input type="checkbox" id="etat" name="etat" value="1"> </select> </div> <div class="form-group"> <label class="form-inline" for="date">Le : <?php echo $date ?></label> <input type="hidden" class="form-control" id="date" name="date" value="<?php echo $date ?>" /> </div> <input class="btn" type="submit" value="AUTORISER"> </form> <?php } } ?> </div> </div> <div id="bandeau"> <?php include("include/inc_bandeau_droit.php"); ?> </div> <div class="clear"></div> </div> <?php include("include/inc_footer.php"); ?> </div> </div> <!-- Start of StatCounter Code for Dreamweaver --> <script type="text/javascript"> var sc_project=9784985; var sc_invisible=1; var sc_security="c3caf157"; var scJsHost = (("https:" == document.location.protocol) ? "https://secure." : "http://www."); document.write("<sc"+"ript type='text/javascript' src='" + scJsHost+ "statcounter.com/counter/counter.js'></"+"script>"); </script> <noscript><div class="statcounter"><a title="web analytics" href="http://statcounter.com/" target="_blank"><img class="statcounter" src="http://c.statcounter.com/9784985/0/c3caf157/1/" alt="web analytics"></a></div></noscript> <!-- End of StatCounter Code for Dreamweaver --> </body> </html>
Jordane,
Merci pour le code, que j'ai copié coller.
Alors quand je charge la page je n'ai plus d'erreurs c'est déjà une bonne chose lol, mais il se passe 2 trucs :
1/ je n'ai aucun enregistrement dans ma base de données :
- j'ai vérifié si tous les champs correspondaient et pas d'erreur,
pour infos voici le code de bdd.inc.php
2/ mon formulaire disparait de la page. il faudrait que je rajoute un message du type :
"vos données ont bien été collectées pour une durée de 1 an"
J'ai tenté plusieurs choses comme récupérer les infos avec $_GET mais sans résultat.
ce qui me tracasse le plus c'est que les données ne soient pas apparues dans ma base.
Cordialement,
Laetitia
Merci pour le code, que j'ai copié coller.
Alors quand je charge la page je n'ai plus d'erreurs c'est déjà une bonne chose lol, mais il se passe 2 trucs :
1/ je n'ai aucun enregistrement dans ma base de données :
- j'ai vérifié si tous les champs correspondaient et pas d'erreur,
pour infos voici le code de bdd.inc.php
<?php if ($_SERVER['SERVER_NAME'] == 'localhost') { $hote ="localhost"; $base ="cdos93"; $utilistateur ="root"; $mdp =""; } else { $hote ="*****"; $base ="*****"; $utilistateur ="****"; $mdp ="***"; } try { $bdd = new PDO("mysql:host=".$hote."; dbname=".$base."",$utilistateur, $mdp); $bdd->exec('set names utf8'); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } include ('inc.functions.php'); ?>
2/ mon formulaire disparait de la page. il faudrait que je rajoute un message du type :
"vos données ont bien été collectées pour une durée de 1 an"
J'ai tenté plusieurs choses comme récupérer les infos avec $_GET mais sans résultat.
ce qui me tracasse le plus c'est que les données ne soient pas apparues dans ma base.
Cordialement,
Laetitia
Et tout d'abord merci de votre réponse, j'ai lu avec attention le liens que vous m'avez transmis et inserer les codes pour détecter les erreurs, il semblerait que le retour des champs ne contient aucune données, ce qui explique les messages d'erreur.
Je suppose que l'erreur vient de :
Mais du coup je ne voit pas comment procéder autrement.
Si vous pouviez m’aiguiller...
D'avance merci.
Laetitia
Preuve que tu n'as pas du lire totalement les liens que je t'ai donné... puisqu'il y est mentionné qu'il faut
Récupérer proprement les variables AVANT de les utiliser
Si tu appliques réellement tout ce qui est marqué dans les liens que je t'ai donné... tu n'auras plus aucun souci.
Reviens nous voir avec ton code modifié si tu continues à rencotrer des problèmes.
NB: Pour poster ton code, merci de le faire correctement ( en y précisant le langage) tel qu'expliqué ici :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Cela permet d'avoir la coloration syntaxique ET la numérotation des lignes de code.
alors voici le nouveau code que j'ai saisie j'ai saisie :
Et voici les messages qui apparaisent :
Notice: Array to string conversion in C:\wamp64\www\cdos\autorisation2.php on line 153
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp64\www\cdos\autorisation2.php on line 153
PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp64\www\cdos\autorisation2.php on line 153
j'ai validé par erreur,
pour finir mon dernier message,
Concernant les balises code, je sais ne sais pas si je dois mettre html ou php ?
Enfin, pour préciser et compléter mon 1er message, à mon grand regret je ne pratique pas aussi souvent que je le souhaiterais le codage, je travaille pour une association où je suis un peu multifonction. Ce qui explique un peu mon impatience à résoudre mon problème. Je comprend parfaitement la démarche de nous faire rechercher par nous même les erreurs et trouver les solutions, mais là j'avoue que je sèche, de plus ma direction me relance sur la mise en œuvre donc je galère.
Dans tous les cas, je vous remercie de votre patience et de votre aide.
Laetitia