éviter les doublons lors d'un enregistrement !?!?!?

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 : éviter les doublons lors d'un enregistrement !?!?!?

par FAbrice » 03 avr. 2005, 13:00

alut :)

dsl pour le delais mais vu le tps qu'il a fait hier ...... 8)

j'ai essayé d'adapter ton bout de code mais sans succes :roll: ( ici, la colonnes actions est remplacée par la colonne 'nom')

en fournissant le code, je pense que 'lon pourra mieux cibler le pb:
<?php require_once('../../Connections/ateliermeca.php'); ?>
<?php
$currentPage = $_SERVER["PHP_SELF"];

$maxRows_mba = 11;
$pageNum_mba = 0;
if (isset($_GET['pageNum_mba'])) {
  $pageNum_mba = $_GET['pageNum_mba'];
}
$startRow_mba = $pageNum_mba * $maxRows_mba;

mysql_select_db($database_ateliermeca, $ateliermeca);
$query_mba = "SELECT Nom FROM personnel ORDER BY Nom ASC";
$query_limit_mba = sprintf("%s LIMIT %d, %d", $query_mba, $startRow_mba, $maxRows_mba);
$mba = mysql_query($query_limit_mba, $ateliermeca) or die(mysql_error());
$row_mba = mysql_fetch_assoc($mba);

if (isset($_GET['totalRows_mba'])) {
  $totalRows_mba = $_GET['totalRows_mba'];
} else {
  $all_mba = mysql_query($query_mba);
  $totalRows_mba = mysql_num_rows($all_mba);
}
$totalPages_mba = ceil($totalRows_mba/$maxRows_mba)-1;

$queryString_mba = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_mba") == false && 
        stristr($param, "totalRows_mba") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_mba = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_mba = sprintf("&totalRows_mba=%d%s", $totalRows_mba, $queryString_mba);
?>
voila le pb.

merci de votre aide,
FAb qui lui fourni les problèmes :oops:

par albat » 01 avr. 2005, 21:58

Peut-être, mais moi je fournis le code ! :langue:

par Ouaibou » 01 avr. 2005, 21:30

Ca revient au même que ce que j'ai dit

par albat » 01 avr. 2005, 21:25

Le code que je t'ai donné est incomplet.
Il manque l'exécution des requêtes (les mysql_fetch_assoc, les extract, etc.)

Cependant, il a pour effet de :
1. vérifier si la variable fournie par l'utilisateur est ou non déjà présente dans la base (requête 1)
2. insérer cette valeur - nouvelle - dans la base si elle n'y est pas déjà (requête 2)

Tu as donc là tout le squelette pour construire ton appli. :wink:

par FAbrice » 01 avr. 2005, 20:33

alut

une petite question:
le code que tu viens de me fournir, il ne remplace en rien mon code actuel? il vient juste en -update :)

(je te pose cette question car je n'ai pas le fichier ce soir, mais je l'aurais demain pour faire le test)

meri bcq,
FAb

par albat » 01 avr. 2005, 20:16

$req1 = "SELECT count(actions) AS total FROM table WHERE actions=".$new_action;
// exécution de la requête
if ($total>0)
   echo "L'action ".$new_action." est déjà enregistrée."
   else
   { $req2 = "INSERT INTO table (actions) VALUES ('".$new_action."')";
   // exécution de la requête
   }

par FAbrice » 01 avr. 2005, 20:16

alut

ton code est en fait une ruse par rapport a ce que cherche! 8)
ca peut marcher!!!

ce que je cherche a faire, c une méthode que l'on utilise souvent sous XL en VBA. on vérifié dans la table colonne (ici "actions") que la nouvelle valeur n'y est pas déja présente!

en ce qui concerne les clées unique, elle est déja utilisé sur la colonne ID.

merci de ton aide,
FAb

par Ouaibou » 01 avr. 2005, 20:05

Bonsoir,

Il me semble que lorsque tu cré une table tu peux choisir une option unique.

Tu as le choix entre primaire, index et unique. Essai avec unique peut être que ça marche. Mais de toute façon le mieux est de vérifier avec php si il existe pas un champs avec les même attributs.

Pour cela tu fait une requête pour sélectionner l'attribut donc tu veux vérifier le "doublonnage". Ensuite tu récupère le nombre d'attributs trouvé grace à la reqûete faite précédemment :
$nb = mysql_num_rows($sql);
Si $nb est supérieur à 1 c'est qu'il y a un double.

éviter les doublons lors d'un enregistrement !?!?!?

par FAbrice » 01 avr. 2005, 19:58

Bonsoir tout le monde du forum 8)

une petiote question en cette belle soirée d'avril

comment peut-on vérifier les données d'une table lors d'un enregistrement pour éviter les doublons???

je m'explique.

g une table avec les colonnes suivantes: ID et actions.

actuellement, j'enregistre sans probleme mes données. (ID est la clée et est en auto-incrémente).

je cherche le moyen pour eviter d'insérer une action déjà existante dans la table lors de l'enregistrement!

est ce que quelqu'un aurait une solution???