Page 1 sur 2

Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 19 nov. 2021, 10:30
par Merydian
Bonjour alors voilà.

J'ai crée un formulaire en HTML/CSS avec certains champ.
je voudrais que lorsque je remplis les données ''nom, prénom... etc'' qu'elles soient inscrite dans une base de données.
En sachant que j'ai déjà une base de donnée créée avec les même champs que sur mon site.
Est-ce que qqn pourrait m'aider à mettre mon HTML/CSS sur mon localhost ''MAMP'' et ensuite à joindre ma bdd ?

Voici mon code
!DOCTYPE html>
<html lang="fr" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Inscription</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link rel="stylesheet" href="css.css">
    <link rel="stylesheet" href="tg.php">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
    <script type="text/javascript" src="java.js">
    </script>
  </head>
  <body>

    <header>
    <div class="container">
      <div class="row">
        <div class="col s12 m12 l12" style="text-align:center; color:white;">
          <i class="large material-icons">add_circle</i>
          <h1>Inscription</h1>
          <p>Bienvenue sur la page d'inscription, veuillez remplir les informations ci-dessous</p>
        </div>
      </div>
      <div class="row" id="blanc">
        <div class="col l12 m12 s12" id="rectangle">
          <form method="GET">
            <!-- Champ prénom !-->

            <div class="input-field col s6">
            <label for="prenom">Prénom</label>
            <input class="validate" name="prenom" type="text" value="" id="prenom" placeholder="François" required>
            </div>

            <!-- Champ nom !-->

            <div class="input-field col s6">
            <label for="nom">Nom de famille</label>
            <input class="validate" type="text" value="" name="nom" id="nom" placeholder="Pignon" required text-capitalize>
            </div>

            <!-- Champ code postal !-->

            <div class="input-field col s6">
            <label for="code_postal">Code postal</label>
            <input class="validate" type="number" value="" name="code_postal" id="code_postal" placeholder="69000" minlength="5" maxlength="5" required>
            </div>

            <!-- Champ ville !-->

            <div class="input-field col s6">
            <label for="ville">Ville</label>
            <input class="validate" type="text" value="" name="ville" id="ville" minlength="3" placeholder="Lyon" required>
            </div>

            <!-- Champ date de naissance !-->
            <div class="input-field col s12">
            <label for="naissance">Date de naissance</label>
            <input type="text" class="datepicker" name="naissance" placeholder="10/02/1980" class="validate" required>
            </div>

            <!-- Champ email !-->

            <div class="input-field col s12">
            <label for="email">Email</label>
            <input class="validate" type="email" value="" name="email" id="p1" placeholder="[email protected]" required>
            <input class="validate" type='email' placeholder="[email protected]" onfocus="validateMail(document.getElementById('p1'), this);" oninput="validateMail(document.getElementById('p1'), this);" required>
            </div>

            <!-- Champ CGV !-->

            <div class="input-field col s12">
              <p>
                <label>
                  <input class="with-gap" name="group1" type="radio"/>
                  <span>J'accepte les conditions d'utilisations.</span>
                </label>
              </p>
            </div>

            <!-- Bouton envoyer !-->

            <div class="input-field col s12">
            <button class="btn waves-effect waves-light pulse" type="submit" name="action">Valider
            <i class="material-icons right">send</i>
            </button>
            </div>

          </form>

        </div>

      </div>
    </div>
  </header>


    
  </body>
</html>


*CSS*
@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,600,700");


html{
  min-height: 100%;
}

body{
background-image: linear-gradient(to right top, #051937, #004d7a, #008793, #00bf72, #a8eb12);background-position: center;
}

#nom{
  text-transform: uppercase;
}

.btn{
  background-color: #14b0f3;
}
.btn:hover{
  background-color: #0093d2;
}

header{
  padding: 7em 5em 4em 5em;
}

h1{
  font-family: 'Source Sans Pro', Arial, sans-serif;

}

#rectangle{
  border: solid 2px white;
  background-color: white;
  padding: 2em 2em 2em 2em;
  -webkit-box-shadow: 3px 4px 4px -2px rgba(0,0,0,0.75);
  -moz-box-shadow: 3px 4px 4px -2px rgba(0,0,0,0.75);
  box-shadow: 3px 4px 4px -2px rgba(0,0,0,0.75);
}

#blanc{
  max-width: 50%;
  min-width: 50%;
}

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 20 nov. 2021, 02:39
par two3d
Pour ajouter des données d'un formulaire, il te faut:

- Traiter le formulaire avec $_GET (ou avec $_POST si tu remplace "<form method="get">" par <form method="post">, je te conseil post, au moins les données sont pas dans l'URL) Doc PHP $_POST

- Vérifier les données (règle principale lorsqu'on traite les données d'un formulaire: Ne jamais faire confiance à ce que l'utilise entre, toujours vérifier, si on veut un mail il faut s'assurer que c'est bien un mail,etc)

- Enregistrer les données dans la BDD, tu pourra utiliser la fonction mysqli_query avec la commande INSERT INTO

C'est peut être une erreur de copié/collé mais il te manque un caractère en début de fichier HTML:

Code : Tout sélectionner

!DOCTYPE html>

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 22 nov. 2021, 17:03
par Merydian
<!DOCTYPE html>
<html lang="fr" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Inscription</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link rel="stylesheet" href="css.css">
    <link rel="stylesheet" href="tg.php">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
    <script type="text/javascript" src="java.js">
    </script>
  </head>
  <body>
    <header>
    <div class="container">
      <div class="row">
        <div class="col s12 m12 l12" style="text-align:center; color:white;">
          <i class="large material-icons">add_circle</i>
          <h1>Inscription</h1>
          <p>Bienvenue sur la page d'inscription, veuillez remplir les informations ci-dessous</p>
        </div>
      </div>
      <div class="row" id="blanc">
        <div class="col l12 m12 s12" id="rectangle">
          
          <form method="$_POST">
     
            <!-- Champ prénom !-->

            <div class="input-field col s6">
            <label for="prenom">Prénom</label>
            <input class="validate" name="prenom" type="text" value="" id="prenom" placeholder="François" required>
            </div>

            <!-- Champ nom !-->

            <div class="input-field col s6">
            <label for="nom">Nom de famille</label>
            <input class="validate" type="text" value="" name="nom" id="nom" placeholder="Pignon" required text-capitalize>
            </div>

            <!-- Champ code postal !-->

            <div class="input-field col s6">
            <label for="code_postal">Code postal</label>
            <input class="validate" type="number" value="" name="code_postal" id="code_postal" placeholder="69000" minlength="5" maxlength="5" required>
            </div>

            <!-- Champ ville !-->

            <div class="input-field col s6">
            <label for="ville">Ville</label>
            <input class="validate" type="text" value="" name="ville" id="ville" minlength="3" placeholder="Lyon" required>
            </div>

            <!-- Champ date de naissance !-->
            <div class="input-field col s12">
            <label for="naissance">Date de naissance</label>
            <input type="text" class="datepicker" name="naissance" placeholder="10/02/1980" class="validate" required>
            </div>

            <!-- Champ email !-->

            <div class="input-field col s12">
            <label for="email">Email</label>
            <input class="validate" type="email" value="" name="email" id="p1" placeholder="[email protected]" required>
            <input class="validate" type='email' placeholder="[email protected]" onfocus="validateMail(document.getElementById('p1'), this);" oninput="validateMail(document.getElementById('p1'), this);" required>
            </div>

            <!-- Champ CGV !-->

            <div class="input-field col s12">
              <p>
                <label>
                  <input class="with-gap" name="group1" type="radio"/>
                  <span>J'accepte les conditions d'utilisations.</span>
                </label>
              </p>
            </div>

            <!-- Bouton envoyer !-->

            <div class="input-field col s12">
            <button class="btn waves-effect waves-light pulse" type="submit" name="action">Valider
            <i class="material-icons right">send</i>
            </button>
            </div>

          </form>

        </div>

      </div>
    </div>
    
    <?php
    INSERT INTO client (prenom, Nom de famille, Code Postale, email)
    echo 'prénom : '.$_POST["prénom"].'<br>';
    echo 'Nom de famille : ' .$_POST["Nom de famille"].'<br>';
    echo 'Code Postale : ' .$_POST["Code Postale"].'<br>';
    echo 'email : ' .$_POST["email"].'<br>';
    echo 'Pays : ' .$_POST["pays"].'<br>';
  ?>
  </header>
  </body>
</html>
Salut alors déjà merci pour ta réponse.

Etant débutant surtout dans MySQL et dans le PHP, tu risques de te moquer de moi mais je n'arrive pas à faire fonctionner les commandes en PHP que tu m'as dit d'insérer.

J'ai l'impression que je les place au mauvais endroit car ça ne les prends même pas en compte lorsque j'enregistre ça me les affiches sur le bas de mon formulaire en faite.

Pourrais-tu m'aider ?

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 22 nov. 2021, 18:29
par two3d
Ton fichier doit être être en .php, pas en .html pour prendre en compte du code PHP dans du HTML.

Pour exécuter une requête PHP, il te faut utiliser mysqli_query (perso je préfère le style procédural qu'orienté objet, chacun ses goûts, les deux fonctionnent pareil ;) )

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 22 nov. 2021, 18:44
par Merydian
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
    printf("Échec de la connexion : %s\n", mysqli_connect_error());
    exit();
}

/* "Create table" ne retournera aucun jeu de résultats */
if (mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
    printf("Table myCity créée avec succès.\n");
}

/* Requête "Select" retourne un jeu de résultats */
if ($result = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) {
    printf("Select a retourné %d lignes.\n", mysqli_num_rows($result));

    /* Libération du jeu de résultats */
    mysqli_free_result($result);
}

/* Si nous avons à récupérer beaucoup de données, nous utilisons MYSQLI_USE_RESULT */
if ($result = mysqli_query($link, "SELECT * FROM City", MYSQLI_USE_RESULT)) {

    /* Notez que nous ne pouvons exécuter aucune fonction qui agit sur le serveur tant que
        le jeu de résultats n'est pas clos. Tous les appels retourneront un 'out of sync' 
    */
    if (!mysqli_query($link, "SET @a:='this will not work'")) {
        printf("Erreur : %s\n", mysqli_error($link));
    }
    mysqli_free_result($result);
}

mysqli_close($link);
?>
En faite je ne sais pas ce qu'il faut changer en fonction de mes informations ? Genre c'est les id qui faut introduire ? le nom des ligne dans ma bdd ? le nom de ma table ? C'est là dessus que je galère pas mal haha

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 22 nov. 2021, 18:52
par Merydian

<!DOCTYPE html>
<html lang="fr" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Inscription</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link rel="stylesheet" href="css.css">
    <link rel="stylesheet" src="tg.php">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
    <script type="text/javascript" src="java.js">
    </script>
  </head>
  <body>
    
    <header>
      
      
    <div class="container">
      <div class="row">
        <div class="col s12 m12 l12" style="text-align:center; color:white;">
          <i class="large material-icons">add_circle</i>
          <h1>Inscription</h1>
          <p>Bienvenue sur la page d'inscription, veuillez remplir les informations ci-dessous</p>
        </div>
      </div>
      <div class="row" id="blanc">
        <div class="col l12 m12 s12" id="rectangle">
          
          <form method="$_POST">
     
            <!-- Champ prénom !-->

            <div class="input-field col s6">
            <label for="prenom">Prénom</label>
            <input class="validate" name="prenom" type="text" value="" id="prenom" placeholder="François" required>
            </div>

            <!-- Champ nom !-->

            <div class="input-field col s6">
            <label for="nom">Nom de famille</label>
            <input class="validate" type="text" value="" name="nom" id="nom" placeholder="Pignon" required text-capitalize>
            </div>

            <!-- Champ code postal !-->

            <div class="input-field col s6">
            <label for="code_postal">Code postal</label>
            <input class="validate" type="number" value="" name="code_postal" id="code_postal" placeholder="69000" minlength="5" maxlength="5" required>
            </div>

            <!-- Champ ville !-->

            <div class="input-field col s6">
            <label for="ville">Ville</label>
            <input class="validate" type="text" value="" name="ville" id="ville" minlength="3" placeholder="Lyon" required>
            </div>

            <!-- Champ date de naissance !-->
            <div class="input-field col s12">
            <label for="naissance">Date de naissance</label>
            <input type="text" class="datepicker" name="naissance" placeholder="10/02/1980" class="validate" required>
            </div>

            <!-- Champ email !-->

            <div class="input-field col s12">
            <label for="email">Email</label>
            <input class="validate" type="email" value="" name="email" id="p1" placeholder="[email protected]" required>
            <input class="validate" type='email' placeholder="[email protected]" onfocus="validateMail(document.getElementById('p1'), this);" oninput="validateMail(document.getElementById('p1'), this);" required>
            </div>

            <!-- Champ CGV !-->

            <div class="input-field col s12">
              <p>
                <label>
                  <input class="with-gap" name="group1" type="radio"/>
                  <span>J'accepte les conditions d'utilisations.</span>
                </label>
              </p>
            </div>

            <!-- Bouton envoyer !-->

            <div class="input-field col s12">
            <button class="btn waves-effect waves-light pulse" type="submit" name="action">Valider
            <i class="material-icons right">send</i>
            </button>
            </div>

          </form>

        </div>

      </div>
    </div>
        <?php
        $mysqli = new mysqli("Forum2", "prenom", "nom", "code_postale");

        if (mysqli_connect_errno()) {
          printf("Échec de la connexion : %s\n", mysqli_connect_error());
          exit();
        }
        
        if (isset($_POST['formsend']));

        $prenom = $_POST['prenom'];
        $nom = $_POST['nom'];
        $code_postal = $_POST['code_postal'];

          if(!empty($_prenom) && !empty($nom) && !empty($code_postal)){
            echo "Votre prenom : ".$prenom."<br/>";
            echo "Votre nom : ".$nom."<br/>";
            echo "Votre CodePostal : ".$code_postal."<br/>";

      }
?>
    
    
  </header>
          
  </body>
</html>

Car je l'ai introduis comme ça mais ça ne fonctionne pas :(

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 22 nov. 2021, 18:53
par two3d
Au départ il faut te connecter à ta base:
$link = mysqli_connect("localhost", "my_user", "my_password", "world"); //infos du serveur, mot de passe du serveur, etc... pas des infos de tables MYSQL

//dans l'idéal tu doit vérifier si ya bien eu connexion:

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
    printf("Échec de la connexion : %s\n", mysqli_connect_error());
    exit();
}

//une fois fait, tu peux utiliser des requêtes sur ta base de données avec mysqli_query
//ex:
mysqli_query($link /* toujours avec la même variable que quand tu t'es connecté plus haut*/,"LA COMMANDE SQL");

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 23 nov. 2021, 12:55
par Merydian
Hello alors j'ai fais ce que tu m'as dit et ça avance ! j'ai bien le message d'erreur en bas de ma page comme quoi il n'arrive pas à se connecter ''Échec de la connexion : Connection refused'' sais-tu d'ou cela peut provenir ? Car j'ai bien mis le bon nom du serveur et son mot de passe.
 <?php
       $link = mysqli_connect("Forum2", "root", "Gregory12",); //infos du serveur, mot de passe du serveur, etc... pas des infos de tables MYSQL
        
        /* Vérification de la connexion */
      if (mysqli_connect_errno()) {
      printf("Échec de la connexion : %s\n", mysqli_connect_error());
      exit();
      }

        if (isset($_POST['formsend']));

        $prenom = $_POST['prenom'];
        $nom = $_POST['nom'];
        $code_postal = $_POST['code_postal'];

          if(!empty($_prenom) && !empty($nom) && !empty($code_postal)){
            echo "Votre prenom : ".$prenom."<br/>";
            echo "Votre nom : ".$nom."<br/>";
            echo "Votre CodePostal : ".$code_postal."<br/>";

      }
?>

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 23 nov. 2021, 14:53
par Merydian
Bon finalement j'ai essayé de changer de port j'ai mis le ''3306'' mais une autre erreur apparaît.
''Échec de la connexion : MySQL server has gone away''

Sauriez-vous m'aider ?

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 23 nov. 2021, 16:21
par two3d
Tu travail en local ? en ligne ? Si local, l'url du serveur c'est "localhost", le nom d'utilisateur c'est "root", sans mot de passe, et le nom de ta base de données
"localhost","root","","nom base"

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 23 nov. 2021, 16:26
par Merydian
Hello ! alors oui je travaille en local et j'ai fais ce que tu m'as dit mais j'ai toujours un message d'erreur ''Échec de la connexion : Access denied for user 'root'@'localhost' (using password: NO)''
(J'ai essayé avec le mdp ''root'' -> l'autre d'avant ça ne change pas à par le "(using password: NO)'' qui se met en "(using password: YES)''
  <?php
        
        
        ini_set('mysql.connect_timeout', 30);
        ini_set('default_socket_timeout', 30);

        


       $link = mysqli_connect("localhost", "root", "", "Forum 2"); //infos du serveur, mot de passe du serveur, etc... pas des infos de tables MYSQL
        
        /* Vérification de la connexion */
      if (mysqli_connect_errno()) {
      printf("Échec de la connexion : %s\n", mysqli_connect_error());
      exit();
      }

        if (isset($_POST['formsend']));

        $prenom = $_POST['prenom'];
        $nom = $_POST['nom'];
        $code_postal = $_POST['code_postal'];

          if(!empty($_prenom) && !empty($nom) && !empty($code_postal)){
            echo "Votre prenom : ".$prenom."<br/>";
            echo "Votre nom : ".$nom."<br/>";
            echo "Votre CodePostal : ".$code_postal."<br/>";

      }
?>

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 23 nov. 2021, 16:44
par two3d
Utilise le mot de passe que tu utilise pour te connecter à phpmyadmin

Ensuite il te faudra englober ton bloc avec isset, pas le fermer avec un point virgule: https://www.php.net/manual/fr/function.isset.php

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 23 nov. 2021, 17:01
par Merydian
Alors c'est bon je n'ai plus de message d'erreurs en bas de ma page HTML, mais en l'occurrence, les données ne s'inscrivent toujours pas dans ma BDD et euh ce que tu m'as dit de faire pour englober le bloc je sais pas lequel prendre comme exemple pour mon cas ^^'

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 23 nov. 2021, 17:04
par two3d
if (isset($_POST['formsend']));

Re: Forumulaire HTML/CSS à joindre à une base de donnée MYSQL

Posté : 23 nov. 2021, 17:23
par Merydian
  <?php
        
        
        ini_set('mysql.connect_timeout', 30);
        ini_set('default_socket_timeout', 30);

        


       $link = mysqli_connect("localhost", "root", "root", "Forum 2"); //infos du serveur, mot de passe du serveur, etc... pas des infos de tables MYSQL
        
        /* Vérification de la connexion */
      if (mysqli_connect_errno()) {
      printf("Échec de la connexion : %s\n", mysqli_connect_error());
      exit();
      }

        if (isset($_POST['formsend']))

        $prenom = $_POST['prénom'];
        $nom = $_POST['nom'];
        $code_postal = $_POST['code_postal'];

          if(!empty($_prenom) && !empty($nom) && !empty($code_postal)){
            echo "Votre prenom : ".$prenom."<br/>";
            echo "Votre nom : ".$nom."<br/>";
            echo "Votre CodePostal : ".$code_postal."<br/>";

      }
?>
    
    
  </header>
          
  </body>
</html>
Voilà donc mon code après avoir modifier ce que tu m'as dit.
Juste une question quand je sauvegarde mon php sur Visual Studio Code il me dit ça, qu'est-ce que cela veut dire concrètement ?
(Et mes données ne s'affiche toujours pas dans ma bdd)

''An error occured during document validation after save with the following message: An error occured, no output was received after executing the phpmd command''