Problème lors de la validation de mon formulaire [Résolu]

Signaler
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021
-
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021
-
Bonjour,

Bonjour,


Je vous soumet mon code j’ai juste un problème avec ma page add.php. Lorsque je veux soumettre le formulaire (un ajout sur ma data base).
La page charge dans le vide je ne trouve pas le soucie "elle devrait au moins afficher mes erreur" malgré des recherches je suis bloqué. Je ne cherche pas que l’on me refasse le code mais une aide une explication.. (ps: j'ai essayé de vous soumettre une capture d'écran pour la lisibilité mais pas possible de charger l'image dsl)


// forlulaire de soumission


<?php
//démarrer une session
session_start();
if($_POST) {
if(isset($_POST['nom']) && !empty($_POST['nom'])
&& isset($_POST['altitude']) && !empty($_POST['altitude'])) {

} else {
$_SESSION['error'] = "Le formulaire et incomplet";
}
}
require_once("Connection_bdd_hotel.php");
require_once('close.php');
?>

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

<title>Ajout station</title>
</head>
<body>

<main class="container">
<div class="row">
<section class="col-12">
<?php
if(!empty($_SESSION['error'])) {
echo '<div class="alert alert-danger" role="alert">
'. $_SESSION['error'].'
</div>';
$_SESSION['error'] = "";
}
?>
<h1 class="p-3 mb-2 bg-success text-light text-center font-weight-light">Ajout d'une station</h1>
<form action="" method="post">
<br><br>

<div class="input-group input-group-lg">
<div class="input-group-prepend">
<span class="input-group-text bg-success text-light" id="ID">ID</span>
</div>
<input type="text" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm" readonly>
</div>
<br><br>

<div class="input-group input-group-lg">
<div class="input-group-prepend">
<span class="input-group-text bg-success text-light" id="nom">Nom</span>
</div>
<input type="text" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm">
</div>
<br><br>

<div class="input-group input-group-lg">
<div class="input-group-prepend">
<span class="input-group-text bg-success text-light" id="altitude">Altitude</span>
</div>
<input type="texte" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm">
</div>
<br><br>

<button type="submit" class=" col-12 btn btn-success btn-lg btn-block">Valider</button>
<br><br>

<div class="row">
<a href="Formulaire_add_station.php"><button type="button" class=" col-12 btn btn-outline-success text-dark">Retour</button></a>
</div>
</form>
</section>
</div>
</main>


<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>






Configuration: Windows / Chrome 89.0.4389.90


Configuration: Windows / Chrome 89.0.4389.90

11 réponses

Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021
823
bonjour, avant tout, merci de tenir compte de ceci quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021
823
si je vois bien, il y a un if sans else, opportunité d'erreur sans avertissement:
if($_POST)


que veux-tu dire par "La page charge dans le vide"? Peux-tu partager le code source HTML de la page affichée?
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021
823 >
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021

je ne vois pas trop l'avantage d'utiliser un variable de session pour l'erreur: pourquoi fais-tu ainsi?
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021
>
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021

Sincèrement je suis en pleine formation plus exactement au niveau du CRUD et cela figure dans le cours et l'exemple du cours mais $_SESSION c'est une superglobal qui est dispo dans tout les contexte du script après si tu trouve qu'il y a un autre moyens d'écrire le code plus logiquement erreur et ou message tu peux m'expliquer j'apprend toujours ^^
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

merci pour l'info pour le partage de code
j'ai avancer sur le code mais toujours le même problème la page charge dans le vide...

<?php
//démarrer une session 
session_start();
if($_POST) {
    if(isset($_POST['nom']) && !empty($_POST['nom'])
    && isset($_POST['altitude']) && !empty($_POST['altitude'])) {
        
        require_once("Connection_bdd_hotel.php");
        
        $nom = strip_tags($_POST['nom']);
        $altitude = strip_tags($_POST['altitude']);
        
        $sql = "INSERT INTO 'station' ('sta_nom', 'sta_altitude') VALUES (:sta_nom, :sta_altitude);";
        
        $query = $db->prepare($sql);
        
        $query->bindValue(':sta_nom', $nom, PDO::PARAM_STR);
        $query->bindValue(':sta_altitude', $altitude, PDO::PARAM_INT);
        
        $query->execute();
        
        $_SESSION['message'] = "Station ajouté";
        
        require_once('close.php');
        
        header('Location: add_station.php'); 


    } else {
        $_SESSION['error'] = "Le formulaire et incomplet";
    }
}

?>

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

    <title>Ajout station</title>
</head>
<body>

<main class="container">
    <div class="row">
        <section class="col-12">
                <?php
                    if(!empty($_SESSION['error'])) {
                        echo '<div class="alert alert-danger" role="alert">
                              '. $_SESSION['error'].'
                              </div>';
                        $_SESSION['error'] = "";
                    }
                ?>

                <?php
                    if(!empty($_SESSION['message'])) {
                        echo '<div class="alert alert-success" role="alert">
                              '. $_SESSION['message'].'
                              </div>';
                        $_SESSION['message'] = "";
                    }
                ?>
            <h1 class="p-3 mb-2 bg-success text-light text-center font-weight-light">Ajout d'une station</h1>
            <form action="" method="post">
            <br><br>

            <div class="input-group input-group-lg">
                <div class="input-group-prepend">
                    <span class="input-group-text bg-success text-light" id="ID">ID</span>
                </div>
                <input type="text" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm" readonly>
            </div>
            <br><br>

            <div class="input-group input-group-lg">
                <div class="input-group-prepend">
                    <span class="input-group-text bg-success text-light" id="nom">Nom</span>
                </div>
                <input type="text" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm">
            </div>
            <br><br>

            <div class="input-group input-group-lg">
                <div class="input-group-prepend">
                    <span class="input-group-text bg-success text-light" id="altitude">Altitude</span>
                </div>
                <input type="texte" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm">
            </div>
            <br><br>

            <button type="submit" class=" col-12 btn btn-success btn-lg btn-block">Valider</button>
            <br><br>

            <div class="row">
                <a href="Formulaire_add_station.php"><button type="button" class=" col-12 btn btn-outline-success text-dark">Retour</button></a>
            </div> 
            </form>
        </section>
    </div>
</main>


<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>







Messages postés
32040
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 avril 2021
3 378
Bonjour,

Déjà, il faudrait que tu nous dises à quoi correspond " la page charge dans le vide" ...
Elle affiche des choses ou non ?
Ton insert en BDD fonctionne ou pas ?

A noter que, vu que tu fais du PDO, il serait bien d'appliquer les consignes données ici
https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

et de penser à activer l'affichage des erreurs php.

Il faudrait également penser à mettre en commentaire les redirections pour pouvoir voir les éventuelles erreurs...

Après.. si ta page s'affiche mais donne l'impression qu'elle continue à charger des choses .. c'est certainement lié à un fichier JS ou à des fichiers un peu lourds ( images, css ... )


Je t'invite également à revoir un peu l'écriture de ton code
- Récupération des variables AVANT de les utiliser
- Affichage des erreurs PHP
- Découpage du code en "fonctions" (une fonction pour l'insert par exemple )

bref. ce qui est indiqué ici : https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

pour La page qui charge dans le vide c'est dans le sens que la page charge sur elle même mais n'envoie pas mes données rentré sur ma data base j'ai essayer de vérifié s'il y a quelque chose juste avec ce code simple :
if($_POST) { die ('C marche')
require_once("Connection_bdd_hotel.php");
require_once('close.php');
et rien s'affiche




Voici le code source de la page affiché.
/*******************************************************************************
 *
 *  avast! Online Security plugin
 *  (c) 2013 Avast Corp.
 *
 *  @author: Lucian Corlaciu
 *
 *  Injected specifics - Google Chrome
 *
 ******************************************************************************/

(function(){
  "use strict";
  if (typeof AvastWRC === 'undefined') { AvastWRC = {}; }

  //avoid multiple injections
  if(AvastWRC.bs === undefined){
    var ial = null; //AvastWRC.ial instance - browser agnostic
    AvastWRC.bs = {
      init: function(){
        ial = AvastWRC.ial.init(this);
        if(chrome.runtime){
            chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
                console.log("onMessage extension");
                ial.messageHub(request.message, request.data, sendResponse);
                return sendResponse({response: "message received"}) || Promise.resolve({response: "message received"});
            });
        }
      },
      messageHandler: function(functionName, data) {
        data = data || {};
        data.message = functionName;
        if(chrome.runtime){
          chrome.runtime.sendMessage(data);
        }
      },
      getLocalImageURL: function(file) {
        return chrome.extension.getURL('common/ui/icons/'+ file);
      },
      getLocalResourceURL: function(file) {
        return chrome.extension.getURL(file);
      }
    };

    AvastWRC.bs.init();
  }

}).call(this);

//$.noConflict(true);

Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021
>
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021

Je pensais qu'avec ce code ma variable $nom était directement égal à un post existant et non vide sans avoir besoin d'une condition if else...
Mes erreurs peuvent paraître bête, mais comme j'apprends, pour moi c'est des murs..lol
$nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;

donc j'ai refais un if esle comme sur mon précédant code plus aucune erreur mes données sont bien envoyé sur ma bdd et si les champs sont vide j'ai mon echo "Les champs sont vide" après je me demande si l'on peut utiliser un header qui redirige sur la page elle même parceque la je suis redirigé sur une page blanche même avec mon header et un problème est survenu sur ma ddb les id sont auto incrémenté je devrais avoir mes id 1,2,3 par rapport au ajout mais elle sont donner au hasard 23,24,21,22...

<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

// Récupération des informations passées en POST

if($_POST) {
    if(!empty($_POST['nom']) && !empty($_POST['altitude'])) {
        
// Connexion à la base de données
require "Connection_bdd_hotel.php";

$nom= $_POST['nom'];
$altitude= $_POST['altitude'];

try {
// Construction de la requête INSERT sans injection SQL
$query= $db->prepare("INSERT INTO station (sta_nom,sta_altitude) VALUES (:sta_nom,:sta_altitude)");

$query->bindValue(':sta_nom', $nom, PDO::PARAM_STR);
$query->bindValue(':sta_altitude', $altitude, PDO::PARAM_INT);

$query->execute();

// Libération de la connexion au serveur de BDD
require_once('close.php');

  // Redirection vers la page add_station.php
  header("Location: add_station.php");
  exit;
}
// Gestion des erreurs
catch (Exception $e) {

        echo "La connexion à la base de données a échoué ! <br>";
        echo "Merci de bien vérifier vos paramètres de connexion ...<br>";
        echo "Erreur : " . $e->getMessage() . "<br>";
        echo "N° : " . $e->getCode();
        die("Fin du script");
}
} else {
    echo "Les champs sont vide";
}
}
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021
823 >
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

le code que tu montres en #15 est-il le code de la page add_station.php?
quelle page contient-elle le formulaire qui fait appel à la page add_station.php?
as-tu d'autres pages?
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021
>
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021

MAJ: pour le header j'ai mis le liens https: de la page add_station.php donc cela fonctionne je reste bien sur ma page après la Validation mais je ne comprend pas pourquoi cette différence
et pour les id de la ddb j'ai fais un deleted puis un create de ma ddb et j'ai ajouter mes données le premier prend bien id 1 le second id 2 ect mais c'est quand je supprime directement sur ma ddb par exemple l'id 2 la prochaine entré de données devrais prendre ca place en tant qu'id 2 mais la non il prend l'id 3 je passe donc de l'id 1 a l'id 3 j'éspère que j'était clair dans mes explications je voudrais seulement comprendre pourquoi mais sinon pour moi mon poste je peux le mettre en résolu merci infiniment pour votre aide !!
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021
823 >
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

il est normal de ne pas réutiliser un id après suppression.

pour le reste, je suspecte que tes pages ne sont pas exécutées dans le bon ordre.
il serait utile que tu montres le code de tes différentes pages, ainsi que, surtout, le nom de chaque page.
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021
>
Messages postés
32040
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 avril 2021

Je précise que tout fonctionne mes données sont bien ajouter à ma bdd mais je ne suis pas redirigé sur le header j'ai la page erreur sur l'image qui reste ..
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

Bonjour,

La page "Ajout station" elle s'affiche mais une fois les données rentré un click sur le Valider devrait "en théorie" envoyer mes données saisie nom et altitude sur ma data base hotel. Elle affiche mon formulaire c'est normal mais après avoir Valider ma page reste tel quel avec le header
Merci pour les liens et les conseils je revois tout ca et je vous tiendrais au courant.
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

Merci pour l'info sur les id c'est donc normal
j'avais 3 pages
1e page "liste_station.php"
2eme page "Formulaire_add_station.php" ce n'était qu'un formulaire html
3eme page "add_station" c'était juste les requêtes php comme si dessus

j'ai ajouter le script de la 3eme page à la 2eme page et renommé en fonction et le header fonctionne maintenant sans le lien https mais directement avec le même nom de sa propre page

voici mes 2 pages fonctionnelles

<?php

// MON EXEMPLE
session_start();
require_once("Connection_bdd_hotel.php");
$sql = 'SELECT * FROM station';
$query = $db->prepare($sql);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
require_once('close.php');
?> 

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

    <title>Liste station</title>
</head>
<body>
    <main class="container">
        <div class="row">
            <section class="col-12">
                <h1 class="p-3 mb-2 bg-success text-light text-center font-weight-light">Liste des stations</h1><br>
                    <table class="table">
                        <thead class="table-active">
                            <th>Nom</th>
                            <th></th>
                        </thead>
                        <tbody>
                            <?php
                            foreach($result as $station){
                            ?>
                                <tr>
                                    <td><?= $station['sta_nom'] ?></td>
                                    <td></td>
                                </tr>
                            <?php   
                            }
                            ?>
                        </tbody>
                    </table>
                    <a href="add_station.php"><button type="submit" class=" col-12 btn btn-success btn-lg btn-block text-center font-weight-light"><b>Ajouter une station</b></button></a>
                </section>
            </div>
        </main>



  
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>


<?php

// MON EXEMPLE
session_start();
require_once("Connection_bdd_hotel.php");
$sql = 'SELECT * FROM station';
$query = $db->prepare($sql);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
require_once('close.php');
?> 

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

    <title>Liste station</title>
</head>
<body>
    <main class="container">
        <div class="row">
            <section class="col-12">
                <h1 class="p-3 mb-2 bg-success text-light text-center font-weight-light">Liste des stations</h1><br>
                    <table class="table">
                        <thead class="table-active">
                            <th>Nom</th>
                            <th></th>
                        </thead>
                        <tbody>
                            <?php
                            foreach($result as $station){
                            ?>
                                <tr>
                                    <td><?= $station['sta_nom'] ?></td>
                                    <td></td>
                                </tr>
                            <?php   
                            }
                            ?>
                        </tbody>
                    </table>
                    <a href="add_station.php"><button type="submit" class=" col-12 btn btn-success btn-lg btn-block text-center font-weight-light"><b>Ajouter une station</b></button></a>
                </section>
            </div>
        </main>



  
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

maj: dsl j'ai mis 2 fois la 1ere page

<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

// Récupération des informations passées en POST
if($_POST) {
    if(!empty($_POST['nom']) && !empty($_POST['altitude'])) {
        
// Connexion à la base de données
session_start();
require "Connection_bdd_hotel.php";

$nom= $_POST['nom'];
$altitude= $_POST['altitude'];

try {
// Construction de la requête INSERT sans injection SQL
$query= $db->prepare("INSERT INTO station (sta_nom,sta_altitude) VALUES (:sta_nom,:sta_altitude)");

$query->bindValue(':sta_nom', $nom, PDO::PARAM_STR);
$query->bindValue(':sta_altitude', $altitude, PDO::PARAM_INT);

$query->execute();

// Libération de la connexion au serveur de BDD
require_once('close.php');

  // Redirection vers la page add_station.php
  header("Location: add_station.php");
  exit;
}
// Gestion des erreurs
catch (Exception $e) {

        echo "La connexion à la base de données a échoué ! <br>";
        echo "Merci de bien vérifier vos paramètres de connexion ...<br>";
        echo "Erreur : " . $e->getMessage() . "<br>";
        echo "N° : " . $e->getCode();
        die("Fin du script");
}
} else {
    echo "Les champs sont vide";
}
}

?>

<!DOCTYPE html><html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

    <title>Ajout station</title>
</head>
<body>

<main class="container">
    <div class="row">
        <section class="col-12">
            <h1 class="p-3 mb-2 bg-success text-light text-center font-weight-light">Ajout d'une station</h1>
            <form action="" method="post">
            <br><br>

            <div class="input-group input-group-lg">
                <div class="input-group-prepend">
                    <span class="input-group-text bg-success text-light font-weight-light" name="nom" id="nom">Nom</span>
                </div>
                <input name="nom" type="text" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm">
            </div>
            <br><br>

            <div class="input-group input-group-lg">
                <div class="input-group-prepend">
                    <span class="input-group-text bg-success text-light font-weight-light" name="altitude" id="altitude">Altitude</span>
                </div>
                <input name="altitude" type="text" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm">
            </div>
            <br><br>

            <button type="submit" class=" col-12 btn btn-success btn-lg btn-block text-center font-weight-light"><b>Valider</b></button>
            <br><br>

            <div class="row">
                <a href="Liste_station.php"><button type="button" class=" col-12 btn btn-outline-success text-dark">Retour</button></a>
            </div> 
            </form>
        </section>
    </div>
</main>


<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021
823
si je vois bien, tu as choisi de ne pas indiquer chaque fois le nom de chaque page, tout cela est donc bien confus.
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

Je n'ai pas bien compris dsl
j'ai ma 1er page avec ma liste et un boutton ajouter qui m'envoie sur ma 2ème page formulaire d'ajout avec un bouton pour valider qui valide mes données et me garde sur la même page et un bouton retour qui m'envoie sur ma 1er page liste ou l'on voit ma liste et également ce que j'ai ajouté
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021
>
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021

bien d'accord mais je l'avais dis mais peut être un peu mal expliqué ma première page s'appel "liste_station" (On voit sur cette page la liste de mes stations avec un bouton "ajouter une station" ce même boutton envoi sur la seconde page) et la seconde "add_station' (affiche un champ nom et altitude pour créer une nouvelle station sur ma ddb) je comprend votre scepticisme quant à la page "add_station" qu'elle charge sur elle même mais comme c'est juste un exercice que je fais pour apprendre à créer des info sur ma ddb j'ai préférer garder un visuel de cette même page que d'avoir une page blanche ou bien même créer une autre page qui nous dis par exemple "Vos modifications sont pris en compte" mon but c'était juste de comprendre le principe de Create
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021
823 >
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

il est inutile de refaire appel à la page "add_station", il suffit de laisse le code continuer, il va afficher le formulaire.
tu peux donc supprimer la ligne "header", ou même la remplacer par un echo "Vos modifications sont pris en compte", qui sera affiché en haut du formulaire.
c'est le double appel à la page qui provoquait le message d'erreur décrite en #10, puisque le second appel (déclenché par header) était fait sans formulaire, et que la page ne réagissait pas bien.
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021
>
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021

Effectivement même sans le header la page reste sur le formulaire (j'avais utiliser le header car j'avais avant 3 pages la première page était la même mais j'avais séparé le code html et le code php sur deux pages différentes alors que mntn j'ai les deux sur la même page) merci beaucoup pour ton aide et t explications! pouce bleu !!
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021
823 >
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

pourras-tu alors marquer la discussion comme résolue?
Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021
>
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021

bien entendu ! Merci yg_be !
Messages postés
14989
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
7 avril 2021
823
la page publiée en #20 est-elle add_station.php?
si oui, que souhaites-tu qu'il se passe après l'insertion d'une nouvelle station?
je suis perplexe en voyant que tu fais une redirection vers la même page...

prends peut-être un peu de temps pour réfléchir (et à expliquer) ce que tu veux afficher et réaliser dans chaque page.
Messages postés
32040
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 avril 2021
3 378
Bonjour,

La discussion partant en yoyo .. difficile de suivre.
Mais.. si tu es toujours sur le message d'erreur que tu nous as montré dans ton image :

1 - Première erreur.. message indiquant un souci de connexion à la bdd.
ça .. c'est à cause de ce que tu as mis dans ton CATCH ..

2 - Seconde erreur .. la colonne sta_nom ne peut pas être vide ... il faut donc s'assurer qu'elle n'est pas vide avant d'essayer de faire l'insertion dans la bdd.
(ce que tu fais visiblement)
Par contre, tu as mis des attributs NAME sur tes SPAN .. ça ne se fait pas.. et surtout..ils ont le même nom que tes input .. ça peut éventuellement géner...

Peux tu essayer ça et nous dire ce que ça te donne ?
<?php
session_start(); // A METTRE AVANT TOUT AUTRE CODE !

//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

// Connexion à la base de données
require_once "Connection_bdd_hotel.php";


// Récupération des informations passées en POST
$nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;
$altitude = !empty($_POST['altitude']) ? $_POST['altitude'] : NULL;

//Traitemetn du SUBMIT
if(isset($_POST['valider']){
  if($nom && $altitude) {

    try {
      // Construction de la requête INSERT sans injection SQL
      $query= $db->prepare("INSERT INTO station (sta_nom,sta_altitude) VALUES (:sta_nom,:sta_altitude)");
      $query->bindValue(':sta_nom', $nom, PDO::PARAM_STR);
      $query->bindValue(':sta_altitude', $altitude, PDO::PARAM_INT);
      $query->execute();

      // Redirection vers la page add_station.php
      header("Location: add_station.php"); // tu es déjà dans cette page.. donc inutile ...
      exit;
    }  catch (Exception $e) {
       echo "Erreur : " . $e->getMessage() . "<br>";
       echo "N° : " . $e->getCode();
       var_dump($_POST); // pour voir le contenu envoyé par le formulaire !
       die("Fin du script");
    }
  } else {
      echo "Les champs sont vide";
      var_dump($_POST); // pour voir le contenu envoyé par le formulaire !
  }
}

?>

<!DOCTYPE html>
<html lang="fr">
  <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

      <title>Ajout station</title>
  </head>
  <body>
    <main class="container">
      <div class="row">
        <section class="col-12">
          <h1 class="p-3 mb-2 bg-success text-light text-center font-weight-light">Ajout d'une station</h1>
          <form action="" method="post">
            <br><br>
            <div class="input-group input-group-lg">
                <div class="input-group-prepend">
                    <span class="input-group-text bg-success text-light font-weight-light" id="nom">Nom</span>
                </div>
                <input name="nom" type="text" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm">
            </div>
            <br><br>

            <div class="input-group input-group-lg">
                <div class="input-group-prepend">
                    <span class="input-group-text bg-success text-light font-weight-light" id="altitude">Altitude</span>
                </div>
                <input name="altitude" type="text" class="form-control" aria-label="Large" aria-describedby="inputGroup-sizing-sm">
            </div>
            <br><br>

            <button type="submit" name="valider" class=" col-12 btn btn-success btn-lg btn-block text-center font-weight-light"><b>Valider</b></button>
            <br><br>

            <div class="row">
                <a href="Liste_station.php"><button type="button" class=" col-12 btn btn-outline-success text-dark">Retour</button></a>
            </div> 
          </form>
        </section>
      </div>
    </main>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
  </body>
</html>

Messages postés
25
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
7 avril 2021

Bonjour, merci pour votre aide et vos liens mais j'ai réussi à tout corrigé avec l'aide de "yg_be" .
Pour les SPAN c'est noté je les ai retiré.

Et votre code est fonctionnel juste une parenthèse qui manqué sur if(isset($_POST['valider'])) du //Traitement du SUBMIT, mais aucune erreur votre fonctionne très bien

Je suis bien content d'avoir résolu mes erreurs petit à petit juste avec des indications avant qu'on me le serve sur un plateaux !! lol mais un grand merci pour votre aide !