Page 1 sur 1

perdue....

Posté : 19 mars 2008, 11:23
par ranlaris
Bonjour,

Je travaille sur un fichier qui commence a me depasser.
Le principe est de récuperer des donners dans une table A, d'y ajouter un temps d'utilisation puis de l'enregistrer dans une table B
j'ai déja pas mal avancé mais ca ne fonctionne toujours pas.
J'avoue que je calle completement.
je ne vois pas ce qui manque ou ce qui empeche l'enregistrement dans la table.
Une bonne ame pourrait-elle regarder un peu tout ca et me donner un coup de main ???
merci !!!


le ficher

Code : Tout sélectionner

<? if ($PHPSESSID && is_file("/tmp/sess_".$PHPSESSID) ) session_start($PHPSESSID); else { echo "<script language='JavaScript'>\n document.location.replace('index.php'); </script>\n"; exit(); } include(load_lang($user_lang)) ; if ( $admin == 0 ) exit ; $profils_tab = array() ; $NB_MAX_POSITION = 16 ; echo "<h1>Creation d'un cycle</h1>\n" ; if ( $ok == 1 ) { print "<p>OK !</p>\n" ; } if ( $err == 1 ) { print "<p>Erreur !</p>\n" ; } $connexion = mysql_connect("$sql_host","$sql_user","$sql_pass"); $db = mysql_select_db("$sql_db", $connexion); if ( ! $connexion || ! $db) { echo "<p>ERREUR DE CONNEXION</p>\n"; exit ; } /* RECUPERATION DES PROFILS EXISTANTS */ $query = "SELECT * FROM `vis_profil` ORDER BY `id_profil` ASC "; if ( ! ($profils_sql = mysql_query($query,$connexion)) ) { echo "<p>ERREUR DE REQUETE</p>\n"; mysql_close($connexion) ; exit() ; } //Utiliser cette boucle pour remplir les options de la liste des profils $profils_options = "<option value=\"\">-- selectionnez --</option>"; for ( $i=0 ; $i<mysql_num_rows($profils_sql) ; $i++ ) { $id_profil_temp = mysql_result($profils_sql,$i,"id_profil") ; $name_temp = mysql_result($profils_sql,$i,"name") ; $profils_options .= "<option value=\"$id_profil_temp\">$name_temp</option>" ; } mysql_free_result($profils_sql) ; /* FIN */ /* AFFICHAGE DU FORMULAIRE SI PROFILS */ if ( $profils_options == "<option value=\"\">-- sélectionnez --</option>" ) { echo "<p>Desole, aucun profil !</p>\n" ; } else { echo "<form action=\"add_line.php\" method=\"post\">\n" ; echo "<p><b>Name : </b> <input type=\"text\" name=\"name\" size=\"16\" value=\"$NAME_UPDATE\" /></p>\n" ; //Afficher plusieurs fois la liste des profils for ( $pos=1 ; $pos <= $NB_MAX_POSITION ; $pos++ ) { echo "<p><b>POS $pos</b> --> Profil : <select name=\"profil_${pos}\">" . $profils_options . "</select>"; //selection du sleep echo"<label for=\"\">\"temps de pause\"</label><br />"; echo"<select name=\"sleep\" id=\"sleep\">"; echo"<option value=\"temps de pause\">--temps de pause--</option>"; echo"<option value=\"10\">10</option>"; echo"<option value=\"15\">15</option>"; echo"<option value=\"30\">30</option>"; echo"<option value=\"45\">45</option>"; echo"<option value=\"60\">60</option>"; echo "</select></p>\n" ; } } echo "<p><input type=\"submit\" value=\"ajouter\" /></p>\n" ; echo "</form>\n" ; echo "<p><a href=\"configure_cycle.php\">[Annuler]</a></p>\n" ;

le fichier de fonction

Code : Tout sélectionner

<? $connexion = mysql_connect("$sql_host","$sql_user","$sql_pass"); $db = mysql_select_db("$sql_db", $connexion); $name=$_POST["name"]; $profil_tab = array() ; $sleep_tab = array() ; for ( $i=0 ; $i<16 ; $i++) { $profil_temp = $_POST["profil_${i}"] ; $sleep_temp = $_POST["sleep_${i}"] ; if ( strcmp($profil_temp,"") != 0 && strcmp($sleep_temp,"") != 0 ) { array_push($profil_tab, $profil_temp) ; array_push($sleep_tab,$sleep_temp) ; } } $profils_line = implode(":",$profil_tab) ; $sleep_line = implode(":",$sleep_tab) ; if ( mysql_query("insert into `vis_cycle` (`id`,`name`,`profil`,`sleep`) values('','$name','$profils_line','$sleep_line')",$connexion) ) { $res = "ok" ; } else { $res = "erreur" ; } //header("Location: create_cycle.php"); ?>
merci de votre aide T_T[/code]

Posté : 19 mars 2008, 14:42
par sadeq
C'est le champ "sleep" qui pose problème car tu le récupère par le POST sous le nom:

Code : Tout sélectionner

$_POST["sleep_${i}"]
alors que dans le formulaire il a un nom différent :

Code : Tout sélectionner

echo"<select name=\"sleep\" id=\"sleep\">";

Correction
: dans le formulaire tu doit appelé ce champ avec le même nom du POST :

Code : Tout sélectionner

echo"<select name=\"sleep_${pos}\" id=\"sleep\">";
où $pos est ton compteur de position.

Posté : 19 mars 2008, 15:17
par ranlaris
merci pour ta réponse.

je viens de tester avec ta correction, malheureusement, ca ne fonctionne toujours pas
je ne sais plus que faire

Posté : 19 mars 2008, 15:41
par sadeq
C'est quoi qui marche pas !

Fais un débogage :
Fais un print_r($_POST); pour voir si tes données sont bien envoyées par le formulaire.
Fais un print_r de tous les tableaux que tu calcules pour voir s'ils se remplissent correctement
Fais un echo de l'instruction insert en la mettant dans une variable

NB:
Dans l'insert quand l'id d'un enregistrement est auto-incrémenté, il ne faut pas l'inclure.

Code : Tout sélectionner

insert into `vis_cycle` (`name`,`profil`,`sleep`) values ('$name','$profils_line', '$sleep_line')"

Posté : 19 mars 2008, 19:54
par SAEVEAS
Bonjour,

Merci de prendre le temps de lire les règles du forum.

- Utilise un titre pertinant pour ton probleme, ce n'est pas un site d'avis de recherche.
- Merci de prendre le temps de répondre aux personnes qui t'aide. Pour rappelles c'est au demandeur de fournir les efforts et non l'inverse.