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 :

Vérifier l'existance d'une donnée dans la base avant insertion [MySQL]


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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut Vérifier l'existance d'une donnée dans la base avant insertion
    Bonjour,
    Comment faire pour vérifier dans une table si une information y est déja représentée ?

    En gros je dois ajouter des url dans une base via un formulaire, & je voudrais qu'à l'insertion mon script me dise : cette url éxiste déja dans la base, afin d'éviter de duppliquer inutilement l'information.

    Cordialement

  2. #2
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    Tu fais une recherche dans ta base à l'aide de la commande sql SELECT ensuite suivant l'existence ou non de ton url tu execute telle ou telle action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "SELECT * FROM tatable WHERE url = '{$_POST['url']]'";
    $result = mysql_query($sql);
    ...
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  3. #3
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    eh ben, avant ton INSERT, tu fais un SELECT avec les critères qui vont bien, et si la requête retourne plus de zéro réponses, tu fais ce que tu as à faire...

  4. #4
    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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    ok,
    merci à vous, je comprends le principe.
    mais je suis une grosse buse en php, (bah oui, faut bien débuter un jour )

    & je ne vois pas comment étaler l'opération...

  5. #5
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Il faut faire une requête avec mysql_num_rows() si je me souviens bien. Va voir sur la doc

  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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Bonjour,
    voila j'ai continuer mes recherches,
    est-ce que je peux y arriver avec quelque chose dans ce style :

    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
     
    $exist = false;
    $result = mysql_db_query("$database", "SELECT url FROM liens");
     
    while ($row = mysql_fetch_array($result))
    {
    if ($url = $row["url"])
    {
    $exist = true;
    }
    }
    if ($exist)
    {
     
    ajouter l'url
     
    }
    Si oui, je ne vois parcontre pas ou mettre le texte url existe déja...

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $result = mysql_db_query($database, "SELECT url FROM liens WHERE url = '" . $url . "'");
     
    if(mysql_num_rows($result) == 0)
    {
           //ajouter l'url
    }
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  8. #8
    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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    ok, je vais essayer cela

    & mon texte "l'url est déja présente dans la base"

    je le met en

    else {

    l'url...

    }

    c'est bien cela ?

  9. #9
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $result = mysql_db_query($database, "SELECT url FROM liens WHERE url = '" . $url . "'");
     
    if(mysql_num_rows($result) == 0)
    {
           //ajouter l'url
    }
    else
          echo "L'URL est déjà présente dans la base.";
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  10. #10
    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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Super ca marche !
    merci.

    Comment puis-je faire pour qu'il fasse le contrôle sur le domaine sans le www. & le tld de l'url soumise & dans les champs url & submit ?

    Cordialement

  11. #11
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Citation Envoyé par Him
    Comment puis-je faire pour qu'il fasse le contrôle sur le domaine sans le www. & le tld de l'url soumise & dans les champs url & submit ?
    Sans www tu récupères la chaine grace à substr() (Il faut faire attention s'il y a http:// aussi. Dans ce cas preg_replace est mieux):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace("#(http\://|ftp://)?(www)?\.(.*)#", "$1$3", $url);
    QUi retourne normalement tout sans les www.
    Je n'ai pas compris le reste

  12. #12
    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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Ce que je cherche à faire :

    Je dois encoder une grosse liste d'url dans une base de donnée, sortir les doublons, etc...

    donc je voudrais que le script refuse si :

    le domaine + .com soient considers comme doublons, et les sous domaines sont tolérés.

    il faut bien sur aussi une condition pour le sous-domaine & le www pour éviter un doublon de ceux-ci...


  13. #13
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    As-tu essayé avec parse_url() ?

  14. #14
    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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Hum j'éssayerais bien,
    mais je suis une buse, cela fait 2 mois que je payhachepay

    & j'ai pas encore tout les bons réflexes...

  15. #15
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  16. #16
    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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Je vous embete encore,
    mais je viens de constater un truc...

    En fet, chaque fois que je charge ma page, ma requete s'éxécute...
    Le simple fet d'aller sur la page, & voila une donnée enregistrée dans ma table,
    comment éviter cela ?

    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
     
    	// Ajout du lien dans la base de donnée
     
    $result = mysql_db_query(annuaire, "SELECT genre FROM choix WHERE type = '" . $type . "'");
     
    if(mysql_num_rows($result) == 0)
    {
           //ajouter l'url
    		mysql_query("INSERT INTO choix VALUES('','" . $type . "')");
     
          echo 'Le type d\'annuaire <u><b>'.$type.'</b></u> a été ajouté aux critères de sélection de la liste';
    }
     
    else {
          echo 'Le type d\'annuaire <u><b>'.$type.'</b></u> est déja présent dans les critères de sélection de la liste';
     
    }
     
    		?>
    Dois-je obligatoirement rénvoyer le code d'exécution dans une autre page ?

  17. #17
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    L'idée est de mettre tout le code lié à ta requête dans une conditionnelle if(). Par exemple pour un formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!empty($_POST)){
       // un formulaire a été reçu, on fait les requêtes
    }

  18. #18
    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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    Yahou, vous êtes géniaux...

    & moi je suis une pine..

    comment j'intègre ca à ma requete ?

    comme ceci :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    if(!empty($_POST)){
     
    	// Ajout du lien dans la base de donnée
     
    $result = mysql_db_query(annuaire, "SELECT genre FROM choix WHERE type = '" . $type . "'");
     
    if(mysql_num_rows($result) == 0)
    {
           //ajouter l'url
    		mysql_query("INSERT INTO choix VALUES('','" . $type . "')");
     
          echo 'Le type d\'annuaire <u><b>'.$type.'</b></u> a été ajouté aux critères de sélection de la liste';
    }
     
    else {
          echo 'Le type d\'annuaire <u><b>'.$type.'</b></u> est déja présent dans les critères de sélection de la liste';
     
    }
     
    		?>
     
    	<form action="edit-type.php" method="post" enctype="multipart/form-data">
    		<p>
     
    		<?php
     
    	$printvalues = mysql_query('SELECT * FROM choix ORDER BY id DESC');
    	while ($print = mysql_fetch_array($printvalues)) 
    	{
    		?>
     
     
    <input type="text" size="30" name="nom" value="<?php echo $print['genre']; ?>" />
     
    		<?php
    	}
    mysql_close();
    		?>
     
    		</p>
     
    			<input type="hidden" name="id" value="<?php echo $id; ?>" />
    			<input type="submit" value="poster" />
     
    	</form>
    <?php
     
    }
     
    ?>
    merci pour vos aides à tous

  19. #19
    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 : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Points : 112
    Points
    112
    Par défaut
    non, ce n'est pas ca,
    car la cela ne s'affiche plus...

  20. #20
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Le souci est que tu ne nous dis pas du tout de quoi dépend ta requête : est-ce une action utilisateur, est-elle de type GET ou POST, etc.

    Le mieux est que tu réfléchisses à ce que je t'ai proposé...
    S'il s'agit d'insérer un nouvel article suite à une action utilisateur, ce sera certainement au moyen d'un formulaire, ce qui a tendance à utiliser la méthode POST et donc ce que j'ai proposé ci-dessus. Tu te rends comptes le nombre de suppositions que je dois faire pour te répondre, puisque tu ne donnes pas toutes les infos ? Évidemment, il y a de grandes chances pour que l'une des suppositions soit fausse, ce qui rend inexact mon conseil.

    Il ne faut pas avaler tout cru ce que je te livre, il faut essayer de voir à quoi ça correspond.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Vérifier l'existence d'une clef dans la base de registre
    Par CHARLI BONGO dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/05/2013, 17h49
  2. Vérifier l'existence d'une table dans une base de données
    Par mounim_taoufik dans le forum Administration
    Réponses: 8
    Dernier message: 02/03/2010, 16h24
  3. tester l'existance d'une donnée dans une BDD
    Par rpg59 dans le forum C++
    Réponses: 4
    Dernier message: 28/05/2008, 09h30
  4. Vérifier l'existence d'une valeur dans un ComboBox
    Par logiciel_const dans le forum Composants VCL
    Réponses: 6
    Dernier message: 08/03/2008, 09h07
  5. vérifier l'existance d'une table dans une base de donnée
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/10/2005, 11h39

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