L3 Info : PHP et Applications Web
 
◃  Ch. 4 Le protocole HTTP  ▹
 

Illustrations des incohérences produites :

Cas 1 : édition et méthode GET

  • On dispose d'une table Nom(int id, string nom) avec une gestion automatisée de la clé.
  • On réalise un formulaire pour mémoriser de nouveaux noms dans la table qui utilise la méthode GET
  • Résultat : script d'insertion avec GET

Cas 2 : passage à la méthode POST

Code PHP (version GET)

try {
    if (isset($_GET['action'])) {
        $dbs1 = $dbh->prepare('INSERT INTO nom(nom) VALUES(:nom)');
        $dbs1->bindValue(':nom', $_GET['nom']);
        $dbs1->execute();
    }
    else {
        $dbs1 = $dbh->query('DROP TABLE IF EXISTS nom ');
        $dbs1 = $dbh->query('CREATE TABLE nom (id integer auto_increment PRIMARY KEY, 
                                               nom varchar(25))');
        $dbs1 = $dbh->query("INSERT INTO nom(nom) VALUES ('nom 1'),('nom 2'),('nom 3')");
    }

    $dbs1 = $dbh->query('SELECT * from nom');
    $tab = $dbs1->fetchAll($fetch_style = PDO::FETCH_ASSOC);

    echo "<h1>Contenu de la table nom</h1>";
    echo "<table border='1'>\n";
    $colnames = array_keys($tab[0]);
    echo "<tr>\n";
    foreach ($colnames as $col) {
        echo "<th>" . $col . "</th>";
    }
    echo "</tr>\n";

    foreach ($tab as $ligne) {
        echo "<tr>\n";
        foreach ($ligne as $col) {
            echo "<td>" . $col . "</td>";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";
} catch (PDOException $e) {
    print "<br />Erreur !: " . $e->getMessage() . "<br/>";
    die();
}
echo "<h2>Formulaire utilisant la méthode GET</h2>";
echo "<form action='' method=get>
<input type='text' name='nom' />
<input type='submit' name='action' value='inserer'/>
</form>";