[RESOLU] Liaison bdd à son code php

Eléphanteau du PHP | 33 Messages

24 févr. 2022, 14:58

1er code
<?php

//constantes d'environnement

define("DBHOST", "localhost");
define("DBUSER", "root");
define("DBPASS", "root");
define("DBNAME", "Forum");

//DSN de connexion
$dsn = "mysql:dbname=".DBNAME.";host=".DBHOST;

//Connexion à la bdd
try{
    $db = new PDO($dsn, DBUSER, DBPASS);

    $db->exec("SET NAMES utf8");
    
    $db->setAttribute
    (PDO::ATTR_DEFAULT_FETCH_MODE,
     PDO::FETCH_ASSOC);

}catch(PDOException $e){
    die("Erreur:".$e->getMessage());
}

$sql = "SELECT * FROM `T_mails`";
$requete = $db->query($sql);

$requete = $requete->fetch();

$sql ="INSERT INTO `T_mails`(`adresse_mails`) VALUES (`[email protected]`)";
$requete = $db->query($sql);

$sql = "UPDATE `T_mailso` SET `adresse_mails` = `[email protected]`
WHERE `id` = 1";

$requete = $db->query($sql);



echo "<pre>";
var_dump($requete);
echo "</pre>";
?>
2èmes code
<?php 

if(!empty($_POST)){
  if(
    isset($_POST["mail"])
    && !empty($_POST["mail"])
){
  $mail = strip_tags($_POST["mail"]);
  require_once "../PHP/JoinBDD.php";
  $sql = "INSERT INTO `T_mails` (`adresse_mails`) VALUES (:adresse_mails)";

$query = $db->prepare($SQL);
$query->bindValue(":adresse_mails", $mail, PDO::PARAM_STR);
if($query->execute());{
  die("Une erreur est survenue");

}

$id = $db->lastInsertId();
die("mail ajouté sous le numéro $id");

}else{
  die("Formulaire incomplet");
}

}

include('../PHP/JoinBDD.php'); 



?>
<!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="../HTML/Login.html">
    <link rel="stylesheet" href="../CSS/Inscription.css">
    <link rel="stylesheet" href="../JS/inscription.js">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
    </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 action="../PHP/JinBDD.php" 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="TonDaronLeVideur" 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="Martini meilleur nom" 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="C Marseille BB" 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="mail">mail</label>
            <input type="text" name="mail" id="mail" placeholder="[email protected]" 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>
Hello alors, lorsque je veux insérer un nouvel utilisateur avec ''INSERT INTO'' bah moi ma page devient blanche sauf que aucun donnée n'est enregistrée dans ma base de donnée, sachant que juste avant pour récupérer les données d'un utilisateur déjà créé depuis la base de donnée cela fonctionne. (En l'affichant sur la page)

Mais pas lorsque je veux le créer avec INSERT et j'ai le même soucis pour la modification et je comprends pas ce qu'il ne va pas.

Quelqu'un pourrait m'aider ? (J'essaye juste de faire avec un champ mail pour tester, et dans la structure de ma bdd j'ai que ''id_mails'', ''adresse_mails'', et date. Mais la date se met seule automatiquement.



Mercii !

Mammouth du PHP | 2703 Messages

24 févr. 2022, 15:02

Hello alors, lorsque je veux insérer un nouvel utilisateur avec ''INSERT INTO'' bah moi ma page devient blanche
tutoriels/page-blanche-script-php-comme ... 73178.html

Eléphanteau du PHP | 33 Messages

24 févr. 2022, 15:25

Hello alors, lorsque je veux insérer un nouvel utilisateur avec ''INSERT INTO'' bah moi ma page devient blanche
tutoriels/page-blanche-script-php-comme ... 73178.html
Hello alors j'ai fais ce que tu m'as dit ! Et dû coup la première erreur je comprends pas trop ?
Et les autres c'est parce que mes fichiers sont enregistrés dans DROPBOX ? De ce que j'ai entendu cela pouvait poser quelque soucis non ?


Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column '[email protected]' in 'field list' in /Users/dylan/Dropbox/Mac/Desktop/Développement/ForumMaccaud/PHP/JoinBDD.php:37 Stack trace: #0 /Users/dylan/Dropbox/Mac/Desktop/Développement/ForumMaccaud/PHP/JoinBDD.php(37): PDO->query('INSERT INTO `T_...') #1 /Users/dylan/Dropbox/Mac/Desktop/Développement/ForumMaccaud/HTML/Inscription.php(28): include('/Users/dylanmar...') #2 {main} thrown in /Users/dylan/Dropbox/Mac/Desktop/Développement/ForumMaccaud/PHP/JoinBDD.php on line 37

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 févr. 2022, 16:43

Tu as des problèmes de guillemets pour tes chaines de caractères qui doivent être ' et non `
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 33 Messages

24 févr. 2022, 17:34

Tu as des problèmes de guillemets pour tes chaines de caractères qui doivent être ' et non `

Bon dû coup j'ai bien changé les guillemets comme tu m'as dit sauf que j'ai un petit soucis maintenant c'est que j'ai mis que tous les id supérieurs à 3 sont supprimés mais c'est que ça me supprime TOUS mes id même le 1 et 2 haha. Comment faire pour que ça supprime uniquement ceux supérieurs à 3
<?php

//constantes d'environnement

error_reporting(E_ALL); 
ini_set("display_errors", 1);


define("DBHOST", "localhost");
define("DBUSER", "root");
define("DBPASS", "root");
define("DBNAME", "Forum");

//DSN de connexion
$dsn = "mysql:dbname=".DBNAME.";host=".DBHOST;

//Connexion à la bdd
try{
    $db = new PDO($dsn, DBUSER, DBPASS);

    $db->exec("SET NAMES utf8");
    
    $db->setAttribute
    (PDO::ATTR_DEFAULT_FETCH_MODE,
     PDO::FETCH_ASSOC);

}catch(PDOException $e){
    die("Erreur:".$e->getMessage());
}

$sql = "SELECT * FROM `T_mails`";
$requete = $db->query($sql);

$requete = $requete->fetch();

$sql ="INSERT INTO `T_mails`(`adresse_mails`) VALUES ('[email protected]')";
$requete = $db->query($sql);

$sql = "DELETE FROM `T_mails` WHERE 'id' > '3'";
$requete = $db->query($sql);


echo "<pre>";   
var_dump($requete);
echo "</pre>";
?>



Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 févr. 2022, 18:16

3 n'est pas une chaine de caractère mais un nombre donc pas de guillemets ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 33 Messages

24 févr. 2022, 18:29

3 n'est pas une chaine de caractère mais un nombre donc pas de guillemets ;-)
Sauf que si je mets pas de guillemets ça me met l'erreur justement :(

ncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: 'id' in /Users/dylanmartini/Dropbox/Mac/Desktop/Développement/ForumMaccaud/PHP/JoinBDD.php:53 Stack trace: #0 /Users/dylanmartini/Dropbox/Mac/Desktop/Développement/ForumMaccaud/PHP/JoinBDD.php(53): PDO->query('DELETE FROM `T_...') #1 /Users/dylanmartini/Dropbox/Mac/Desktop/Développement/ForumMaccaud/HTML/Inscription.php(28): include('/Users/dylanmar...') #2 {main} thrown in /Users/dylanmartini/Dropbox/Mac/Desktop/Développement/ForumMaccaud/PHP/JoinBDD.php on line 53
<?php


error_reporting(E_ALL); 
ini_set("display_errors", 1);

//constantes d'environnement

define("DBHOST", "localhost");
define("DBUSER", "root");
define("DBPASS", "root");
define("DBNAME", "Forum");

//DSN de connexion
$dsn = "mysql:dbname=".DBNAME.";host=".DBHOST;

//Connexion à la bdd
try{
    // On instancie PDO
    $db = new PDO($dsn, DBUSER, DBPASS);

    // On envoie les données en UTF8
    $db->exec("SET NAMES utf8");
    
    // On définit le mode de 'Fetch'par défaut
    $db->setAttribute
    (PDO::ATTR_DEFAULT_FETCH_MODE,
     PDO::FETCH_ASSOC);

}catch(PDOException $e){
    die("Erreur:".$e->getMessage());
}


// Ici on est connectés à la base
// On peut récupérer la liste des utilisateurs(T_mails)
$sql = "SELECT * FROM `T_mails`";

// On exécute la requête
$requete = $db->query($sql);

// On récupère les données (Fetch ou FetchAll)
$requete = $requete->fetch();

// Ajouter un utilisateur
$sql ="INSERT INTO `T_mails`(`adresse_mails`) VALUES ('[email protected]')";
$requete = $db->query($sql);



// Supprimer des utilisateurs
$sql = "DELETE FROM `T_mails` WHERE 'id' > 12";
$requete = $db->query($sql);

//Savoir le nombre de lignes qui ont été supp
echo $requete->rowCount();

echo "<pre>";   
var_dump($requete);
echo "</pre>";
?>

Eléphanteau du PHP | 33 Messages

25 févr. 2022, 18:05

Est-ce que quelqu'un pourrait m'aider pour que quand je veuille supprimer 1 utilisateur dans ma base de données en fonction de son id que ça le fasse et non pas que ça supprime tous mes utilisateurs dans ma base de donnée. ?
// Supprimer des utilisateurs
$sql = "DELETE FROM `T_mails` WHERE 'id' > 3";
$requete = $db->query($sql);
Car cela me donne un message d'erreur.

ynx
Mammouth du PHP | 586 Messages

25 févr. 2022, 19:13

Bonjour,

La colonne id de la table T_mails est bien de type int dans la base de données ?

Eléphanteau du PHP | 33 Messages

28 févr. 2022, 15:42

Bonjour,

La colonne id de la table T_mails est bien de type int dans la base de données ?
Hello oui mon id_mails est bien de type int

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

28 févr. 2022, 16:30

id_mails ou id ? Car dans ta requête SQL tu la nommes juste 'id'
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 33 Messages

28 févr. 2022, 16:52

id_mails ou id ? Car dans ta requête SQL tu la nommes juste 'id'
// Supprimer des utilisateurs
$sql = "DELETE FROM `T_mails` WHERE 'id_mails' = 20";
$requete = $db->query($sql);
Bah je m'étais trompé sur l'autre post mais ça me met toujours une erreur (Je suis sur que sur ma bdd c'est id_mails)

Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: 'id_mails' in

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

28 févr. 2022, 17:06

Teste ta requête dans phpMyAdmin, et vérifie le format de tes champs de bdd, car non ce n'est pas un format INT à priori
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 33 Messages

28 févr. 2022, 17:47

Teste ta requête dans phpMyAdmin, et vérifie le format de tes champs de bdd, car non ce n'est pas un format INT à priori
Est-ce que tu aurais un lien qui m'explique comment faire ? Car je sais pas quoi insérer dans la console pour tester ma commande :(

Eléphanteau du PHP | 33 Messages

28 févr. 2022, 18:26

Teste ta requête dans phpMyAdmin, et vérifie le format de tes champs de bdd, car non ce n'est pas un format INT à priori
''SELECT * FROM `T_mails` WHERE id_mails = 20''

J'ai testé une requête comme ça (je sais pas si c'est correct) mais en tout cas après avoir fait ça j'ai bien mon adresse mail avec mon id (20) qui s'affiche, la requête a fonctionné pour le coup.