Problème affichage des données du formulaire php
RésoluLaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je me retrouve devant un problème que j'ai du mal à comprendre. J'ai une page PHP dont je saisie les oeuvres musicales avec un formulaire de 4 champs. 1 champ de type texte, 1 de type="checkbox et 2 champs avec liste déroulante issue de ma base de donnée. Lorsque je souhaite faire une modification je saisie le lien d'une œuvre pour effectuer la modification d'un enregistrement et malheureusement les 2 champs de liste déroulante me retourne les dernières valeurs de ses listes et non les valeurs concernés par l’œuvre sélectionnée. J'ai fait un var_dump et cela retourne bien le bon ID de l’œuvre et idem lorsque je survol les liens. Je vous remercie beaucoup pour votre aide. Voici le page concernée.
<?php $index = 2; require("libs/init.php"); require("libs/class.liste.php"); $debug = 0; $LDorch = new liste("libs/orchestrations","",""); $LDaut = new liste("libs/auteurs","",""); $action = 'new'; $a = !empty($_GET['a']) ? $_GET['a'] : NULL; $submit = !empty($_POST['submit']) ? $_POST['submit'] : NULL; $haction = !empty($_POST['haction']) ? $_POST['haction'] : NULL; $idoeu = !empty($_REQUEST['idoeu']) ? $_REQUEST['idoeu'] : NULL; $oeuvre = !empty($_POST['oeuvre']) ? ucfirst(stripslashes($_POST['oeuvre'])) : ''; $idaut = !empty($_POST['idaut']) ? $_POST['idaut'] : ''; $idorch = !empty($_POST['idorch']) ? $_POST['idorch'] : ''; $conduct = !empty($_POST['conduct']) ? $_POST['conduct'] : ''; switch($a) { case 'new': $action = 'new'; break; case 'ls' : $action = 'list'; break; case 'mod': $action = 'mod'; break; default : $action = 'new'; break; } if($submit) { switch($haction) { case 'new': $sql = "SELECT oeuvre, idorch FROM cdc_oeuvres WHERE oeuvre = :oeuvre AND idorch = :idorch"; $datas = array('oeuvre' => $oeuvre, 'idorch' => $idorch); $result = executeQuery($sql,$datas); $nb = $result->rowCount(); if ($nb > 0) { $erreur = "<span class='erreur'>Cet Oeuvre de cette orchestration existe déjà</span>"; } else { $sql = "INSERT INTO cdc_oeuvres (oeuvre, idaut, idorch, conduct) VALUES (:oeuvre, :idaut, :idorch, :conduct)"; $datas = array('oeuvre' => $oeuvre, 'idaut' => $idaut, 'idorch' => $idorch, 'conduct' => $conduct); $result = executeQuery($sql,$datas); $typenr = "enregistré"; $reqaj = $sql; $success = "<span class='success'>La nouvelle oeuvre - ".trim(stripslashes("$oeuvre"))." - a été $typenr.</span>"; } break; case 'mod': $sql = "UPDATE cdc_oeuvres SET oeuvre = :oeuvre, idaut = :idaut, idorch = :idorch, conduct = :conduct WHERE idoeu = :idoeu"; $datas = array('oeuvre' => $oeuvre, 'idaut' => $idaut, 'idorch' => $idorch, 'conduct' => $conduct, 'idoeu' => $idoeu); $result = executeQuery($sql,$datas); $typenr = "modififié"; $reqmod = $sql; $success = "<span class='success'>L'oeuvre - ".trim(stripslashes("$oeuvre"))." - a été $typenr.</span>"; break; } } switch($action) { case 'new': $title = "Saisie d'une Oeuvre"; $btsub = "Enregistrer"; $idoeu = ""; $oeuvre = ""; $idaut = ""; $idorch = ""; $conduct = ""; break; case 'list': $title = "Liste des Oeuvres"; break; case 'mod': $title = "Modification d'une Oeuvre"; $btsub = "Modifier"; $sql = "SELECT * FROM cdc_oeuvres WHERE idoeu = :idoeu"; $datas = array('idoeu' => $idoeu); $result = executeQuery($sql,$datas); $donnees = $result->fetch(); $idoeu = $donnees->idoeu; $oeuvre = ucfirst(stripslashes($donnees->oeuvre)); $idaut = $donnees->idaut; $idorch = $donnees->idorch; $conduct = $donnees->conduct; break; } ?> <html> <head> <?php headers(25); ?> <script language="javascript" type="text/javascript"> //================================================== // NB: Les fonctions is...() ne retournent que Vrai ou Faux. // Les fonctions isValid...() retournent OK ou un message d'erreur //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Teste si le caractère passé en paramètre (c) est un caractère autorisé (liste en paramètre) function isCharInList(c,list) { var c,list; if (list.indexOf(c.toLowerCase()) < 0) { return false; } else { return true; } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Teste si tous les caractères de la chaine passée en paramètre (str) sont autorisés // Fonction dépendante de isCharInList() function isStringInList(str,list) { var str,list,n; for (n=0; n<str.length; n++) { if (!isCharInList(str.substring(n,n+1),list)) { return false; } } return true; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Teste si les caractères passés en paramètre corespondent à un TDL valide function isTLD(tld) { var tld,domains; domains = "com|net|int|org|edu|mil|gov|af|al|dz|as|ad|ao|ai|aq|ag|ar|am|aw|ac|au|at|" + "az|bh|bd|bb|by|be|bz|bj|bm|bt|bo|ba|bw|bv|br|io|bn|bg|bf|bi|gg|je|kh|cm|ca|" + "cv|ky|td|cl|cn|cx|cc|co|km|cg|ck|cr|ci|hr|cf|cu|cy|cz|dk|dj|dm|do|tp|ec|eg|" + "sv|gq|er|ee|et|fk|fo|fj|fi|gf|pf|tf|fr|fx|ga|gm|ge|de|gh|gi|gr|gl|gd|gp|gu|" + "gt|gn|gw|gy|ht|hm|hn|hk|hu|is|in|id|ir|iq|ie|im|il|it|jm|jp|jo|kz|ke|ki|kp|" + "kr|kw|kg|la|lv|lb|ls|lr|ly|li|lt|lu|mo|mk|mg|mw|my|mv|ml|mt|mh|mq|mr|mu|yt|" + "mx|fm|md|mc|mn|ms|ma|mz|mm|mp|na|nr|np|an|nl|nc|nz|ni|ne|ng|nu|nf|no|om|pk|" + "pw|pa|pg|py|pe|ph|pn|pl|pt|pr|qa|re|ro|ru|rw|gs|lc|ws|sm|st|sa|sn|sc|sl|sg|" + "sk|si|sb|so|za|es|lk|sh|kn|pm|vc|sd|sr|sj|sz|se|ch|sy|tw|tj|tz|th|bs|tg|tk|" + "to|tt|tn|tr|tm|tc|tv|um|ug|ua|uk|us|uy|ae|uz|vu|va|ve|vn|vg|vi|wf|eh|ye|yu|" + "zr|zm|zw|eu|" + "biz|info|aero"; if (domains.indexOf(tld.toLowerCase()) < 0) { return false; } else { return true; } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Teste le format d'une adresse email. // Fonction dépendante de isTLD() // Login non null, doit contenir "@" dans l'adresse, un point dans le domaine et un TLD valide function isEmail(address) { var address,parts,domains; if (address.indexOf("@") <= 0) { return false; } parts = address.split("@"); if (parts[0].length == 0) { return false; } if (parts[1].indexOf(".") <= 0) { return false; } domains = parts[1].split("."); if (!isTLD(domains[domains.length-1])) { return false; } return true; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Teste le format d'une date (JJ/MM/AAAA ou MM/JJ/AAAA). function isDate(date) { var date, reg = new RegExp("^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$","g"); if(reg.test(date)) { return true; } else { return false; } } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Teste la validité d'une date française (JJ/MM/AAAA). // Fonction dépendante de isDate() function isValidDate(date) { var date,tab; if(isDate(date)) { tab=date.split('/'); if((tab[0]*1)<1 || (tab[0]*1)>31) { return "Jour incorrect"; } if((tab[1]*1)<1 || (tab[1]*1)>12) { return "Mois incorrect"; } return "OK"; } return "Format date incorrect"; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Teste la validité d'un champ de type texte (longueur et caractères autorisés) // Fonction dépendante de isStringInList() function isValidText(champ,chars,li,ls) { var champ,chars,li,ls,lg,msg; lg = champ.length; if(li || ls) { if(lg < li) { msg = "Saisie trop courte:\nMinimum : "+li; return msg; } if(lg > ls) { msg = "Saisie trop longue:\nMaximum : "+ls; return msg; } } if(!isStringInList(champ,chars)) { msg = "Caractères interdits !"; return msg; } return "OK"; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Supprime les espaces de début et de fin de chaîne function trim(myString) { return myString.replace(/^\s+/g,'').replace(/\s+$/g,''); } //========================================================================================== // Variables diverses var today = new Date(); var annee = today.getFullYear(); // Listes des (c)aractères classiques (a)utorisés (ca_*) dans les différents champs de saisie var ascii = "abcdefghijklmnopqrstuvwxyz"; var lettres = "abcdefghijklmnopqrstuvwxyzàâäéèêëîïùûüçôö"; var chiffres = "0123456789"; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Caractères autorisés // Champs testés: ca_oeuvre = lettres + chiffres + "-,. '()°!"; function verif() { // Récupération des valeurs du formulaire idoeu = document.oeuv.idoeu.value; // Si modification d'une oeuvre oeuvre = document.oeuv.oeuvre.value; // saisie obligatoire idaut = document.oeuv.idaut.options[document.oeuv.idaut.selectedIndex].value; idorch = document.oeuv.idorch.options[document.oeuv.idorch.selectedIndex].value; // Test de la présence et de la validité des champs obligatoires. if(!oeuvre) { alert("Veuillez indiquer L'oeuvre musicale"); document.oeuv.oeuvre.focus(); return false; } msg = isValidText(oeuvre,ca_oeuvre,2,60); if(msg != "OK") { alert("Oeuvre :\n"+msg); document.oeuv.oeuvre.focus(); return false; } return true; } </script> </head> <body> <div id="smen"><?php echo writeMenuV($index); ?></div> <div id="pg" style="padding-left:50px; padding-top:25px"> <!-- ~~~~~ Contenu de la page ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <?php echo '<div>'.$success.'</div>'; echo '<div>'.$erreur.'</div>'; echo '<br/>'; // Instructions à réaliser s'il faut lister if($action == 'list') { echo '<h1>'.$title.'</h1>'; // Lister les années pour y accéder directement echo '<h2>Index</h2>'; $tm = '|'; // "Table des matières" $nbl = 0; // Nombre de lettres for($n = 65; $n <= 90; $n++) { $lettre = chr($n); $tm .= ' <a href="#a'.$lettre.'">'.$lettre.'</a> |'; $nbl++; if($nbl == 13) { $tm .= '<br/>|'; } } echo '<div style="font-family:courier">'.$tm.'</div>'; // Lister tous les enregistrements avec un lien pour effectuer la modif d'un enregistrement $sql = "SELECT * FROM cdc_orchestrations RIGHT JOIN cdc_oeuvres ON cdc_oeuvres.idorch = cdc_orchestrations.idorch ORDER BY oeuvre"; $result = executeQuery($sql,$datas); echo '<h2>Oeuvres</h2>'; echo '<ul>'; while ($donnees = $result->fetch()) { $lien = $_SERVER["PHP_SELF"].'?a=mod&idoeu='.$donnees->idoeu; $initiale = substr($donnees->oeuvre,0,1); echo '<li><a name="a'.$initiale.'"></a><a href="'.$lien.'">'.stripslashes(ucfirst($donnees->oeuvre)).' => '.$donnees->orches.' [ '.$donnees->conduct.' ]</a></li>'; } echo '</ul>'; // Ecrire bas de page et sortir : listage fini. echo dmaj("sais_oeuvre.php"); echo "</div></body></html>"; exit; } $checked = $conduct ? " checked " : ""; echo '<form method="post" name="oeuv" action="'.$_SERVER["PHP_SELF"].'" onsubmit="return verif()">'; echo '<h1>'.$title.'</h1>'; echo '<table>'; echo '<tr>'; echo '<td class="libel">Oeuvre</td>'; echo '<td class="data"><input type="text" name="oeuvre" size="25" value="'.$oeuvre.'" class="oblig" /></td>'; echo '</tr><tr>'; echo '<td class="libel">Auteur d\'appartenance</td>'; echo '<td class="data">'; echo $LDaut->write($idaut).'</td>'; echo '</tr><tr>'; echo '<td class="libel">Orchestration</td>'; echo '<td class="data">'; echo $LDorch->write($idorch).'</td>'; echo '</tr><tr>'; echo '<td>'; //Le for du label doit-être identique à l'id de l'input echo '<input type="checkbox" id="conducteur" class="css-conducteur" name="conduct" value="1" '.$checked.' />'; echo '<label for="conducteur" class="css-conducteur">Conducteur<br/> original</label>'; echo '</td>'; echo '</tr>'; echo '<td>'; echo '<input type="hidden" name="haction" value="'.$action.'" />'; echo '<input type="hidden" name="idoeu" value="'.$idoeu.'" />'; echo '</td>'; echo '<td class="data"><input type="submit" name="submit" value="'.$btsub.'" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; echo '<p>NB: La saisie dans les zones à fond jaune pâle est obligatoire.</p>'; var_dump($idoeu); // Debuggage if($debug) { echo '<div style="font-family:courier">'; echo '<hr>DEBUGAGE:<br/>'; echo '$action: '.$action.'<br/>'; echo '$title: '.$title.'<br/>'; echo '$sql: '.$sql.'<br/>'; echo 'requete ajout: '.$reqaj.'<br/>'; echo 'requete modif: '.$reqmod.'<br/>'; echo '</div>'; } ?> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> </div> <?php echo dmaj("sais_oeuvre.php"); ?> </body> </html>
- Problème affichage des données du formulaire php
- Whatsapp formulaire opposition - Guide
- Fuite données maif - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Trier des données excel - Guide
- Formulaire de reclamation instagram - Guide
23 réponses
donc j'ai cette erreur!
Warning: Array to string conversion in C:
sur cette ligne
$thisrec = !empty($donnees->$champs) && is_array($donnees->$champs) && $indice == $donnees->$champs[$idnum] ? 1 : 0 ;
voici ce que j'ai modifié
$ch = implode(',',$champs); $thisrec = !empty($donnees->$ch) && is_array($donnees->$ch) && $indice == $donnees->$ch[$idnum] ? 1 : 0 ;
du coup je n'ai plus de message d'erreur mais aucun résultat