Retourner sur la page du formulaire [Résolu]

Signaler
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
-
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020
-
Bonjour, j'insère des données a travers un formulaire , après l'insertion ca m'envoi vers une page vide qui contient le message données Insérées , moi je veux que le message box s'affiche sur la même page du formulaire . comment faire ?
voici la page du formulaire :
<html>
    <head>
        <!-- importer le fichier de style -->
        <link rel="stylesheet" href="Style/style1.css" media="screen" type="text/css" />
		<title>Ajouter un Scanner </title>
		<body>
        <div id="container">
            <!-- zone de connexion -->
            
            <form   action ="insert.php" method="post">
                <h1>Ajout d'un Scanner</h1>
                
                <label><b>Catégorie</b></label>
                <input type="text" placeholder="Entrer la catégorie du Scanner" name="fcategorie" required>

                <label><b>Ville</b></label>
                <input type="text" placeholder="Entrer la ville" name="fville" required>
				
				<label><b>Longitude</b></label>
                <input type="text" placeholder="Entrer la longitude" name="flong" required>
				
				<label><b>Latitude</b></label>
                <input type="text" placeholder="Entrer la latitude" name="flat" required>
				
				<label><b>Description</b></label>
                <input type="text" placeholder="Description" name="fdesc" required>

                <input type="submit" id='submit' value='Insérer' >

            </form>
        </div>
		 
				
    </body>
    </head>


et voici la page pour insérer:
<html>
<body>
 
 
<?php
$con = @mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
 
mysql_select_db("mapbdd", $con);
$sql="INSERT INTO markers (marker_categorie, marker_ville,marker_longitude,marker_latitude,marker_text,marker_actif)
				VALUES
				('$_POST[fcategorie]','$_POST[fville]','$_POST[flong]','$_POST[flat]','$_POST[fdesc]','Oui')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo '<script type="text/javascript">alert("Données Insérées")</script>' ;
 
mysql_close($con)
?>
</body>
</html>


Merci d'avance

1 réponse

Messages postés
29606
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2020
337
Bonjour,

Avant tout..... l'extension mysql est OBSOLETE.
Il faut désormais utiliser mysqli ou PDO.
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

Ensuite, concernant ta demande, deux possibilités.
- Soit tu places ton code PHP dans le même fichier que ton formulaire (et dans ce cas, tu laisses l'attribut "action" à vide) afin de rester sur la même page une fois le code php exécuté
- Soit, dans ton second fichier, tu fais simplement une redirection à l'aide de l'instruction
header('location:tapage.php');


Moi je prendrai le choix 1

Au passage... tes balises sont mal fermées/placées dans ton code...
Par exemple... que vient faire la balise </head> APRES le <body> ??
Donc, ton code, en PDO et correctement formaté, reviendrait )à ça:

Fichier de connexion à la bdd à placer dans un fichier à part
pour ne pas avoir à le recopier dans chacune de tes pages
<?php
//fichier : cnxBdd.php

try{
  $bdd =new PDO('mysql:host=localhost;dbname=mapbdd; charset=utf8', 'root', '');
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
} 
?> 

Ton fichier devient ensuite:
<?php
//activation des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//on inclus le fichier de connexion à la bdd
require_once 'cnxBdd.php';

//on récupère PROPREMENT les variables AVANT de les utiliser
$fcategorie = !empty($_POST['fcategorie']) ? $_POST['fcategorie'] : NULL;
$fville = !empty($_POST['fville']) ? $_POST['fville'] : NULL;
$flong = !empty($_POST['flong']) ? $_POST['flong'] : NULL;
$flat = !empty($_POST['flat']) ? $_POST['flat'] : NULL;
$fdesc = !empty($_POST['fdesc']) ? $_POST['fdesc'] : NULL;

//on traite les variables du formulaire:
if($fcategorie && $fville && $flong && $flat && $fdesc){
 
  $sql="INSERT INTO markers (
                  marker_categorie
                , marker_ville
                ,marker_longitude
                ,marker_latitude
                ,marker_text
                ,marker_actif
               )
                VALUES (
                 :marker_categorie 
                ,:marker_ville 
                ,:marker_longituden
                ,:marker_latitude
                ,:marker_text
                ,:marker_actif
              )";
   $datas = array(':marker_categorie'=>$fcategorie
                 , ':marker_ville'=>$fville
                 ,':marker_longitude'=>$flong
                 ,':marker_latitude'=>$flat
                 ,':marker_text'=>$fdesc
                 ,':marker_actif'=>'Oui'
                 );
  //Execution de la requete
  try{
    $requete = $bdd -> prepare($sql) ;
    $res = $requete->execute($datas) ;
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
     echo " Les datas : " ;
     print_r($datas);
  }
  
  if($res){
    echo '<script type="text/javascript">alert("Données Insérées")</script>'
  }
}

?>
<!DOCTYPE html>
<html>
 <head>
  <!-- importer le fichier de style -->
  <link rel="stylesheet" href="Style/style1.css" media="screen" type="text/css" />
    <title>Ajouter un Scanner </title>
 </head>
 <body>
    <div id="container">
      <!-- zone de connexion -->
   <form   action ="" method="post">
        <h1>Ajout d'un Scanner</h1>
    <label><b>Catégorie</b></label>
        <input type="text" placeholder="Entrer la catégorie du Scanner" name="fcategorie" required>
        <label><b>Ville</b></label>
        <input type="text" placeholder="Entrer la ville" name="fville" required>
        <label><b>Longitude</b></label>
        <input type="text" placeholder="Entrer la longitude" name="flong" required>
        <label><b>Latitude</b></label>
        <input type="text" placeholder="Entrer la latitude" name="flat" required>
    <label><b>Description</b></label>
        <input type="text" placeholder="Description" name="fdesc" required>
        <input type="submit" id='submit' value='Insérer' >
      </form>
    </div>
  </body>
 </html> 
 



Je t'invite, avant de poursuivre ton développement, à lire (et à appliquer) ceci:
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
et ça :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Bien entendu, ce que j'ai fait en PDO, tu peux le refaire en mysqli si vraiment tu le souhaites....



Cordialement, 
Jordane                                                                 
Messages postés
155
Date d'inscription
vendredi 24 mai 2013
Statut
Membre
Dernière intervention
8 avril 2020

D'accord merci beaucoup pour tous tes conseils