IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

insertion non voulue, lors de verifications


Sujet :

PHP & Base de données

  1. #1
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut insertion non voulue, lors de verifications
    Bonjour,

    J'ai éssayé de mettre un "anti doublon" lors d'insertion de données via mon formulaire

    J'introduis donc des urls dans une base de donnée, & je veux m'assurer que cette url n'éxiste pas déja avant de l'insérer.

    Seulement systématiquement quand je charge la page du formulaire pour la premiere fois (base vide) le script envoie directement une valeur vide dans la base. ( pas la deuxieme, vu que la il dit que l'adresse éxiste déja )

    mon code ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    		<?php 
    			mysql_connect(*********) or die(mysql_error());
    			mysql_select_db("******") or die(mysql_error());
     
    	// Ajout du lien dans la base de donnée
     
    $result = mysql_query("SELECT url FROM liens WHERE url = '" . $url . "'") or die(mysql_error());
     
    if(mysql_num_rows($result) == 0)
    {
           //ajouter l'url
    		mysql_query("INSERT INTO liens VALUES('','" . $url . "','" . $nom . "', '" . $type . "', '" . $urlsubmit . "')");
     
          echo 'l\'annuaire <u><b>'.$nom.'</b></u> à été ajouté dans la liste';
    }
     
    else {
          echo 'L\'annuaire <u><b>'.$nom.'</b></u> est déja présent dans la liste';
     
    }
     
    		?>
     
    	<form action="add-liens.php" method="post" enctype="multipart/form-data">
     
    .
    .
    .
    Comment puis-je éviter cet ajout automatique ?

    Cordialement

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Points : 120
    Points
    120
    Par défaut
    Salut,

    du peu que je comprenne, tu as mutualisé ton script de sorte qu'il serve a la fois pour afficher le formulaire et a la fois pour l'insert.

    Du coup qd tu requete ce script, il est normal que le serveur qu'il fasse ce qu'on lui dit ( ce qu'il y a sur ce script) peut être.

    que la partie insertion devrait être conditionnée par la détection du $_POST.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    mysql_connect() or die(mysql_error());
    mysql_select_db("") or die(mysql_error());
    // Ajout du lien dans la base de donnée
    if(isset($POST["url"]))
    {
    	$result = mysql_query("SELECT url FROM liens WHERE url = '" . $url . "'") or die(mysql_error());
    	if(mysql_num_rows($result) == 0)
     	{
    		//ajouter l'url
    		mysql_query("INSERT INTO liens VALUES('','" . $url . "','" . $nom . "', '" . $type . "', '" . $urlsubmit . "')");
    		echo 'l\'annuaire <u><b>'.$nom.'</b></u> à été ajouté dans la liste';
    	}
    	else 
    		echo 'L\'annuaire <u><b>'.$nom.'</b></u> est déja présent dans la liste';
    }
    ?>
    <form action="add-liens.php" method="post" enctype="multipart/form-data">
     
    .
    .

  3. #3
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Salut

    je n'ai pas trop compris ce que tu voulais dire avec le POST (noobs powaa)

    mais je crois avoir compris que tu me conseilles de splitter les pages

    avec une page form.php qui réenvoie sur une page formok.php c'est bien cela ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Points : 120
    Points
    120
    Par défaut
    non du tout,

    garde comme çà ne split pas, fait juste comme j'ai fait.

    A ce propros je te conseille de prendre l'habitude d'utiliser le super global $_POST.

    C'est à dire $_POST["nom_du_champ"] plutot que directement $nom_du_champ.

    donc pour le cas ou ton champ texte pur l'url s'appelle url, utiliser $_POST["url'] plutot que $url.

    -Cela rend ton code plus portable, notamment pour le cas ou tu devrais t'accomoder d'un serveur avec register globals a off.

    -cela permet du premier coup d'oeil, pour quiconque ne connait pas ton script de determiner la provenance de ta variable (parametre passé en methode post).d'ailleurs celame fait pense que j'ai supposé que tu est en post mais si çà se trouve tu utilse la méthode get.
    A cet instant précis je ne sais pas pour toi mais l'inconvénient de ne pas utiliser les superglobaux est palpables :-)
    => donc si t'es en get remplace $_POST["url"] par $_GET["url"]
    non je déconne, y a un bout de ton formulaire qui dépasse en bas de ton script :-)

    -il est accessible de partout, de tous les contextes que ce soit de l'interieur d'une fonction utilisateur, ou d'une classe etc.

  5. #5
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    ok, je test ca

    merci à toi pour toutes ces explications !

  6. #6
    Him
    Him est déconnecté
    Membre régulier Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    ah au fet,
    il faut que j'applique cela sur chacunes des autres variables du formulaire alors ?

    Cordialement

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Points : 120
    Points
    120
    Par défaut
    Bah si elles marchaient comme çà non, t'enquiquine pas pour çà mais prend cette habitude parcontre a l'avenir, c'est beaucoup plus parlant (surtout pour les autres) dans un script de voir un $_POST["ma_var"] que de voir débarquer $ma_var de nulle part.

    Bref c'est un détail, l'essence de ma solution c'est surtout de tester justement $_POST["url"] avant d'appliquer ou pas la portion de script qui fait l'insertion en base, l'idée étant de s'assurer avant ce travail que le formulaire avait bien été soumis, çà évite l'insertion des le premier acces au script ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage non voulu lors de parcours d'un dossier
    Par obito dans le forum Langage
    Réponses: 5
    Dernier message: 02/03/2009, 16h02
  2. [Linq To SQL] Insertion non voulue
    Par LE NEINDRE dans le forum Accès aux données
    Réponses: 3
    Dernier message: 27/10/2008, 13h51
  3. Réponses: 3
    Dernier message: 27/03/2008, 11h49
  4. Réponses: 11
    Dernier message: 17/01/2008, 18h53
  5. Maj non voulue d'un object lors d'une lecture
    Par c.tranquille dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/03/2007, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo