Retourner sur la page du formulaire

Résolu
andyajram Messages postés 155 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 8 avril 2020 - 30 avril 2018 à 12:46
andyajram Messages postés 155 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 8 avril 2020 - 30 avril 2018 à 20:06
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

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié le 30 avril 2018 à 20:12
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....



1
andyajram Messages postés 155 Date d'inscription vendredi 24 mai 2013 Statut Membre Dernière intervention 8 avril 2020 1
30 avril 2018 à 20:06
D'accord merci beaucoup pour tous tes conseils
0
Rejoignez-nous