[RESOLU] soucis de recherche

Eléphant du PHP | 166 Messages

29 juil. 2017, 23:11

Bonjour,
Voici mon code :

Code : Tout sélectionner

<div id="bloc1"> <h1>Saisir données</h1> <form action="index.php" method="post"> <p> Date : <input type="date" name="date" /><br /> Ville : <input type="text" name="ville" /><br /> Période : <input type="text" name="periode" value="matin,midi,doir" /><br /> Résumé : <input type="text" name="resume"/><br /> Id du résumé : <input type="text" name="idresume"/><br /> Temp min : <input type="text" name="tmin"/><br /> Temp max : <input type="text" name="tmax"/><br /> Commentaire : <input type="text" name="comment"/><br /> <input type="submit" name="formSubmit" value="Valider" /> </p> </form> <?php if(isset($_POST['formSubmit']))// les valeurs sont postées { // je simplifie $date = $_POST['date']; $ville = $_POST['ville']; $periode = $_POST['periode']; $resume = $_POST['resume']; $idresume = $_POST['idresume']; $tmin = $_POST['tmin']; $tmax = $_POST['tmax']; $comment = $_POST['comment']; // si une des valeurs est vide if(empty($date) OR empty($ville) OR empty($periode) OR empty($resume) OR empty($idresume) OR empty($tmin) OR empty($tmax) OR empty($comment)) { $error_msg = 'une des informations est manquante.'; echo $error_msg; } else { // enregistrement dans la base $mysqli = new mysqli('localhost', 'root', 'root', 'projet_meteo');//connection $mysqli->set_charset("utf8"); // encodage utf8 // Vérification de la connexion à la base if ($mysqli->connect_errno) { echo 'Echec de la connexion ' .$mysqli->connect_error ; exit(); } if ($mysqli->query('INSERT INTO indata (comment,date,id_resume,periode,resume,tempmax,tempmin,ville) VALUES ("'. $comment .'", "'. $date .'", "'. $idresume.'", "'. $periode .'", "'. $resume .'","'. $tmax .'","'. $tmin .'","'. $ville .'")')) { echo 'Une erreur est survenue lors de l\'insertion des données dans la base. Message d\'erreur : ' . $mysqli->error; return false; } else { //recherche . $result = $mysqli->query('SELECT * FROM indata'); while ($row = $result -> fetch_array()) : echo var_dump($row); endwhile; return true; $mysqli->close(); } } } ?>
tout à la fin du code, dans la section //recherche, je n'arrive pas a visualiser ma variable $row ??

Mammouth du PHP | 2703 Messages

30 juil. 2017, 00:10

c'est bizarre d'afficher un message d'échec d'insertion quand la fonction retourne une valeur qui dit que cela s'est bien passé...

le premier if :
if(isset($_POST['formSubmit']))// les valeurs sont postées
est-ce que le contenu de la table ne doit vraiment être affiché qu'après soumission du formulaire d'ajout de données ?

Eléphant du PHP | 166 Messages

30 juil. 2017, 15:38

merci, j'ai rectifié le code.
J'utilise chrome pour fair mais essais. Je passe sur mozilla et là, une fois que je valide le formulaire il ne se passe rien : rien est enregistrer dans la Bdd, le <li> ne s'affiche pas, et l'entrée "date" du formulaire n'affiche pas le calendrier comme dans chrome. ???
mon code :

Code : Tout sélectionner

<body> <div id="bloc1"> <h1>Saisir données</h1> <form action="index.php" method="post"> <p> Date : <input type="date" name="date" /><br /> Ville : <input type="text" name="ville" /><br /> Période : <input type="text" name="periode" value="matin,midi,doir" /><br /> Résumé : <input type="text" name="resume"/><br /> Id du résumé : <input type="text" name="idresume"/><br /> Temp min : <input type="text" name="tmin"/><br /> Temp max : <input type="text" name="tmax"/><br /> Commentaire : <input type="text" name="comment"/><br /> <input type="submit" name="formSubmit" value="Valider" /> </p> </form> <?php if(isset($_POST['formSubmit']))// les valeurs sont postées { // je simplifie $date = $_POST['date']; $ville = $_POST['ville']; $periode = $_POST['periode']; $resume = $_POST['resume']; $idresume = $_POST['idresume']; $tmin = $_POST['tmin']; $tmax = $_POST['tmax']; $comment = $_POST['comment']; // si une des valeurs est vide if(empty($date) OR empty($ville) OR empty($periode) OR empty($resume) OR empty($idresume) OR empty($tmin) OR empty($tmax) OR empty($comment)) { $error_msg = 'une des informations est manquante.'; echo $error_msg; } else { // enregistrement dans la base $mysqli = new mysqli('localhost', 'root', 'root', 'projet_meteo');//connection $mysqli->set_charset("utf8"); // encodage utf8 // Vérification de la connexion à la base if ($mysqli->connect_errno) { echo 'Echec de la connexion ' .$mysqli->connect_error ; exit(); } if ($mysqli->query('INSERT INTO indata (comment,date,id_resume,periode,resume,tempmax,tempmin,ville) VALUES ("'. $comment .'", "'. $date .'", "'. $idresume.'", "'. $periode .'", "'. $resume .'","'. $tmax .'","'. $tmin .'","'. $ville .'")')) { //recherche . $result = $mysqli->query('SELECT * FROM indata'); while ($row = $result -> fetch_array()) : //Affiche echo "<li>". $row['date'] .";". $row['ville'] .";". $row['periode'] .";". $row['resume'] .";" . $row['id_resume'] .";". $row['tempmin'] .";". $row['tempmax'] .";". $row['comment'] . "</li><br />"; endwhile; $mysqli->close(); } } } ?> </div>

Eléphant du PHP | 166 Messages

09 sept. 2017, 16:29

Dans mon formulaire sous Chrome, quand je rentre une date, cela m'affiche un calendrier. Alors que sous Firefoxe le calendrier n’apparaît plus ? il faut que je tape a la main la date ?? Je pense que l'erreur vient de là.
Mais comment résoudre se problème ? d'un navigateur a un autre il n'y a pas la même chose ....

Autre soucis, sous chrome quand je fais un rafraîchissement, il y a une ligne qui sincrémente à chaque fois ? elle correspond aux dernière données que j'ai rentré dans le formulaire. Du coup dans ma Bdd cela incrémente a chaque fois une nouvelle ligne ??

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 sept. 2017, 00:55

Dans mon formulaire sous Chrome, quand je rentre une date, cela m'affiche un calendrier. Alors que sous Firefoxe le calendrier n’apparaît plus ? il faut que je tape a la main la date ?? Je pense que l'erreur vient de là.
Mais comment résoudre se problème ? d'un navigateur a un autre il n'y a pas la même chose ....
Le champ de formulaire input type="date" n'est pas géré par Firefox, IE ni Safari (c'est une création à l'origine de Chrome) : http://caniuse.com/#search=date
IE va être remplacé par Edge progressivement, et la version 57 de Firefox qui gère cette fonctionnalité sera déployé à partir du 14 novembre prochain.
Tu peux déjà faire l'essai avec Firefox Nightly qui est déjà en v57, c'est ce que j'utilise au quotidien et je confirme que ça marche.

Autre soucis, sous chrome quand je fais un rafraîchissement, il y a une ligne qui sincrémente à chaque fois ? elle correspond aux dernière données que j'ai rentré dans le formulaire. Du coup dans ma Bdd cela incrémente a chaque fois une nouvelle ligne ??
Bah c'est normal non ?
Si tu recharges la page sur laquelle tu viens d'envoyer les données, ça les réenvoies. Si tu veux éviter cela, après l'enregistrement des données tu peux faire une redirection vers une autre page ou sinon vérifier au moment de l'enregistrement que des données identiques n'ont pas déjà été enregistrées en base
Quand tout le reste a échoué, lisez le mode d'emploi...