Page 1 sur 1

Problème pour un update d'une table. Notice: Undefined index: name_client in ...

Posté : 18 août 2015, 22:17
par fatiha
Bonjour à tous,
J'aurais besoin de votre aide.
Dans ma table commande, j'aimerais, via un tableau, faire des modifications, sans que tous les champs ne soit changer (càd que les champs que je n'ai pas changer ne soit pas écraser par "rien").
J'ai donc décidé de préremplir mes champs en allant récupérer ce qu'il y a dans ma base de données.
Seulement, quand je clique sur modifier, il me dit que les index de chaque champs sont indéfinis
" Notice: Undefined index: name_client in ..." il me le fait pour chaque champs

Voici quelques bouts de code.

ceci est pas page d'affichage des commandes avec la possibilité de les changer.

Code : Tout sélectionner

<?php session_start(); //on vérifie si l'utilisateur est un admin et s'il est connecté if (!isset($_SESSION['id'])) { // l'utilisateur est renvoyé vers la page index header('refresh:0;url=index.php'); } elseif ($_SESSION['admin'] == 0) { // l'utilisateur est renvoyé vers la page index header('refresh:0;url=index.php'); } include_once('lib/php/fonction.php'); include_once('meta_header.php'); include_once('nav.php'); ?> <title>admin</title> </head> <body> <div id="content"> <div> <?php $conetenu=""; //on se connecte $connection = connectBD(); if($connection) { //requête de sélection $requête = 'SELECT * FROM orders'; $resultats = $connection->query($requête); if($resultats->rowCount()>0) { //création d'une table echo ' <table class="profil" > <td class="noir" >N° de commande <b>(id)</b></td> <td class="noir">ID du Client <b>(id_client)</b></td> <td class="noir" id="name_client">nom du client <b>(name_client)</b></td> <td class="noir">Type de commande &nbsp; &nbsp;</td> <td class="noir">Description de la commande <span style="color:#17212F;">jdbfbqjhqbfjhqerbvjhbeqjhbezlJHBFHKEBF<span> </td> <td class="noir">Niveau de la commande <span style="color:#17212F;">jdbfbqjhqbfjFHKEBF<span> </td> <td class="noir">Valeur Briefing </td> <td class="noir">Valeur envoi C.H. </td> <td class="noir">Valeur accord C.H. </td> <td class="noir">Valeur Design </td> <td class="noir">Valeur Production </td> <td class="noir">Valeur Livraison </td> <td class="noir">Valeur Facture </td> <td class="noir">Facture </td> <td class="noir">Date </td> <td class="noir">Modifier </td> <td class="noir">Effacer </td>'; //boucle pour récupérer les données foreach ($resultats as $key) { $name_client = $key['name_client']; //affichage de la commande echo '<form method="GET"><tr> <legend> <td>'.$key['id'].'</td> <td>'.$key['id_client'].' </td> <td>'.$key['name_client'].' <label id="name_client" for="name_client"></label> <input id="name_client" style="" type="text" name="name_client" value="'.$name_client.'" > </td> <td>'.$key['orderType'].' <select id="orderType" name="orderType" tabindex="3"> <option value="'.$key['orderType'].'" selected>'.$key['orderType'].'</option> <option value="web">WEB</option> <option value="print">PRINT</option> <option value="strategie">STRATEGIE</option> <option value="design">DESIGN</option> <option value="all">PACKAGE : WEB - PRINT - STRATEGIE - DESIGN</option> </select> </td> <td>'.$key['orderDescr'].' <textarea id="orderDescr" name="orderDescr" spellcheck="true" rows="3" cols="50" >'.$key['orderDescr'].'</textarea></td> <td>'.$key['orderLevel'].' <select id="orderLevel" name="orderLevel" tabindex="3"> <option value="'.$key['orderLevel'].'" selected>'.$key['orderLevel'].'</option> <option value="Briefing">Briefing</option> <option value="EnvoiCH">Envoi du cahier des charges</option> <option value="AcceptCH">Acceptation du cahier des charges</option> <option value="design">Réalisation du design/visuel</option> <option value="production">En production</option> <option value="livraison">Facturation</option> </select> </td> <td>'.$key['briefingValue'].'% <input type="text" id="briefingValue" name="briefingValue" value="'.$key['briefingValue'].'" maxlength="200" placeholder=" %" style=" "> </td> <td>'.$key['envoiChValue'].'% <input type="text" id="envoiChValue" name="envoiChValue" value="'.$key['envoiChValue'].'" maxlength="200" placeholder=" %" style=""> </td> <td>'.$key['okChValue'].'% <input type="text" id="okChValue" name="okChValue" value="'.$key['okChValue'].'" maxlength="200" placeholder=" %" style=""> </td> <td>'.$key['designValue'].'% <input type="text" id="designValue" name="designValue" value="'.$key['designValue'].'" maxlength="200" placeholder=" %" style=""> </td> <td>'.$key['prodValue'].'% <input type="text" id="prodValue" name="prodValue" value="'.$key['prodValue'].'" maxlength="200" placeholder=" %" style=" "> </td> <td>'.$key['livraisonValue'].'% <input type="text" id="livraisonValue" name="livraisonValue" value="'.$key['livraisonValue'].'" maxlength="200" placeholder=" %" style=""> </td> <td>'.$key['facturValue'].'% <input type="text" id="facturValue" name="facturValue" value="'.$key['facturValue'].'" maxlength="200" placeholder=" %" style=""> </td> <td>'.$key['facturationData'].' <input type="text" name="facturationData" value="'.$key['facturationData'].'" placeholder="facture" id="facturationData"> </td> <td>'.$key['date'].'</td> <td><a alt="modifier" href="adminTRTchange.php?action=2&id='.$key['id'].'"" ><img syle="float:right;" src="img/change.png"></a> </td> <td><a alt="Supprimer" href="orderTRT.php?action=1&id='.$key['id'].'"" ><img syle="float:right;" src="img/delete.png"></a> </td> </legend> </tr>'; } echo'</table> </form>'; } } else{ $contenu = '<erreur>Erreur : Impossible de se connecter à la BD, veuillez contacter votre administrateur!</erreur>'; } ?> </div> <!--fin de la DIV content --> </div> <?php include_once('script_js.php'); ?> <script type="text/javascript"> </script> </body> </html>
Et voici la page qui traite mes commandes

Code : Tout sélectionner

<?php //on lance la session session_start(); include_once('lib/php/fonction.php'); include_once('meta_header.php'); //quand on appuie sur inscrire if(isset($_GET['action']) && isset($_GET['id'])){ //le contenu est vide $contenu=""; //on récupère les données entrées par l'administrateur $id = $_GET['id']; $name_client = $_GET['name_client']; $orderType = $_POST['orderType']; $orderDescr = $_POST['orderDescr']; $orderLevel = $_POST['orderLevel']; $briefingValue = $_POST['briefingValue']; $envoiChValue = $_POST['envoiChValue']; $okChValue = $_POST['okChValue']; $designValue = $_POST['designValue']; $prodValue = $_POST['prodValue']; $livraisonValue = $_POST['livraisonValue']; $facturValue = $_POST['facturValue']; $facturationData = $_POST['facturationData']; if($_GET['action'] == 2){ //on se connecte $connection = connectBD(); $req = $connection->query('SELECT * FROM orders WHERE id ="'.$id.'"'); if($donnee=$req->fetch()) { echo '<red>Le numéro de commande existe!</red>'; //on se connecte $connection = connectBD(); // si on se connecte if($connection){ try{ //on tente d'executer les requetes suivantes dans une transaction //on lance la transaction $connection->beginTransaction(); //si connection on prépare la requête $connection->exec('UPDATE orders SET name_client = "'.$name_client.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET orderType = '.$orderType.' WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET orderDescr = "'.$orderDescr.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET orderLevel = "'.$orderLevel.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET briefingValue = "'.$briefingValue.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET envoiChValue = "'.$envoiChValue.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET okChValue = "'.$okChValue.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET designValue = "'.$designValue.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET prodValue = "'.$prodValue.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET livraisonValue = "'.$livraisonValue.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET facturValue = "'.$facturValue.'" WHERE id='.$_GET['id']); $connection->exec('UPDATE orders SET facturationData = "'.$facturationData.'" WHERE id='.$_GET['id']); //si jusque là tout va bien, on valide la transaction $connection->commit(); unset( $connection ); $contenu = $name_client.'<red>Votre commande '.$_GET['id'].' a été modifiée avec succès!</red>'; echo $name_client; //on renvoie à la page pour remplir le formulaire de commentaire //header('refresh:3; url=order.php'); }//si erreur catch(PDOException $e){ //on annule la transaction $connection->rollback; //on affiche les erreurs $contenu = '<red> Erreur: Erreur lors de la requête, veuillez contacter votre administrateur!</red></br>'; $contenu .= '<red>Erreur: '.$e->getMessage().'</red></br>'; $contenu .= '<red>Erreur:'.$e->getCode().'</red></br>'; //on quitte, on arrête l'execution q'il y a du code après exit(); } }else{ $contenu = '<red>ERREUR : Impossible de se connecter à la BD, Veuillez contacter votre administrateur!</red><br>'; } }else{ echo "<red>cette commande n\'existe pas dans la base de données!</red>"; } } ?> <title>adminTRTorder</title> <div id="content"> <?php echo $contenu; ?> </div> <?php } ?>
Donc mes questions, comment faire pour que ça prenne en compte mes input?
Est ce dû au fait que mes champs soient dans un foreach ou soit des $key['value']?????

Merci beaucoup pour votre intéret et votre aide!!

Fatiha

Re: Problème pour un update d'une table. Notice: Undefined index: name_client in ...

Posté : 18 août 2015, 22:32
par or 1
$name_client = $_GET['name_client'];
$orderType = $_POST['orderType'];

le formulaire est envoyé en méthode get, donc $_POST ne contiendra jamais ce qui est attendu.
il me semble que le formulaire n'est pas fermé au bon endroit, donc un code html généré très crade, qui doit expliquer une partie des soucis.

Re: Problème pour un update d'une table. Notice: Undefined index: name_client in ...

Posté : 18 août 2015, 22:41
par fatiha
Tout d'abord, merci pour ta réponse rapide...

Effectivement j'ai fais tellement de chagement que j'ai oublié de tout remettre en get! mais le je l'ai fait en get et ça ne fonctionne pas. Je viens de refaire le test d'ailleurs!
J'ai remis la fermeture du formulaire au bon endroit mais ça ne change rien à mon problème...

Re: Problème pour un update d'une table. Notice: Undefined index: name_client in ...

Posté : 19 août 2015, 10:01
par xTG
As-tu affiché le contenu de $_GET pour vérifier que tu avais tout ce que tu voulais ?
As-tu mis un echo dans tes conditions pour savoir si tu passais dedans ou non ?
As-tu activé les erreurs PDO pour savoir quand une requête échoue ?