|
Publicité | ||||||||||||||||||||||
|
|
#1 (permalink) |
|
Invité régulier
![]() Date d'inscription: janvier 2008
Messages: 13
|
Bonjour, je vous expose mon problème. J'ai un formulaire avec des checkbox qui récupère le nom des fichier sur un ftp en valeur. Avec les checkbox j'ai aussi plusieurs select qui récupère des éléments de ma bdd, plus un champ texte.
voici un screen pour mieux comprendre: ![]() donc j'enregistre les données de se formulaire via un méthode POST et avec une requête insert, tout marche pour le mieux pour le moment, sauf que lors de mes tests je me suis rendu compte que si je coche une checkbox en plein milieu de mon tableau en laissant des checkbox vide au dessus, alors l'insertion de se fait pas correctement dans la bdd., puis que seulement le nom du fichier y est inséré. Je pense que cela vient du fait que le rang du tableau n'est pas retrouvé pour les autres informations, alors comment faire? voici mon code d'insertion dans la bdd Code :
if(isset($_POST['id_fichiers']) && isset($_POST['envoyerup'])) { for ($i = 0; $i < count($_POST['id_fichiers']); $i++) { mysql_query("INSERT INTO upload_fiche(nom_up_fiche, fk_type_fiche, fk_fiche, url_up_fiche) VALUES ('".$_POST['nom_up_fiche'][$i]."','".$_POST['type_fiche'][$i]."','".$_POST['nom_fiche'][$i]."','".$_POST['id_fichiers'][$i]."')"); } } |
|
|
|
|
|
#2 (permalink) |
![]() Date d'inscription: juillet 2005
Messages: 9 977
|
Pour parcourir un tableau, il faut utiliser foreach().
Aller de 0 à x, ca ne marche que si le tableau est parfaitement indexé numériquement, ce qui n'est pas ton cas lorsque les cases ne sont pas toutes cochées. |
|
|
|
|
|
#3 (permalink) |
|
Invité régulier
![]() Date d'inscription: janvier 2008
Messages: 13
|
Bonsoir, alors je pense avoir suivie ton idée, mais malheureusement cela n'a pas résolu mon problème.
Seul id_fichiers est enregistré dans la bdd dans le cas ou une checkbox est laissé vide avant celle sélectionné. Je vous donne un morceau de mon code, on ne sait jamais. Code :
<?php if(isset($_POST['id_fichiers']) && isset($_POST['envoyerup'])) { foreach($_POST['id_fichiers'] as $key => $contenu) { mysql_query("INSERT INTO upload_fiche(nom_up_fiche, fk_type_fiche, fk_fiche, url_up_fiche) VALUES ('".$_POST['nom_up_fiche'][$key]."','".$_POST['type_fiche'][$key]."','".$_POST['nom_fiche'][$key]."','$contenu')"); echo '<p>Votre enregistrement s\'est déroulé avec succes!<br />'; } } ?> <form action="" method="post" enctype="multipart/form-data" > <?php $folder = "./admin/fichiers/"; $dossier = opendir("./admin/fichiers/"); $i=0; while ($Fichier = readdir($dossier)) { if($Fichier!='.' and $Fichier!='..' and $Fichier!=NULL) { ?> <table><tr <?php if(($i%2)==0){echo' style="background-color:#c7defb"'; }else {echo' style="background-color:#e3eefc"';} ?> > <?php echo'<td><select name="nom_fiche[]" class="mid">'; $resultat=mysql_query("select num_fiche, nom_fiche from fiche order by num_fiche asc"); $ligne=mysql_fetch_assoc($resultat); echo'<option value="indiquez votre classe"selected="selected">- Fiches -</option>'; if($ligne) // affichage des employés dans une listebox. { echo '<option value="'.$ligne["num_fiche"].'">'.$ligne["nom_fiche"].'</option>'; $ligne=mysql_fetch_assoc($resultat); while($ligne) { echo '<option value="'.$ligne["num_fiche"].'">'.$ligne["nom_fiche"].'</option>'; $ligne=mysql_fetch_assoc($resultat); } } echo '</select>'; echo'<select name="type_fiche[]" class="mid">'; $resultat=mysql_query("select id_T_fiche, nom_T_fiche from type_fiche order by id_T_fiche asc"); $ligne=mysql_fetch_assoc($resultat); echo'<option value="indiquez votre classe"selected="selected">- Type de document -</option>'; if($ligne) // affichage des employés dans une listebox. { echo '<option value="'.$ligne["id_T_fiche"].'">'.$ligne["nom_T_fiche"].'</option>'; $ligne=mysql_fetch_assoc($resultat); while($ligne) { echo '<option value="'.$ligne["id_T_fiche"].'">'.$ligne["nom_T_fiche"].'</option>'; $ligne=mysql_fetch_assoc($resultat); } } echo '</select>'; echo '<input type="text" name="nom_up_fiche[]" value="Nom du fichier" size="15" />'; echo"<input type='checkbox' name='id_fichiers[]' value='$Fichier' /></td><td align='left'><a href=\"$folder/$Fichier \" title=$Fichier>Fichier *</a>"; echo""; $filename= $Fichier; $extension=strrchr($filename,'.'); $extension=substr($extension,-3,3) ; if( $extension == 'doc') { echo'<img src="./admin/icon_doc/doc_word.png">'; } if( $extension == 'txt') { echo'<img src="./admin/icon_doc/doc_txt.png">'; } if( $extension == 'csv') { echo'<img src="./admin/icon_doc/doc_excel.png">'; } if( $extension == 'jpg' or $extension == 'jpeg' or $extension == 'gif' or $extension == 'png' or $extension == 'bmp') { echo'<img src="./admin/icon_doc/doc_img.png">'; } if( $extension == 'pdf') { echo'<img src="./admin/icon_doc/doc_pdf.png">'; } echo"</td></tr></table>"; } $i++; } closedir($dossier); echo'<input type="reset" name= "supprimer_up" class="bouton" value ="Effacer"/>' ; echo'<input type="submit" name="envoyerup" class="bouton" value="Envoyer"/></form>'; } |
|
|
|
|
|
#7 (permalink) |
|
Invité régulier
![]() Date d'inscription: janvier 2008
Messages: 13
|
erf désolé
alors pour le print_r voici ce que j'obtiens: Code :
Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) ArrayEnvoyer Votre enregistrement s'est déroulé avec succes! Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) ArrayEnvoyer Votre enregistrement s'est déroulé avec succes! Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) ArrayEnvoyer Votre enregistrement s'est déroulé avec succes! Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) ArrayEnvoyer Votre enregistrement s'est déroulé avec succes! Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) ArrayEnvoye [IMG=http://img43.imageshack.us/img43/5306/testgv.jpg][/IMG] Même lien au cas ou : ![]() Et voila ce que je reçois en bdd : [IMG=http://img43.imageshack.us/img43/2029/test2kn.jpg][/IMG] Même lien au cas ou : ![]() Encore merci pour ta patience. |
|
|
|
|
|
#9 (permalink) |
|
Invité régulier
![]() Date d'inscription: janvier 2008
Messages: 13
|
oula pas mal de chose
Code :
Array ( [nom_fiche] => Array ( [0] => 53 [1] => 52 [2] => indiquez une fiche [3] => indiquez une fiche [4] => indiquez une fiche [5] => indiquez une fiche [6] => 52 [7] => 53 [8] => 53 [9] => indiquez une fiche ) [type_fiche] => Array ( [0] => 2 [1] => 6 [2] => indiquez un type de document [3] => indiquez un type de document [4] => indiquez un type de document [5] => indiquez un type de document [6] => 3 [7] => 12 [8] => 6 [9] => indiquez un type de document ) [nom_up_fiche] => Array ( [0] => test1 [1] => test2 [2] => Nom du fichier [3] => Nom du fichier [4] => Nom du fichier [5] => Nom du fichier [6] => test3 [7] => test4 [8] => test5 [9] => Nom du fichier ) [id_fichiers] => Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) [envoyerup] => Envoyer ) ArrayEnvoyer Votre enregistrement s'est déroulé avec succes! Array ( [nom_fiche] => Array ( [0] => 53 [1] => 52 [2] => indiquez une fiche [3] => indiquez une fiche [4] => indiquez une fiche [5] => indiquez une fiche [6] => 52 [7] => 53 [8] => 53 [9] => indiquez une fiche ) [type_fiche] => Array ( [0] => 2 [1] => 6 [2] => indiquez un type de document [3] => indiquez un type de document [4] => indiquez un type de document [5] => indiquez un type de document [6] => 3 [7] => 12 [8] => 6 [9] => indiquez un type de document ) [nom_up_fiche] => Array ( [0] => test1 [1] => test2 [2] => Nom du fichier [3] => Nom du fichier [4] => Nom du fichier [5] => Nom du fichier [6] => test3 [7] => test4 [8] => test5 [9] => Nom du fichier ) [id_fichiers] => Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) [envoyerup] => Envoyer ) ArrayEnvoyer Votre enregistrement s'est déroulé avec succes! Array ( [nom_fiche] => Array ( [0] => 53 [1] => 52 [2] => indiquez une fiche [3] => indiquez une fiche [4] => indiquez une fiche [5] => indiquez une fiche [6] => 52 [7] => 53 [8] => 53 [9] => indiquez une fiche ) [type_fiche] => Array ( [0] => 2 [1] => 6 [2] => indiquez un type de document [3] => indiquez un type de document [4] => indiquez un type de document [5] => indiquez un type de document [6] => 3 [7] => 12 [8] => 6 [9] => indiquez un type de document ) [nom_up_fiche] => Array ( [0] => test1 [1] => test2 [2] => Nom du fichier [3] => Nom du fichier [4] => Nom du fichier [5] => Nom du fichier [6] => test3 [7] => test4 [8] => test5 [9] => Nom du fichier ) [id_fichiers] => Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) [envoyerup] => Envoyer ) ArrayEnvoyer Votre enregistrement s'est déroulé avec succes! Array ( [nom_fiche] => Array ( [0] => 53 [1] => 52 [2] => indiquez une fiche [3] => indiquez une fiche [4] => indiquez une fiche [5] => indiquez une fiche [6] => 52 [7] => 53 [8] => 53 [9] => indiquez une fiche ) [type_fiche] => Array ( [0] => 2 [1] => 6 [2] => indiquez un type de document [3] => indiquez un type de document [4] => indiquez un type de document [5] => indiquez un type de document [6] => 3 [7] => 12 [8] => 6 [9] => indiquez un type de document ) [nom_up_fiche] => Array ( [0] => test1 [1] => test2 [2] => Nom du fichier [3] => Nom du fichier [4] => Nom du fichier [5] => Nom du fichier [6] => test3 [7] => test4 [8] => test5 [9] => Nom du fichier ) [id_fichiers] => Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) [envoyerup] => Envoyer ) ArrayEnvoyer Votre enregistrement s'est déroulé avec succes! Array ( [nom_fiche] => Array ( [0] => 53 [1] => 52 [2] => indiquez une fiche [3] => indiquez une fiche [4] => indiquez une fiche [5] => indiquez une fiche [6] => 52 [7] => 53 [8] => 53 [9] => indiquez une fiche ) [type_fiche] => Array ( [0] => 2 [1] => 6 [2] => indiquez un type de document [3] => indiquez un type de document [4] => indiquez un type de document [5] => indiquez un type de document [6] => 3 [7] => 12 [8] => 6 [9] => indiquez un type de document ) [nom_up_fiche] => Array ( [0] => test1 [1] => test2 [2] => Nom du fichier [3] => Nom du fichier [4] => Nom du fichier [5] => Nom du fichier [6] => test3 [7] => test4 [8] => test5 [9] => Nom du fichier ) [id_fichiers] => Array ( [0] => bebe_blanc2.jpg [1] => bebe_noir.jpg [2] => bebe_violet.jpg [3] => Classeur1.csv [4] => pdf_Circulaire_DRT_200410.pdf ) [envoyerup] => Envoyer ) ArrayEnvoyer |
|
|
|
|
|
#10 (permalink) |
![]() Date d'inscription: juillet 2005
Messages: 9 977
|
Bon reprenons sérieusement
1 - il faut forcer l'index de tes tableaux, sinon les checkbox sont decalées par rapport aux autres champs. 2 - revoir la façon dont tu ecris tes fetch 3 - il ne faut pas faire les requêtes a chaque tour de boucle : actuellement si tu as 100 fichiers, tu vas interroger à chaque fois la base pour avoir la même liste déroulante ; tu peux même avoir une fonction pour faire tes listes, ca economise du code et il devient plus lisible Code :
// fonction pour écrire les listes, réutilisable partout function array_to_select($tableau, $name, $default) { $output = '<select name="' . $name . '" class="mid">'; $output .= '<option value="" selected="selected">' . $default . '</option>'; foreach ($tableau as $value=>$label) { $output .= '<option value="'.$value.'">'.$label.'</option>'; } return $output; } // récupération des fiches $resultat=mysql_query("select num_fiche, nom_fiche from fiche order by num_fiche asc"); while ($row = mysql_fetch_assoc($resultat)) { $tblFiche[$row['num_fiche']] = $row['num_fiche']; } $select_fiche = array_to_select($tblFiche, "nom_fiche[$i]", "- Fiches -"); // récupération des types $resultat=mysql_query("select id_T_fiche, nom_T_fiche from type_fiche order by id_T_fiche asc"); while ($row = mysql_fetch_assoc($resultat)) { $tblTypeFiche[$row['id_T_fiche']] = $row['nom_T_fiche']; } $select_type = array_to_select($tblTypefiche, "type_fiche[$i]", "- Type de document -"); $i = 0; while ($Fichier = readdir($dossier)) { if($Fichier!='.' and $Fichier!='..' and $Fichier!=NULL) { $background-color = ($i%2 ==0) ? "#c7defb" : "#e3eefc"; echo '<table> <tr style="background-color:' . $background-color . '" >'; echo '<td>' . $select_fiche . '<td>'; echo '<td>' . $select_type . '<td>'; echo '<input type="text" name="nom_up_fiche[' . $i . ']" value="Nom du fichier" size="15" />'; echo '<input type="checkbox" name="id_fichiers[' . $i .']' value="' . $Fichier . '"/></td> <td align="left"><a href="'. $folder . '/' . $Fichier . '" title="' $Fichier .'>Fichier *</a>'; ...... ...... $i++; } |
|
|
|
|
|
![]() |
||
Problème de récupération de données
|
||
| Outils de la discussion | |
|
|