Chercher l'erreur PHP
Résolu
LiLou LiLa
Messages postés
330
Date d'inscription
Statut
Membre
Dernière intervention
-
LiLou LiLa Messages postés 330 Date d'inscription Statut Membre Dernière intervention -
LiLou LiLa Messages postés 330 Date d'inscription Statut Membre Dernière intervention -
Bonjour,c'est encore moi
Au final, PEAR je le verrais lundi ( ouf sauvée :p ) et donc si j'ai un probleme, c'est dans mon code php ( malgré les 2jours que j'ai passé a chercher le moindre probleme de ' ou " ou encore ; et j'en passe!
Je fais donc appel a vos précieux services :p
On va commencé avec qu'une page ( oui une parce que j'ai des problemes partout, d'où la fameuse question est ce que c'est pas ma connexion a la base ou autre qu'il plante mais bon meme pas j'ai pas de message d'erreur ! quel casse tete ! )
j'ai une base de donnée "cartouche" avec deux tables "references" (où sont referencé les cartouches") et "sorties" (ou on enregistre les sorties) ^^ dans phpmyadmin
ici ils ont WAMP et j'ai bien ouvert le site et incrementer la base de données par WAMP en localhost et tout
sorties.php enregistre donc les sorties de cartouche :
>> code
<html>
<head>
<title>Enregistrement de sorties de cartouches</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h1>Enregistrer une sortie de cartouches d'encre </h1>
<?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 method = "POST">
//Numero de sortie est une zone de texte qui reprend le dernier numero d identifiant (ici IdReference) et qui ajoute +1 pour la sortie enregistrer qui suit
<p>Numero de sortie</p>
<input type="text" name="numsortie">
<?
$req0 = "SELECT MAX(IdSortie)+1 FROM sorties;";
?>
//reference cartouche est une liste deroulante contenant les references des cartouches qui sont dans la base, comme ça ya qu à selectionner
<p>Reference de la cartouche</p>
<select name="idref" 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><br>'
}
mysql_free_result($query);
?>
</select>
//date de sortie est une zone de texte censé enregistrer la date de la sortie saisie et donc la mettre sous format aaaa/mm/jj ou lieu de jj/mm/aaaa
<p>Date de sortie</p>
<input type="text" name="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);
?>
//demandeur est sous format zone de texte aussi pour enregsitrer le demandeur saisie par lutilisateur
<p>Demandeur</p>
<input type="text" name="demandeur"/>
<?
$demandeur=$_POST['demandeur'];
$ajout2 = "INSERT INTO sorties('demandeur') VALUES ('$demandeur')";
$query2 = mysql_query($ajout2);
?>
<?
mysql_close($connect);
?>
<br><br><br>
//un lieu pour retourner a la page d'accueil
<a href="accueil.html">Retour à l'accueil</a>
//un bouton pour enregistrer les données
<input name="submit" type="submit" value="Enregistrer" align="left"/>
</form>
</body>
</html>
-------------
et a l'affichage, je n'ai aucun message d'erreur, ma liste deroulante est vide ,comme les zones de texte
aidez moi s il vous plait
c'est mega important c'est pour mon stage :p
Merci d'avance
Au final, PEAR je le verrais lundi ( ouf sauvée :p ) et donc si j'ai un probleme, c'est dans mon code php ( malgré les 2jours que j'ai passé a chercher le moindre probleme de ' ou " ou encore ; et j'en passe!
Je fais donc appel a vos précieux services :p
On va commencé avec qu'une page ( oui une parce que j'ai des problemes partout, d'où la fameuse question est ce que c'est pas ma connexion a la base ou autre qu'il plante mais bon meme pas j'ai pas de message d'erreur ! quel casse tete ! )
j'ai une base de donnée "cartouche" avec deux tables "references" (où sont referencé les cartouches") et "sorties" (ou on enregistre les sorties) ^^ dans phpmyadmin
ici ils ont WAMP et j'ai bien ouvert le site et incrementer la base de données par WAMP en localhost et tout
sorties.php enregistre donc les sorties de cartouche :
>> code
<html>
<head>
<title>Enregistrement de sorties de cartouches</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h1>Enregistrer une sortie de cartouches d'encre </h1>
<?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 method = "POST">
//Numero de sortie est une zone de texte qui reprend le dernier numero d identifiant (ici IdReference) et qui ajoute +1 pour la sortie enregistrer qui suit
<p>Numero de sortie</p>
<input type="text" name="numsortie">
<?
$req0 = "SELECT MAX(IdSortie)+1 FROM sorties;";
?>
//reference cartouche est une liste deroulante contenant les references des cartouches qui sont dans la base, comme ça ya qu à selectionner
<p>Reference de la cartouche</p>
<select name="idref" 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><br>'
}
mysql_free_result($query);
?>
</select>
//date de sortie est une zone de texte censé enregistrer la date de la sortie saisie et donc la mettre sous format aaaa/mm/jj ou lieu de jj/mm/aaaa
<p>Date de sortie</p>
<input type="text" name="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);
?>
//demandeur est sous format zone de texte aussi pour enregsitrer le demandeur saisie par lutilisateur
<p>Demandeur</p>
<input type="text" name="demandeur"/>
<?
$demandeur=$_POST['demandeur'];
$ajout2 = "INSERT INTO sorties('demandeur') VALUES ('$demandeur')";
$query2 = mysql_query($ajout2);
?>
<?
mysql_close($connect);
?>
<br><br><br>
//un lieu pour retourner a la page d'accueil
<a href="accueil.html">Retour à l'accueil</a>
//un bouton pour enregistrer les données
<input name="submit" type="submit" value="Enregistrer" align="left"/>
</form>
</body>
</html>
-------------
et a l'affichage, je n'ai aucun message d'erreur, ma liste deroulante est vide ,comme les zones de texte
aidez moi s il vous plait
c'est mega important c'est pour mon stage :p
Merci d'avance
A voir également:
- Chercher l'erreur PHP
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Expert php pinterest - Télécharger - Langages
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
15 réponses
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 :
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.
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.
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 :
Formatée :
Au passage, le $conn que j'ai utilisé correspond à ton $db.
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.
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 ?
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 ?
c'est un formulaire qui permet d'entrer / enregistrer les sorties de cartouches
la date et le demanduer sont saisies,
le numero de sortie devrait se mettre automatiquement suivant le dernier numero de sortie de la base
et la reference de la cartouche est a selectionner dans la liste deroulante qui reprend les identifiants de la table references ( idReference)
la date et le demanduer sont saisies,
le numero de sortie devrait se mettre automatiquement suivant le dernier numero de sortie de la base
et la reference de la cartouche est a selectionner dans la liste deroulante qui reprend les identifiants de la table references ( idReference)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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
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
<?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
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) ...
$ajout = "INSERT INTO sorties VALUES ('$sortie','$reference','$date','$demandeur')";
$query = mysql_query($ajout);
if($query)
{
echo("La sortie a été bien enregistré") ;
}
else
{
echo("L'enregistrement de la sortie a échoué") ;
}
pour le message comme quoi c'est bon ou pas ça va?
quand je test ya que le lien pour retourner a l'accueil
il m'affiche pas si c'est bon ou pas
$query = mysql_query($ajout);
if($query)
{
echo("La sortie a été bien enregistré") ;
}
else
{
echo("L'enregistrement de la sortie a échoué") ;
}
pour le message comme quoi c'est bon ou pas ça va?
quand je test ya que le lien pour retourner a l'accueil
il m'affiche pas si c'est bon ou pas
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 ...
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 ...
jai pas fait attention a ça
je lai juste mis dans " l ordre" pour mysql
le numero de sortie est pas a saisir mais devait etre recuperer par ma requete qui prend le dernier numero de la liste et qui rajoute logiquement 1 pour lenregistrement suivant
pour l'autoincrementation, ma table veut pas , va savoir pourquoi
donc j'ai abandonné l'idée
comment je pourrais le faire directement sur l'autre page?
je lai juste mis dans " l ordre" pour mysql
le numero de sortie est pas a saisir mais devait etre recuperer par ma requete qui prend le dernier numero de la liste et qui rajoute logiquement 1 pour lenregistrement suivant
pour l'autoincrementation, ma table veut pas , va savoir pourquoi
donc j'ai abandonné l'idée
comment je pourrais le faire directement sur l'autre page?
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
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')
INSERT INTO sorties(reference, data, demandeur) VALUES ('$reference','$date','$demandeur')
essai de mettre en haut de ton code php dans le sdeux pages
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 ) ?
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 ) ?
a force d etre decu depuis plusieurs et des copier/coller jen perds des morceaux :p
quand je lavais appris on le mettait pas jai resortie mes cours
c'est quoi la difference ? (si il en a une .. )