perdue....

Eléphanteau du PHP | 10 Messages

19 mars 2008, 11:23

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]

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 mars 2008, 14:42

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.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 10 Messages

19 mars 2008, 15:17

merci pour ta réponse.

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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 mars 2008, 15:41

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')"
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Administrateur PHPfrance
Administrateur PHPfrance | 449 Messages

19 mars 2008, 19:54

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.
Cordialement
Saeveas

http://saeveas.labrute.fr