update mySQL avec PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : update mySQL avec PHP

Re: update mySQL avec PHP

par BlitzMX » 19 juin 2019, 15:22

ok

Re: update mySQL avec PHP

par Saian » 19 juin 2019, 15:04

L'intérêt du prepare avec utilisation de paramètres nommés ou non (:param ou ?) et du execute avec passage des variables par un tableau c'est justement pour ne pas avoir à batailler soi même avec les considérations de préparation des paramètres de la requête.
Je t'encourage vivement à t'en servir dans ce genre de cas. Par exemple si ton titre ou ton contenu contiennent des apostrophes, la requête va planter. En utilisant les paramètres nommés ou non nommés tu n'auras pas ce genre de problème. ;)

Re: update mySQL avec PHP

par BlitzMX » 19 juin 2019, 14:41

C'est bon, ça marche avec:


 $req = "UPDATE billets SET titre=' $Titre ', contenu=' $Contenu ' WHERE id=' $Id '";

Re: update mySQL avec PHP

par BlitzMX » 19 juin 2019, 14:37

Bonjour

J'ai remplacer le code, ça semble fonctionner car il n'y as plus d'erreur mais la Base de donnée ne ce met pas a jour.






<?php

// BOUTON - VALIDER - TO DATABASE
if (isset($_POST["editer"])) {

    $Titre = $_POST["titre"];
    $Contenu = $_POST["contenu"];
    $Id = $_POST['id'];

    echo "<br>Titre: " . $Titre;
    echo "<br>Contenu: " . $Contenu;
    echo "<br>id: " . $Id;

    // PREPARE QUERY - use prepare pour les accents sur les lettres
    // EXAMPLE UPDATE QUERY "UPDATE MyGuests SET lastname='Doe' WHERE id=2"

    $bdd = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
    $req = "UPDATE billets SET titre=' . $Titre . ', contenu=' . $Contenu . ' WHERE id=' . $Id . '";
    $req = $bdd->prepare($req);

// $req = $bdd->prepare("UPDATE INTO billets(titre, contenu, date_creation) values (?, ?, NOW())");
    if (!$req->execute(array($Titre, $Contenu, $Id))) {
        echo $req->errorInfo()[2];
    }

header('Location: index.php');
exit();


}


Re: update mySQL avec PHP

par Saian » 19 juin 2019, 13:06

Salut, un update ne s'écrit pas
UPDATE billets SET titre = :titre AND contenu = :contenu WHERE id = :id
mais
UPDATE billets SET titre = :titre, contenu = :contenu WHERE id = :id

Sinon tu devrais tester le retour du PDOStatement::execute afin de savoir si l'exécution c'est bien passée car en l'occurrence tu dois avoir une erreur SQL. Et de plus tu passes les paramètres en tableau au execute ce qui est très bien, il ne faut donc pas mettre les paramètres directement dans la requête lors du prepare.
$req = $bdd->prepare('UPDATE billets SET titre = ?, contenu = ? WHERE id = ?');
if (!$req->execute(array($Titre, $Contenu, $id))) {
  echo $req->errorInfo()[2];
}

update mySQL avec PHP

par BlitzMX » 19 juin 2019, 12:43

Bonjour

Je continue mon projet, j'ai résolu quelques soucis, et... j'en rencontre d'autres.

J'ai un fichier "editer_billet.php" qui remonte les info de la base de donnée.
Je veux maintenant mettre a jour avec un update.

fichier editer_billet.php :



<?php


// BOUTON - VALIDER - TO DATABASE
if ($_SERVER['REQUEST_METHOD'] == "POST" AND isset($_POST["editer"])) {

    $Titre = $_POST["titre"];    

    // $Contenu = $_POST["contenu"];
    $Contenu = "test";

    // var_dump($Contenu);
    // PREPARE QUERY - use prepare pour les accents sur les lettres
    // EXAMPLE UPDATE QUERY "UPDATE MyGuests SET lastname='Doe' WHERE id=2"
    $id = $_POST['id'];    
    var_dump($id);

    
    //  sleep(10); Pause of 10 Seconds

    $bdd = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
    $req = $bdd->prepare("UPDATE billets SET titre=" . $Titre . " and contenu=" . $Contenu . " WHERE id=$id");

    // $req = $bdd->prepare("UPDATE INTO billets(titre, contenu, date_creation) values (?, ?, NOW())");
    $req->execute(array($Titre, $Contenu));

    header('Location: index.php');
    exit();
}


//// BUILD HTML INDEX CODE

// GET Index.html into $view
$view = file_get_contents(("editer_billet.html"));

//// REMPLACE {HTML_DEFAULT_START} BY CODE
$html_default_start = file_get_contents("html_default_start.html");
$view = str_replace("{HTML_DEFAULT_START}", $html_default_start, $view);

//// REMPLACE {HTML_DEFAULT_END} BY CODE
$html_default_end = file_get_contents("html_default_end.html");
$view = str_replace("{HTML_DEFAULT_END}", $html_default_end, $view);

// DEFINE DATABASE CONNECTION - PDO
try {
    $bdd = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
} catch (\Throwable $e) {
    die('Erreur : ' . $e->getMessage());
}

// GET CURRENT DATA INSIDE DATABASE
$bdd = new PDO('mysql:host=localhost;dbname=blog', 'root', '');
$req = $bdd->prepare('SELECT titre, contenu FROM billets WHERE id = :id');
$req->bindParam(':id', $_GET['id']);

$req->execute();
$result = $req->fetchall();

foreach ($result as $current_result) {
    $view = str_replace("{INPUT_TITRE}", '<input type="text" name="titre" id="Titre" value="' . $current_result["titre"] . '" required>', $view);
    $view = str_replace("{INPUT_ID}",  $_GET['id'] , $view);
    $view = str_replace("{INPUT_CONTENU}", '<div class="input_text"> <textarea id="textarea" name="contenu" required>' . $current_result["contenu"] . '</textarea></div>', $view);
    $view = str_replace("{ID}", $_GET['id'], $view);
}

// MONTRE TOUT LE CODE DE LA PAGE
echo $view;




et, bien sur, mon fichier "editer_billet.html" :



{HTML_DEFAULT_START}

<form action="editer_billet.php" method="post" class="form-example">

    <div class="form-example">
        <label for="name">Titre du billet: </label>
        {INPUT_TITRE}
        <br>
        {INPUT_ID}
        <!-- <input type="text" name="Titre" id="Titre" required> -->
    </div>

    <div class="form-example">
        <label for="name">Contenu: </label>
        <br>
        {INPUT_CONTENU}
        <!-- <div class="input_text"> <textarea id="textarea" name="Contenu" required></textarea></div> -->
        <br>

    </div>

    <div class="form-example">
        
        <input type="submit" name="editer" value="Valider">
    </div>

    <br>

</form>
<br>

{HTML_DEFAULT_END}




J'ai essaye de construire un autre fichier update exprès pour mais je n'arrive pas a débugger correctement.

Quelqu'un peux aider?

Merci