Problème lors de la validation de mon formulaire

Résolu/Fermé
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 - 3 avril 2021 à 19:40
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 - 4 avril 2021 à 18:07
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

yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 Ambassadeur 1 538
Modifié le 3 avril 2021 à 20:39
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
0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538
3 avril 2021 à 20:39
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?
0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538 > yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024
3 avril 2021 à 20:43
je ne vois pas trop l'avantage d'utiliser un variable de session pour l'erreur: pourquoi fais-tu ainsi?
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 > yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024
3 avril 2021 à 21:44
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 ^^
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
3 avril 2021 à 20:44
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>







0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
3 avril 2021 à 21:19
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://forums.commentcamarche.net/forum/affich-37584941-php-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://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
3 avril 2021 à 21:40
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);

0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
Modifié le 3 avril 2021 à 22:00
Bonjour,

Visiblement... la page est bloquée par ton antivirus...

Quoi qu'il en soit, appliques les conseils (consignes.. ) que je t'ai donné et montre nous le code corrigé.
Si le souci persiste, essaye depuis un autre navigateur.

Et indique nous si tu bosses en local sur ton ordi .. ou si tu utilises un hébergeur.

Penses également à nous préciser l'url qui s'affiche dans ton navigateur lorsque tu envoies le formulaire.
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 > jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024
4 avril 2021 à 13:43
Bonjour; j'ai donc désactiver l'antivirus aucune diff
utiliser un autre navigateur aucune diff
en tout cas pour ce nouveau code..
je boss sur un un serveur virtuel (Wamp)

je vous montre maintenant l'url avec le code erreur affiché sur la page avec une capture et mon nouveau code j'ai essayais de tout re-codé à l'aide des consignes



dans les erreurs on voit bien "Connection Successful" j'ai rajouter un echo sur ma page de connexion à la bdd c'est que la connexion à la bdd est réussi
je pense que l'erreur vient du champ nom qui ne peut être vide (NULL) mais le champs et rempli en réalité

je suis maintenant sur un autre problème en cas tout merci beaucoup pour ton aide !

voici mon code :

<?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
$nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;
$altitude = !empty($_POST['altitude']) ? $_POST['altitude'] : NULL;
// Connexion à la base de données
require "Connection_bdd_hotel.php";

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');
}
// 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");
}
    // Redirection vers la page add_station.php
header("Location: add_station.php");
exit;

?>

0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538 > rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
4 avril 2021 à 14:02
le code ne devrait-il pas vérifier que $nom est "rempli", avant de faire l'insertion?
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 > jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024
4 avril 2021 à 14:03
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 ..
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 > yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024
4 avril 2021 à 14:09
avec ce code je vérifie si la variable $nom existe est n'est pas vide et elle est bien avant l'insertion dans mon code
$nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
3 avril 2021 à 22:09
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
4 avril 2021 à 16:37
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>
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
4 avril 2021 à 16:44
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>
0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 Ambassadeur 1 538
4 avril 2021 à 16:58
si je vois bien, tu as choisi de ne pas indiquer chaque fois le nom de chaque page, tout cela est donc bien confus.
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
4 avril 2021 à 17:05
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é
0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538
4 avril 2021 à 17:13
ces pages ont un nom, l'une s'appelle sans doute add_station.php, l'autre a un nom probablement secret.

chaque fois que tu mentionnes une page, utilise son nom.
chaque fois que tu nous montres du code, précise le nom de la page.
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 > yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024
4 avril 2021 à 17:24
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
0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538 > rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
4 avril 2021 à 17:34
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.
0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 > yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024
4 avril 2021 à 17:49
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 !!
0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538 > rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
4 avril 2021 à 17:57
pourras-tu alors marquer la discussion comme résolue?
0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 Ambassadeur 1 538
Modifié le 4 avril 2021 à 17:16
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.
0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
4 avril 2021 à 17:40
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>

0
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022
4 avril 2021 à 18:06
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 !
0