|
|
|
|
Configuration: Windows 2000 Firefox 2.0.0.14
Re, alors, procédons par étape.
La première zone de texte n'est pas remplit pour la simple raison que tu ne fais aucune requête sur ta base et n'attribut donc aucune valeur à ta zone de texte. Voilà un code qui devrait fonctionner un peu mieux :
<?
$req0 = "SELECT MAX(IdSortie)+1 as num_sortie FROM sorties;";
$res0 = @mysql_query($req0,$conn);
$numSortie = "Undetermined"; // --- Default value if not retrieved from the database
if ( $res0 != null && @mysql_num_rows($res0) == 1 ){
$line = @mysql_fetch_assoc($res0);
$numSortie = $line["num_sortie"];
}
?>
<p>Numero de sortie</p>
<input type="text" name="numsortie" value="<?php echo $numSortie; ?>">
Ce code n'a pas été testé donc il y a peut-être des erreurs de syntaxe. Pour le reste je regarde et je repost. ~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
|
jai essayé il y a aucune erreur qui se marque et la zone de texte est toujours desesperement vide :( |
Même remarque pour le champ de la date de sortie :
Non formatée :
<p>Date de sortie</p>
<input type="text" name="date" value="<?php echo $_POST["date"]; ?>">
<?
$date = $_POST['date'];
$tabdate = split(",", $_POST['date']);
$date = $tabdate[2] ."-".$tabdate[1]."-".$tabdate[0];
$ajout = "INSERT INTO sorties('date') VALUES ('$date')";
$query = mysql_query($ajout);
?>
Formatée :
<?
$date = $_POST['date'];
$tabdate = split(",", $_POST['date']);
$date = $tabdate[2] ."-".$tabdate[1]."-".$tabdate[0];
$ajout = "INSERT INTO sorties('date') VALUES ('$date')";
$query = mysql_query($ajout);
?>
<p>Date de sortie</p>
<input type="text" name="date" value="<?php echo $date; ?>">
Au passage, le $conn que j'ai utilisé correspond à ton $db. ~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
|
En fait, ta page elle est sensée faire quoi exactement ?
Tu as une page avant celle-ci ou pas ? Car de ce que je vois tu fais des ajouts dans ta base de données, ce qui correspondrait donc à une page de traitement d'un formulaire, or je vois aussi de l'affichage... Que veux-tu faire exactement dans cette page ? ~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
|
Ok dans ce cas ce n'est pas fait correctement,
la partie d'enregistrement de tes informations devrait être faite dans un second script et non à l'intérieur du script qui affiche le formulaire. Si tu as besoin de savoir comment gérer un formulaire d'enregistrement, tape sur google les mots suivants : PHP formulaire enregistrement Par exemple cette page : http://wiki.mediabox.fr/tutoriaux/php/recuperer-des-donne-formulaire-php Là je dois partir en réunion jusqu'à certainement 18h donc je ne pourrai pas t'aider d'ici là, à mon retour je regarderai ce que tu as fait et effectuerai les modifications si besoin est. Bon courage. ~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
|
IL y' a pas mal de choses qui ne vont pas en fait :)
Pour ton select : echo'<option value='.$row["0"].'>'.$row["0"].'</option><br>' Essai plutôt echo'<option value='.$row[0].'>'.$row[0].'</option>' : Tu veux l'index 0 de la variable $row donc 0 est un entier pas une chaine Dans un select on ne met que des options pas de br et comme le dit kij_82, tu devrais avoir deux pages au moins : - une avec le formulaire à remplir qui aura un <form action="page2.php" method="post"> - une 2eme (page2.php) qui va récupérer les données dans son $_post
|
est ce que la "page2" va bien comme ça :
<?php $connect = mysql_connect("localhost","root","") or die("echec de connexion au serveur"); mysql_select_db("cartouche",$connect) or die("echec de connexion a la base de donneés"); ?> <? $date = $_POST['date']; $tabdate = split(",", $_POST['date']); $date = $tabdate[2] ."-".$tabdate[1]."-".$tabdate[0]; $demandeur=$_POST['demandeur']; $sortie=$_POST['sortie']; $reference=£_POST['reference']; $ajout = "INSERT INTO sorties VALUES ('$sortie','$reference','$date','$demandeur')"; $query = mysql_query($ajout); ?> La sortie a été bien enregistré <br><br><br> <a href="accueil.html">Retour à l'accueil</a> je pense que le message peut etre ameliorer et qu il s affiche que quand c'est vrai :p et pas pour rien comme ça la page1 devient alors : <?php $connect = mysql_connect("localhost","root","")or die("echec de connexion au serveur"); $db=mysql_select_db("cartouche",$connect)or die("echec de connexion a la base de donneés"); ?> <form action="enregistrement.php"method = "POST"> <p>Numero de sortie</p> <input type="text" name="sortie"> <? $req0 = "SELECT MAX(IdSortie)+1 as num_sortie FROM sorties;"; $res0=@mysql_query($req0;$db); $numSortie="Undetermined"; if ($res0 != null && @mysql_num_rows($res0) == 1 ){ $line=@mysql_fetch_assoc($res0); $numSortie=$line["num_sortie"]; } ?> <p>Reference de la cartouche</p> <select name="reference" size=1> <? $sql = "SELECT IdReference FROM references;"; $query = mysql_query($sql,$db); while ($row = mysql_fetch_row($query)) { echo'<option value='.$row[0].'>'.$row[0].'</option>' } mysql_free_result($query); ?> </select> <p>Date de sortie</p> <input type="text" name="date"> <p>Demandeur</p> <input type="text" name="demandeur"/> <? mysql_close($connect); ?> <br><br><br> <a href="accueil.html">Retour à l'accueil</a> <input name="submit" type="submit" value="Enregistrer" align="left"/> </form> c'est bon ça ?? meme avec ça , ma liste et le truc pour le numero de sortie sont vides et si je teste un enregistrement ya rien qui s'ajoute a la base |
Pas tout à fait, tu as le droit d'avoir des requetes qui vont pré-remplir des champs si tu as envie.
Mais l'insert sera fait dans une autre page qui récuperera les données du formulaire (demandeur, date ...) et qui va tout inserer dans une seule ligne de BD par exemple
// recuperation des donnees
$date = $_POST['date'];
$demandeur = $_POST['demandeur'];
// Validation des donnees
...
//Insertion
$sql = "INSERT INTO sorties(date,demandeur) VALUES ('$date','$demandeur')";
... mysql_query($sql) ...
|
Oui c'est beaucoup mieux, je ne vois juste pas trop a quoi ca sert la requete de num_sortie. Tes utilisateurs ont a saisir ce numero ? sinon il faut mieu que ca soit ta page deux qui genere le numero, ou que tu utilises un champs autoincrementé dans ta base de données.
Mais ca devrait deja etre beaucoup mieu. Encore une remarque sur la date, tu y a surement deja pensé, mais au cas ou : il faudrait 'bloquer' la saisir de la date car un utilisateur pourra saisir 16/05/2008 un autre 16/5/08 ou 16-5-2008 ...
|
Pourquoi elle ne veut pas l'autoincrementation ? ca marche bien normalement. Il faut mettre un type integer sur ta colonne avec option autoincrement, et ne pas affecter de valeur a la colonne quand tu inseres
Sinon tu enlèves ce qui concerne ce numero d ordre dans le formulaire et tu le recole dans la deuxieme page avant ton INSERT en adaptant le nom des variables
$req0 = "SELECT MAX(IdSortie)+1 as num_sortie FROM sorties;";
$res0=@mysql_query($req0;$db);
$numSortie="Undetermined";
if ($res0 != null && @mysql_num_rows($res0) == 1 ){
$line=@mysql_fetch_assoc($res0);
$sortie=$line["num_sortie"];
}
|
Non tu modifies juste pour ne plus préciser le numéro en precisant les colonnes
INSERT INTO sorties(reference, data, demandeur) VALUES ('$reference','$date','$demandeur')
|
essai de mettre en haut de ton code php dans le sdeux pages
error_reporting(E_ALL); Problème de connexion je pense pas sinon il y'aurait un message, mais peut-etre des retours 'vide'. Question bete : il y a bien deja de sdonnées dans ta base (les references ) ?
|