Declaration de variable php
Résoluserenity -
Soit la déclaration de variable suivante:
$marque=htmlspecialchars($_POST['marque']);
$num_serie=htmlspecialchars($_POST['serial_number']);
$num_inventaire=htmlspecialchars($_POST['inventory_number']);
$size_hdd=htmlspecialchars($_POST['size_hdd']);
$size_memory=htmlspecialchars($_POST['size_memory']);
$garantis=htmlspecialchars($_POST['garantis']);
$entrees=htmlspecialchars($_POST['date_debut']);
$exit=htmlspecialchars($_POST['date_fin']);
$dt_livraison=htmlspecialchars($_POST['date_livraison']);
$enregistrement = date('Y-m-d').''.date('H-M');
$coms=htmlspecialchars($_POST['commentaire']);
Message d'erreur :
Notice: Undefined index: nomfsseur in C:\wamp\www\apx_parc_informatique\ajout.php on line 186
Notice: Undefined index: model in C:\wamp\www\apx_parc_informatique\ajout.php on line 187
Notice: Undefined index: marque in C:\wamp\www\apx_parc_informatique\ajout.php on line 196
Notice: Undefined index: serial_number in C:\wamp\www\apx_parc_informatique\ajout.php on line 197
Notice: Undefined index: inventory_number in C:\wamp\www\apx_parc_informatique\ajout.php on line 198
Notice: Undefined index: size_hdd in C:\wamp\www\apx_parc_informatique\ajout.php on line 199
Notice: Undefined index: size_memory in C:\wamp\www\apx_parc_informatique\ajout.php on line 200
Notice: Undefined index: garantis in C:\wamp\www\apx_parc_informatique\ajout.php on line 201
Notice: Undefined index: date_debut in C:\wamp\www\apx_parc_informatique\ajout.php on line 202
Notice: Undefined index: date_fin in C:\wamp\www\apx_parc_informatique\ajout.php on line 203
Notice: Undefined index: date_livraison in C:\wamp\www\apx_parc_informatique\ajout.php on line 204
Notice: Undefined index: commentaire in C:\wamp\www\apx_parc_informatique\ajout.php on line 206
J'ai dû oublier quelque chose mais j'ais du mal à voir.
Pouvez vous me mettre sur la voie
- Declaration de variable php
- Déclaration - Guide
- Expert php - Télécharger - Langages
- Easy php - Télécharger - Divers Web & Internet
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Word
11 réponses
Des notices Undefined index apparaissent lorsque les indices du formulaire sont lus sans vérification préalable, et le code tente d'accéder à $_POST avec des noms non sécurisés, générant erreurs et incohérences.
La correction principale est de tester le bouton correctement et de vérifier l'existence des champs avant htmlspecialchars, en utilisant des noms cohérents comme nomfsseur, model, marque et en évitant les accès directs.
D'autres proposent d'unifier la logique et de simplifier les tests; il faut remplacer isset($_POST['ajout']) != 'Ajouter' par une vérification claire du bouton et des champs.
En cas de traitement, initialiser les variables uniquement après vérification complète des champs et veiller à ce que le formulaire transmette correctement les données attendues, afin d'éviter des incohérences ultérieures.
if (isset($_POST['marque']))
$marque=htmlspecialchars($_POST['marque']);
else
$marque = "erreur";
meçi pour ton aide,
j'ai adapter le début de code que tu m'as données mais l'erreur persiste ,
c'est peut au niveau du formulaire donc .
Je poste le formouliare correspondant aux variables prédéfinis.
echo "<fieldset class='fieldset'>";
echo "<div id='center'><span class='violet'><h3>Ajout Matériel</h3></<span></div>";
echo "<table id='Admingauche' align='center'>";
echo "<tr>
<tr>
<td><div><label for ='nomfsseur'><b>Nom Fournisseur :</b></label></td><td><input name='nomfsseur' type='text' /><span class='rouge'>*</span></div></td>
</tr>";
echo " <tr>
<td><div><label for ='model'><b>Model :</b></label></td><td><input id='model' name='model' type='text' /><span class='rouge'>*</span></div></td>
</tr>";
echo " <tr>
<td><div><label for='marque'><b>Marque :</b></label></td><td><input id='marque' name='marque' type='text' /></div></td>
</tr>";
echo " <tr>
<td><div> <label for='serial_number'><b>N° Serie :</b></label></td><td><input id='serial_number' name='serial_number' type='text' /></div></td>
</tr>
echo "<tr>
<td><div><label for='inventory_number'><b>N°Inventaire :</b></label></td><td><input type='text' id='inventory_number' name='inventory_number' /></div></td>
</tr>";
echo " <tr>
<td><div><label for='size_hdd'><b>Taille disque dur :</b></label></td><td><input id='size_hdd' name='size_hdd' type='text' /></div> </td>
</tr>";
echo" <tr>
<td><div><label for='size_memory'><b>Taille Mémoire :</b></label></td><td><input id='size_memory' name='size_memory' type='text' /></div></td>
</tr>";
echo " <tr>
<td><div><label for ='garantis'><b>Garantis :</b></label></td><td><input id='garantis' name='garantis' type='text' /></div></td>
</tr>";
echo " <tr>
<td><div><label for ='date_debut'><b>Entrée :</b></label></td><td><input id='date_debut' name='date_debut' type='text' /></div></td>
</tr>";
echo " <tr>
<td><div><label for ='date_fin'><b>Sortie :</b></label></td><td><input id='date_fin' name='date_fin' type='text' /></div></td>
</tr>";
echo " <tr>
<td><div><label for ='date_livraison'><b>Livraison Effectué le :</b></label></td><td><input id='date_livraison' name='date_livraison' type='text' /></div></td>
</tr>";
echo " <tr>
<td><div><label for ='commentaire'><b>Commentaire :</b></label></td><td><textarea id='commentaire' name='commentaire' rows ='4' cols='10'></textarea></div></td>
</tr>";
echo " <tr>
<td><div class='buttons' ><input type='submit' name='ajout' value= 'Ajouter' /></div> </td>
</tr>";
echo " </tr></table>";
echo "</fieldset>";
echo "<a href='index.php?id_page=32'><b>Retour</b></a>";
if(!isset($_POST['nomfsseur']) && !isset($_POST['model']))
{
$fournisseur =htmlspecialchars($_POST['nomfsseur']);
$model=htmlspecialchars($_POST['model']);
if(!isset($_POST['marque']) || !isset($_POST['serial_number']) || !isset($_POST['inventory_number']) || !isset($_POST['size_hdd']) || !isset($_POST['size_memory']) || !isset($_POST
['garantis']) || !isset($_POST['date_debut']) || !isset($_POST['date_fin']) || !isset($_POST['date_livraison']) || !isset($_POST['commentaire']))
{
//====htmlspecialchars: pour gérer les caractère spéciaux entré dans un formulaire====//
$marque=htmlspecialchars($_POST['marque']);
$num_serie=htmlspecialchars($_POST['serial_number']);
$num_inventaire=htmlspecialchars($_POST['inventory_number']);
$size_hdd=htmlspecialchars($_POST['size_hdd']);
$size_memory=htmlspecialchars($_POST['size_memory']);
$garantis=htmlspecialchars($_POST['garantis']);
$entrees=htmlspecialchars($_POST['date_debut']);
$exit=htmlspecialchars($_POST['date_fin']);
$dt_livraison=htmlspecialchars($_POST['date_livraison']);
$enregistrement=date('o-m-d').''.date('H:i:s');
$coms=htmlspecialchars($_POST['commentaire']);
if(!empty($fournisseur) && !empty($model))
{
//construction de la requête d'insertion
$req="INSERT INTO gestion_materiel (nom_fournisseur,model,marque,sn,inventory_number,taille_hdd,taille_memoire,garantis,date_debut,date_fin,date_livraison,
enregistrement,commentaire)
VALUES('$fournisseur','$model','$marque','$num_serie','$num_inventaire','$size_hdd','$size_memory','$garantis','$entrees','$exit','$dt_livraison','$enregistrement', '$coms')";
..............................................
if(!isset($resultat))
{
........................................................................
}else
{
....................................................................
}
}
}else
{ $formulaire="erreur";
$model="erreur";
$marque="erreur";
$num_serie="erreur";
$num_inventaire="erreur";
$size_hdd="erreur";
$size_memory="erreur";
$garantis="erreur";
$entrees="erreur";
$exit="erreur";
$dt_livraison="erreur";
$enregistrement="erreur";
$coms="erreur";
echo "<h2> Veuillez complétez le formulaire !!! <h2> ";
}
}
au^pire, fais un essai en changeant dans ces balises la methode: mets GET
si quand ca essaye de charger la page tu vois els parametres dans ton URL, c'est que le pb vient pas du formulaire, sinon, c'est qu'il y a un pb de formulaire
- fait exprès : dans ce cas utilise le code de Nabla's.
- une erreur : il faudrait nous montrer le formulaire d'où sont censées venir les données.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question><input name='nomfsseur' type='text' />
désolé, mais t'es pas en php ma caille ;) ' et " c'est différent...
remplaces tous tes ' par des "... comme ca:
><input name="nomfsseur"type="text" />
sinon, au lieu de faire echo "<balba tarata='k'> .....";
tu fais echo '<balba tarata="k"> .....';
les même erreur persiste.
si on mais le meme sigle partout le reste du formulaire et au delà se grise comme si j'allais concacatener le reste du cote
voici le formilaire arrangé:
echo '<form action="index.php?id_page=32" method="post" id="centre" >';
echo '<fieldset class="fieldset">';
echo '<div id="center"><span class="violet"><h3>Ajout Matériel</h3></<span></div>"';
echo '<table id="Admingauche align="center">';
echo '<tr>
<tr>
<td><div><label for ="nomfsseur"><b>Nom Fournisseur :</b></label></td><td><input name="nomfsseur" type="text" /><span class="rouge">*</span></div></td>
</tr>';
echo ' <tr>
<td><div><label for ="model"><b>Model :</b></label></td><td><input id="model" name="model" type="text" /><span class="rouge">*</span></div></td>
</tr>';
echo ' <tr>
<td><div><label for="marque"><b>Marque :</b></label></td><td><input id="marque" name="marque" type="text" /></div></td>
</tr>';
echo ' <tr>
<td><div> <label for="serial_number"><b>N° Serie :</b></label></td><td><input id="serial_number" name="serial_number" type="text" /></div></td>
</tr>';
echo ' <tr>
<td><div><label for="inventory_number"><b>N°Inventaire :</b></label></td><td><input type="text" id="inventory_number" name="inventory_number" /></div></td>
</tr>';
echo ' <tr>
<td><div><label for="size_hdd"><b>Taille disque dur :</b></label></td><td><input id="size_hdd" name="size_hdd" type="text" /></div> </td>
</tr>';
echo '<tr>
<td><div><label for="size_memory"><b>Taille Mémoire :</b></label></td><td><input id="size_memory" name="size_memory" type="text" /></div></td>
</tr>';
echo ' <tr>
<td><div><label for ="garantis"><b>Garantis :</b></label></td><td><input id="garantis" name="garantis" type="text" /></div></td>
</tr>';
echo ' <tr>
<td><div><label for =\'date_debut\'><b>Entrée :</b></label></td><td><input id=\'date_debut\' name=\'date_debut\' type=\'text\' /></div></td>
</tr>';
echo ' <tr>
<td><div><label for ="date_fin"><b>Sortie :</b></label></td><td><input id="date_fin" name="date_fin" type="text" /></div></td>
</tr>';
echo ' <tr>
<td><div><label for ="date_livraison"><b>Livraison Effectué le :</b></label></td><td><input id="date_livraison" name="date_livraison" type="text" /></div></td>
</tr>';
echo ' <tr>
<td><div><label for ="commentaire"><b>Commentaire :</b></label></td><td><textarea id="commentaire" name="commentaire" rows ="4" cols="10"></textarea></div></td>
</tr>';
echo ' <tr>
<td><div class="buttons" ><input type="submit" name="ajout" value= "Ajouter" /></div> </td>
</tr>';
echo '</tr></table>';
echo '</fieldset>';
//echo '<a href="index.php?id_page=32"><b>Retour</b></a>';
echo '</form>';
Je le metterais dans une variable comme je l'avais fais au départ et je regarderais les attribus du formulaire sont lu par mes variable
généralement, quand on programme, quand oon nous dit une erreur, si la ligne est juste, on regarde juste au dessus.
voila le code auquel je vais m'interesser
if(!isset($_POST['nomfsseur']) && !isset($_POST['model']))
{
$fournisseur =htmlspecialchars($_POST['nomfsseur']);
$model=htmlspecialchars($_POST['model']);
if(!isset($_POST['marque']) || !isset($_POST['serial_number']) || !isset($_POST['inventory_number']) || !isset($_POST['size_hdd']) || !isset($_POST['size_memory']) || !isset($_POST
['garantis']) || !isset($_POST['date_debut']) || !isset($_POST['date_fin']) || !isset($_POST['date_livraison']) || !isset($_POST['commentaire']))
{
//====htmlspecialchars: pour gérer les caractère spéciaux
dans le premier if. tu fais un !isset sur model. il y a le ! de negation .... ca veut dire si machin n'est pas défini.... et 2 lignes plus tard, tu utilises le champ alors qu'il n'est pas défini ... Il y a un problème là
ensuite, tu fais un :
if(!isset($_POST['marque']) || !isset($_POST['serial_number']) ....
qui veut dire: si marque n'est pas défini, ou serial_number n'est pas défini ....
en gros tu fais ce traitement que si t'as un champ qui n'est pas défini? Je comprend pas la logique. Pour moi, tu devrai avoir des isset, sans negation, et pas de || (ou) mais que des && (et) ...
en gros, tu dis "si il y a un champ qui merdouille" => on traite les champs.
alors que tu devrais faire à la limite "si il y a un champ qui merdouille" => on met un message d'erreur, "sinon" => on traite.
bref, je pense qu'il y a des choses à revoir dans le code ....
Tu à 3 cas possibles
-Ta variable n'est pas définie if (isset $var) te retournera false if (!isset $var) te retournera true -Ta variable est vide: $var=""; if (isset $var) te retournera true if (!isset $var) te retournera false if (ifempty$var) te retournera true if (!ifempty($var) te retournera false -Ta variable à une valeur: $var=toto. if (isset $var) te retournera true if (!isset $var) te retournera false if (ifempty$var) te retournera false if (!ifempty($var) te retournera true
Tu dois donc mettre un:
if ((isset $var1) && (isset $var2) && (isset $var3))
{ on traite }
else
{ erreur}
C'est plus clair?
insères ceci en haut de ton code de traitement:
foreach($_POST as $keyname=>$value) {
print "POST_['".$keyname."'] = ".$value;
}
je sais pas si ca marche, mais bon ...
et je persiste, ta gestion du if n'est pas bonne du tout !
Nous avons déja essayé cette possiblité
Nabla's - 11 aoû 2010 à 11:36
Je suis d'accord avec toi pour la mauvaise gestion du if donc je l'ai réécri
j'espère que je ne t'épuise pas trop.:)
je de t'envoie le code modifié dis mis si tu trouve des erreurs surtout au niveau du dernier bloc que tu m'as envoyé:
......................................................................................................
if (isset($_POST['ajout'])!='Ajouter')
{ // déclaration de variable à refaire
if(!isset($_POST['nomfsseur']) && !isset($_POST['model']) && !isset($_POST['marque']) && ! isset($_POST['serial_number']) && !isset($_POST['inventory_number']) && !isset($_POST['size_hdd']) && !isset($_POST['size_memory']) && !isset($_POST['garantis']) && !isset($_POST['date_debut']) && !isset($_POST['date_fin']) && !isset($_POST['date_livraison']) && !isset($_POST['commentaire']))
{
............................................................................................
//====htmlspecialchars: pour gérer les caractère spéciaux entré dans un formulaire====//
$fournisseur =htmlspecialchars($_POST['nomfsseur']);//access procedure php 4
$model=htmlspecialchars($_POST['model']);
$marque=htmlspecialchars($_POST['marque']);
$num_serie=htmlspecialchars($_POST['serial_number']);
$num_inventaire=htmlspecialchars($_POST['inventory_number']);
$size_hdd=htmlspecialchars($_POST['size_hdd']);
$size_memory=htmlspecialchars($_POST['size_memory']);
$garantis=htmlspecialchars($_POST['garantis']);
$entrees=htmlspecialchars($_POST['date_debut']);
$exit=htmlspecialchars($_POST['date_fin']);
$dt_livraison=htmlspecialchars($_POST['date_livraison']);
$enregistrement=date('o-m-d').''.date('H:i:s');
$coms=htmlspecialchars($_POST['commentaire']);
//===verifie les valeurs envoyés part $_POST=====//
foreach ($_POST as $keyname=>$value) {
print "POST_['".$keyname."'] = ".$value;
}
if(!empty($fournisseur) && !empty($model))
{
................................................
Je m'en vais déjeuner à tout à l'heure :)
PS: merci pour tes explications précieuses.
$erreur = "nabla il dit que ca plante sur ce champs non renseigné dans ton formulaire : champ ";
if isset($_POST['nomfsseur']) $fournisseur = htmlspecialchars($_POST['nomfsseur']) else die($erreur."nomfsseur ");
if isset($_POST['model']) $model= htmlspecialchars($_POST['model']) else die($erreur." model");
if isset($_POST['marque']) $marque= htmlspecialchars($_POST['marque']) else die($erreur."marque ");
if isset($_POST['serial_number']) $num_serie= htmlspecialchars($_POST['serial_number']) else die($erreur."serial_number ");
if isset($_POST['inventory_number']) $num_inventaire= htmlspecialchars($_POST['inventory_number']) else die($erreur."inventory_number ");
if isset($_POST['size_hdd']) $size_hdd=htmlspecialchars($_POST['size_hdd']) else die($erreur."size_hdd ");
if isset($_POST['size_memory']) $size_memory= htmlspecialchars($_POST['size_memory']) else die($erreur."size_memory ");
if isset($_POST['garantis']) $garantis= htmlspecialchars($_POST['garantis']) else die($erreur."garantis ");
if isset($_POST['date_debut']) $entrees= htmlspecialchars($_POST['date_debut']) else die($erreur."date_debut ");
if isset($_POST['date_fin']) $exit= htmlspecialchars($_POST['date_fin']) else die($erreur."date_fin ");
if isset($_POST['date_livraison'])$dt_livraison= htmlspecialchars($_POST['date_livraison']) else die($erreur."date_livraison ");
$enregistrement=date('o-m-d').''.date('H:i:s');
if isset($_POST['commentaire']) $coms= htmlspecialchars($_POST['commentaire']) else die($erreur."commentaire ");
puis tu seras sympa de faire 2 tests: un comme tu les fais avant, et un en remplissant tous tes champs ...
ha, et un truc. Quand tu nous poste le code, utilises les balises < code > , histoire qu'on ai l'indentation, car si je dois compter les accolades pour les tests, ca le fera pas du tout
et heu, juste comme ca... j'ai toujorus pas l'imrpession que ton if soit bon
moi je susi chaud pour ca:
if(isset($_POST['nomfsseur']) && isset($_POST['model']) && isset($_POST['marque']) && isset($_POST['serial_number']) && isset($_POST['inventory_number']) && isset($_POST['size_hdd']) && isset($_POST['size_memory']) && isset($_POST['garantis']) && isset($_POST['date_debut']) && isset($_POST['date_fin']) && isset($_POST['date_livraison']) && isset($_POST['commentaire']))
==> donc avec AUCUN point d'exclamation.
petite question subsidiaire, depuis combien de temps programmes tu ?
https://forums.commentcamarche.net/forum/affich-18787137-declaration-de-variable-php#2
c'était bon ;) ses champs en erreur auraient pris la valeur "erreur", et ca aurai été torched ...
chez moi je tourne aussi sur WAMP, donc on sera a priori dans les memes conditions. Ici, au boulot, de toute facon, je peux pas tester le code que je t'envoi ....
Tu m'enverras avant 18h tout ton code à la sutie du présent message, dans l'état ou il sera, en séparant bien les fichiers, et en utilisant les balises CODE (les < > dans l'edition du message). C'est beaucoup plus facile pour la lecture des gens qui t'aident .
sur ce je te dis bon courrage, et peut etre à ce soir, disons quelque part entre 18h30 et 23h !
l'affichage entre le bloc code n'est pas fameux mais j'essaie de te le poster correctement:
function tInsertion(){
//Formulaire dynamique.
echo '<form action="index.php?id_page=33" method="POST" id="centre" >
<fieldset class="fieldset">
<div id="center"><span class="violet"><h3>Ajout Matériel</h3></<span></div>
<table id="Admingauche align="center">
<tr>
<tr>
<td><div><label for ="nomfsseur"><b>Nom Fournisseur :</b></label></td><td><input name="nomfsseur" type="text" /><span class="rouge">*</span></div></td>
</tr>
<tr>
<td><div><label for ="model"><b>Model :</b></label></td><td><input id="model" name="model" type="text" /><span class="rouge">*</span></div></td>
</tr>
<tr>
<td><div><label for="marque"><b>Marque :</b></label></td><td><input id="marque" name="marque" type="text" /></div></td>
</tr>
<tr>
<td><div> <label for="serial_number"><b>N° Serie :</b></label></td><td><input id="serial_number" name="serial_number" type="text" /></div></td>
</tr>
<tr>
<td><div><label for="inventory_number"><b>N°Inventaire :</b></label></td><td><input type="text" id="inventory_number" name="inventory_number" /></div></td>
</tr>
<tr>
<td><div><label for="size_hdd"><b>Taille disque dur :</b></label></td><td><input id="size_hdd" name="size_hdd" type="text" /></div> </td>
</tr>
<tr>
<td><div><label for="size_memory"><b>Taille Mémoire :</b></label></td><td><input id="size_memory" name="size_memory" type="text" /></div></td>
</tr>
<tr>
<td><div><label for ="garantis"><b>Garantis :</b></label></td><td><input id="garantis" name="garantis" type="text" /></div></td>
</tr>
<tr>
<td><div><label for =\'date_debut\'><b>Entrée :</b></label></td><td><input id=\'date_debut\' name=\'date_debut\' type=\'text\' /></div></td>
</tr>
<tr>
<td><div><label for ="date_fin"><b>Sortie :</b></label></td><td><input id="date_fin" name="date_fin" type="text" /></div></td>
</tr>
<tr>
<td><div><label for ="date_livraison"><b>Livraison Effectué le :</b></label></td><td><input id="date_livraison" name="date_livraison" type="text" /></div></td>
</tr>
<tr>
<td><div><label for ="commentaire"><b>Commentaire :</b></label></td><td><textarea id="commentaire" name="commentaire" rows ="4" cols="10"></textarea></div></td>
</tr>
<tr>
<td><div class="buttons"><button type="submit" name="bouton_ajout"><img src="images/b_add.png" /> Ajouter</button></div></td>
</tr>
</tr></table>
</fieldset>
<div id="center"><a href="index.php?id_page=32"><b>Retour</b></a></div>
</form>';
if (isset($_POST['ajout'])!='Ajouter')
{ // déclaration de variable à refaire
if(isset($_POST['nomfsseur']) && isset($_POST['model']) && isset($_POST['marque']) && isset($_POST['serial_number']) && isset($_POST['inventory_number']) && isset($_POST['size_hdd']) && isset($_POST['size_memory']) && isset($_POST['garantis']) && isset($_POST['date_debut']) && isset($_POST['date_fin']) && isset($_POST['date_livraison']) && isset($_POST['commentaire'])){
//====test de variables====//
$formulaire="erreur";
$model="erreur";
$marque="erreur";
$num_serie="erreur";
$num_inventaire="erreur";
$size_hdd="erreur";
$size_memory="erreur";
$garantis="erreur";
$entrees="erreur";
$exit="erreur";
$dt_livraison="erreur";
//$enregistrement="erreur";
$coms="erreur";
echo "<h2> Veuillez complétez le formulaire !!! <h2> ";
}else
{
//====htmlspecialchars: pour gérer les caractère spéciaux entré dans un formulaire====//
$fournisseur=htmlspecialchars($_POST['nomfsseur']);//access procedure php 4
$model=htmlspecialchars($_POST['model']);
$marque=htmlspecialchars($_POST['marque']);
$num_serie=htmlspecialchars($_POST['serial_number']);
$num_inventaire=htmlspecialchars($_POST['inventory_number']);
$size_hdd=htmlspecialchars($_POST['size_hdd']);
$size_memory=htmlspecialchars($_POST['size_memory']);
$garantis=htmlspecialchars($_POST['garantis']);
$entrees=htmlspecialchars($_POST['date_debut']);
$exit=htmlspecialchars($_POST['date_fin']);
$dt_livraison=htmlspecialchars($_POST['date_livraison']);
//$enregistrement=date('Y-m-d').''.date('H:i:s');
$coms=htmlspecialchars($_POST['commentaire']);
//===verifie les valeurs envoyés part $_POST=====//
foreach($_POST as $keyname=>$value) { print "POST_['".$keyname."'] = ".$value;
}
if(!empty($fournisseur) && !empty($model)){ //construction de la requête d'insertion
$req="INSERT INTO gestion_materiel (nom_fournisseur,model,marque,sn,inventory_number,taille_hdd,taille_memoire,garantis,date_debut,date_fin,date_livraison, enregistrement,commentaire)
VALUES('$fournisseur','$model','$marque','$num_serie','$num_inventaire','$size_hdd','$size_memory','$garantis','$entrees','$exit','$dt_livraison','$enregistrement', '$coms')";
$resultat=@mysql_query($req) or die("Requête vide !!".mysql_error());
$final=@mysql_result($resultat);
echo $final;
if(!$resultat=@mysql_query($req)) {
// Javascript :
echo "<script type=\"text/javascript\">
function error()
{ alert('Erreur : ".mysql_error()."'); }
</script>";
}else
{
echo "<script type=\"text/javascript\">
function confimAjout( {
alert('vous avez été enregistrée : ".mysql_insert_id($resultat)."');
} </script>";
}
}
}
}
}
l'affichage du code ne me plait pas mais bon on fait vas faire avec
...
épilogue:
étape 1-
t'as pas fait la correction qu'apatik t'as dit de faire sur le
if (isset($_POST['ajout'])!='Ajouter')
où tu comparais un booléen à une chaine de caractère .. si tu comprends pas ton erreur, c'est qu'il faut revoir les bases.
ensuite, quitte a rester sur cette ligne: tu testait qu'on ai appuyé sur le bouton. Ton bouton s'appelle <button type="submit" name="bouton_ajout">
donc on passe de
if (isset($_POST['ajout'])!='Ajouter')à
if (isset($_POST['bouton_ajout']))
ca fait 2 erreurs sur la même ligne quand même.... dont une qui t'avait été signalée. pour trouver l'erreur, j'ai simplement mis un
else echo "pas de traitement";qui suivait le block du if
étape 2:
heu, là ou t'initialise toutes tes variables à erreur en cas d'erreur.... je crois que c'est du foutage de tête là .... toi, si on a tout rempli bien correctement (isset=> is set => est defini) T'as fait un test sur toutes les variables et tu dis "si toutes les variables sont définis", et derrière tu fais quoi? ben tu les mets toutes en erreur. Si tes profs traitaient tes copies comme tu traites tes variables, t'aurai un 0 à chaque fois que t'aurai tout bien rempli ....
Ca me rappelle le premier singe que la NASA a envoyé dans l'espace. Le pauvre: le système a buggé et au lieu d'avoir des morceaux de banane quand il faisait les bons trucs, il se prenait les décharges électriques.... bref, tu devrais lire et comprendre le isset .... parce que là t'a vraiment rien comprit ....
et , j'ai pas corrigé, mais le traitement que je t'ai donné, il fallait le faire une fois pour chaque variable, pas une grande fois avec toutes les variables. Tu peux très bien avoir une variable en erreur sans que toutes soient en erreur. Bon a la limite ca te optimiseras plus tard quand tu comprendras les problèmes qui en découlent
donc bon, je te mets le code qui fonctionne, mais franchement, je pense que tu n'as pas mis suffisamment de bonne volonté dans ce développement
<?php
tInsertion();
function tInsertion(){
//Formulaire dynamique.
echo '<form action="index.php?id_page=33" method="POST" id="centre" >
<fieldset class="fieldset">
<div id="center"><span class="violet"><h3>Ajout Matériel</h3></<span></div>
<table id="Admingauche align="center">
<tr>
<tr>
<td><div><label for ="nomfsseur"><b>Nom Fournisseur :</b></label></td><td><input name="nomfsseur" type="text" /><span class="rouge">*</span></div></td>
</tr>
<tr>
<td><div><label for ="model"><b>Model :</b></label></td><td><input id="model" name="model" type="text" /><span class="rouge">*</span></div></td>
</tr>
<tr>
<td><div><label for="marque"><b>Marque :</b></label></td><td><input id="marque" name="marque" type="text" /></div></td>
</tr>
<tr>
<td><div> <label for="serial_number"><b>N° Serie :</b></label></td><td><input id="serial_number" name="serial_number" type="text" /></div></td>
</tr>
<tr>
<td><div><label for="inventory_number"><b>N°Inventaire :</b></label></td><td><input type="text" id="inventory_number" name="inventory_number" /></div></td>
</tr>
<tr>
<td><div><label for="size_hdd"><b>Taille disque dur :</b></label></td><td><input id="size_hdd" name="size_hdd" type="text" /></div> </td>
</tr>
<tr>
<td><div><label for="size_memory"><b>Taille Mémoire :</b></label></td><td><input id="size_memory" name="size_memory" type="text" /></div></td>
</tr>
<tr>
<td><div><label for ="garantis"><b>Garantis :</b></label></td><td><input id="garantis" name="garantis" type="text" /></div></td>
</tr>
<tr>
<td><div><label for =\'date_debut\'><b>Entrée :</b></label></td><td><input id=\'date_debut\' name=\'date_debut\' type=\'text\' /></div></td>
</tr>
<tr>
<td><div><label for ="date_fin"><b>Sortie :</b></label></td><td><input id="date_fin" name="date_fin" type="text" /></div></td>
</tr>
<tr>
<td><div><label for ="date_livraison"><b>Livraison Effectué le :</b></label></td><td><input id="date_livraison" name="date_livraison" type="text" /></div></td>
</tr>
<tr>
<td><div><label for ="commentaire"><b>Commentaire :</b></label></td><td><textarea id="commentaire" name="commentaire" rows ="4" cols="10"></textarea></div></td>
</tr>
<tr>
<td><div class="buttons"><button type="submit" name="bouton_ajout"><img src="images/b_add.png" /> Ajouter</button></div></td>
</tr>
</tr></table>
</fieldset>
<div id="center"><a href="index.php?id_page=32"><b>Retour</b></a></div>
</form>';
if (isset($_POST['bouton_ajout'])) //ICI apatik t'avait dit quoi faire pour le != et ton nom de variable était pas bon
{ // déclaration de variable à refaire
if(isset($_POST['nomfsseur']) && isset($_POST['model']) && isset($_POST['marque']) && isset($_POST['serial_number']) && isset($_POST['inventory_number']) && isset($_POST['size_hdd']) && isset($_POST['size_memory']) && isset($_POST['garantis']) && isset($_POST['date_debut']) && isset($_POST['date_fin']) && isset($_POST['date_livraison']) && isset($_POST['commentaire']))
/* {
//====test de variables====//
$formulaire="erreur";
$model="erreur";
$marque="erreur";
$num_serie="erreur";
$num_inventaire="erreur";
$size_hdd="erreur";
$size_memory="erreur";
$garantis="erreur";
$entrees="erreur";
$exit="erreur";
$dt_livraison="erreur";
//$enregistrement="erreur";
$coms="erreur";
echo "<h2> Veuillez complétez le formulaire !!! <h2> ";
}else*/
{
//====htmlspecialchars: pour gérer les caractère spéciaux entré dans un formulaire====//
$fournisseur=htmlspecialchars($_POST['nomfsseur']);//access procedure php 4
$model=htmlspecialchars($_POST['model']);
$marque=htmlspecialchars($_POST['marque']);
$num_serie=htmlspecialchars($_POST['serial_number']);
$num_inventaire=htmlspecialchars($_POST['inventory_number']);
$size_hdd=htmlspecialchars($_POST['size_hdd']);
$size_memory=htmlspecialchars($_POST['size_memory']);
$garantis=htmlspecialchars($_POST['garantis']);
$entrees=htmlspecialchars($_POST['date_debut']);
$exit=htmlspecialchars($_POST['date_fin']);
$dt_livraison=htmlspecialchars($_POST['date_livraison']);
$enregistrement=date('Y-m-d').''.date('H:i:s');
$coms=htmlspecialchars($_POST['commentaire']);
//===verifie les valeurs envoyés part $_POST=====//
foreach($_POST as $keyname=>$value) {
print "POST_['".$keyname."'] = ".$value."<br />";
}
if(!empty($fournisseur) && !empty($model)){ //construction de la requête d'insertion
$req="INSERT INTO gestion_materiel (nom_fournisseur,model,marque,sn,inventory_number,taille_hdd,taille_memoire,garantis,date_debut,date_fin,date_livraison, enregistrement,commentaire)
VALUES('$fournisseur','$model','$marque','$num_serie','$num_inventaire','$size_hdd','$size_memory','$garantis','$entrees','$exit','$dt_livraison','$enregistrement', '$coms')";
$resultat=@mysql_query($req) or die("Requête vide !!".mysql_error());
$final=@mysql_result($resultat);
echo $final;
if(!$resultat=@mysql_query($req)) {
// Javascript :
echo "<script type=\"text/javascript\">
function error()
{ alert('Erreur : ".mysql_error()."'); }
</script>";
}else
{
echo "<script type=\"text/javascript\">
function confimAjout( {
alert('vous avez été enregistrée : ".mysql_insert_id($resultat)."');
} </script>";
}
}
}
else
echo "remplir tous les champs";
}else echo "premier chargement";
}
?>
Et le must du must, c'est qu'il est assez commenté pour un noob.
@Serenity: Avant quand même, un truc. Le plagia, c'est un truc de mer*e. Et ce script, tu l'as initialement pompé. Parce que rien qu'a voir le nom des variables, le fait de passer par une fonction pour afficher un formulaire.., et faut voir le nom de la fonction.. Bref. Quand on code un truc, soit on le fait soit même, soit on laisse un commentaire pour la personne qui l'a fait. Faut rendre à César ce qui est à Jules..
Bref, voila mon script que tu peux utiliser comme tu l'entend, et sans parler de moi.
https://pastebin.com/MHSZ8imB
non quand je programme pour ne pas oublier ce que je fais je mets beaucoup de commentaire après je les efface qd le programme est fini car il peux arriver que je développe sur d'autre techno , ce sont des point de repère.
En loccurence je les ais enlevés car j'en avais mis des tonnes.
la premier ligne if contenais bien une errur et en reprenons ton explication au dessus j'ai compris pourquoi merci.
Merci pour pour ton aide Nabla's
l'attribut bouton c'est bien ajout pas bouton_Ajouter le code que je t'es donné contenait quelque erreur d'innatentions que j'ai corrigé et l'appelle de la fonction tInsertion au débute ne mets pas utile car il interfère avec ma page login, je l'ai mis en commentaire.
sinon le formulaire ajoute bien une nouvelle données
maintenant je doit revoir au niveau des base de donnée car aucune ligne n'est ajouter dans la bdd créer dans phpmyadmin
Et j'attend surtout qu'il me dise que ça bug parce que le form renvoi sur "index2.php", qu'une fois qu'on aura résolu ce problème, qu'il me dise que son code SQL plante parce qu'il est pas connecté à la db, ...
Enfin toutes les erreurs de transposition de base quoi. Puisque chez moi, ça marche :D (enfin je me suis arrété à la partie db, puisque j'avais la flemme d'en créer une pour tester.. en tout cas, la requette créée est correcte)
pour le greffer à la page principale j'ai utilisé un include_once(nomdelapage.php).
merci pour ta solution implode() je la testerais.
je te dirais ce qu'il en ais.
avant j'essaierais de comprendre comment elle fonction afin de mieux l'utiliser plus tard.
Passe une bonne journée,
:)
J'ai poste le formulaire corespondant au variable