Control champs et doublons

Répondre
jackbocar
le 29/07/2010 à 06:40
jackbocar
Bonjour,

Je n'arrive pas à faire fonctionner ensemble le control des champs remplis et le control des doublons.

C'est l'un ou l'autre.

Merci de me dire où j'ai fait des erreurs.

Jack Bocar


<?php
if (isset($_POST['enregistrement']) && $_POST['enregistrement'] == 'Enregistrement') {
if ((isset($_POST['num']) && !empty($_POST['num']))) {

if (isset($_POST['date_acte']) && isset($_POST['maison']) && isset($_POST['news']) && isset($_POST['sources'])) {
$erreur = 'Au moins un des champs est vide.';

if (!empty($_POST['date_acte']) && !empty($_POST['maison']) && !empty($_POST['news']) && !empty($_POST['sources'])) {

$hostname = '11111';
$username = '11111';
$password = '11111';
$dbname = '1111';

try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 'SELECT count(*) FROM cartulaires WHERE num="'.addslashes($_POST['num']).'"';
foreach ($dbh->query($sql) as $data)


if ($data[0] == 0) {
$sql = 'INSERT INTO cartulaires VALUES("", "'.addslashes($_POST['num']).'", "'.addslashes($_POST['date_acte']).'", "'.addslashes($_POST['maison']).'", "'.addslashes($_POST['news']).'", "'.addslashes($_POST['sources']).'", "0")';
$dbh->exec($sql);
header('Location: page.php');
exit();
}
else {
$erreur = 'Ce numereau est dans la table';
}
}
catch(PDOException $e)
{
echo $sql . '<br />' . $e->getMessage();
}
}
}
}
}
?>
jackbocar
le 29/07/2010 à 07:29
jackbocar
Bonjour,

J'ai trouvé une solution sur un de mes bouquins, il est ancien, il date de 2002, et je ne suis pas sûr que l'utilisation de $_REQUEST est encore une variable à utiliser à l'heure actuelle.

Merci de me dire si je peux utiliser cette variable sans problème ou si il faut la protéger et de quelle manière

Jack Bocar



<?php
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
if ((isset($_POST['num']) && !empty($_POST['num']))) {
if (empty($_REQUEST['date_acte']) || empty($_REQUEST['maison']) || empty($_REQUEST['news']) || empty($_REQUEST['sources']))
die("Erreur : tous les champs doivent être remplis");

$hostname = '1111';
$username = '1111';
$password = '1111';
$dbname = '1111';

try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 'SELECT count(*) FROM cartulaires WHERE num="'.addslashes($_POST['num']).'"';
foreach ($dbh->query($sql) as $data)


if ($data[0] == 0) {
$sql = 'INSERT INTO cartulaires VALUES("", "'.addslashes($_POST['num']).'", "'.addslashes($_POST['date_acte']).'", "'.addslashes($_POST['maison']).'", "'.addslashes($_POST['news']).'", "'.addslashes($_POST['sources']).'", "0")';
$dbh->exec($sql);
header('Location: index_1.php');
exit();
}
else {
$erreur = 'Ce numereau est dans la table';
}
}
catch(PDOException $e)
{
echo $sql . '<br />' . $e->getMessage();
}
}
}
?>
moogli
le 29/07/2010 à 18:17
moogli
Salut,

avec RESQUET tu ne sais pas d'où viens l'info (GET ou POST etc).

C'est donc à mon avis à proscrire.

Ensuite je ne vois pas en quoi les REQUEST dans le if au début fait une recherche de doublon, elle est faite pas ta requete select count (qui d'ailleur ne devrais pas etre avec un count(*)
mais plutot un count(clef primaire)).

quand au die en haut ce n'est pas propre d'arreter le script comme ça, il vaut mieux un beau message d 'erreur le long du formulaire ;)

@+
Il en faut peu pour être heureux !!!!!
jackbocar
le 04/08/2010 à 15:17
jackbocar
Bonjour,

Merci de ta réponse.

Je travail avec des ouvrages, par exemple j'ai réutiliser PHP 5 et MySql 5, pour refaire mes codes, et sur cet ouvrage qui date de 2007. Il est utiliser très souvent ce RESQUEST.

Ensuite pour ce qui est de COUNT(*), j'ai toujours fait comme ça et ça a toujours très bien fonctionné.

Pour ce qui est le la clé primaire, sur la recherche du même nom ou du même numéro ou de ce que tu veux, je veux bien que tu me donnes un exemple avec une clé primaire, je ne vois pas comment réaliser ce code.

Merci

Jack Bocar
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours