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 :

Sauvegarde recherches dans la base


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 12
    Par défaut Sauvegarde recherches dans la base
    Salut, vous allez tout de suite comprendre que je suis une bille ! Je pense cependant que mon problème n'est pas insurmontable et que vous êtes nombreux à pouvoir m'aider en trois fois rien de temps.

    J'essaie sur mon site de sauvegarder les requettes tapées dans le formulaire de recherche dans une base mysql.
    Pour le plus basique je m'en suis bien sorti. C'est à dire que j'arrive comme prévu à sauvegarder mes requettes avec un pti code php hyper basique du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?PHP
    $db = mysql_connect('localhost', 'nom_de_la_table', 'password');
    mysql_select_db('nom_de_la_table',$db);
     
    $sql = "INSERT INTO recherche
    VALUES('$q','$count','$category')";
     
    mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error());
     
    mysql_close();
    ?>
    Donc ça m'insère bien ma recherche $q sans problème puis la categorie aussi, pour le moment le champ count est vide car là est mon problème.

    Le truc c'est que tout roule mas bien évidemment ça m'enregistre toutes les recherches même si elles ont déjà été faites. Alors c'est vrai qu'avec une fonction genre COUNT je pourrais arriver là où je veux mais le truc c'est que je ne vois pas l'intérêt de surcharger la BDD avec des keywords doublonnés.

    DONC ce que je voudrais : c'est optimiser ce boût de code en y intégrant un compteur. C'est à dire que plutôt d'enregistrer à chaque fois le même keyword, l'idée serait de faire varier le champ count (qui est dans la table), donc d'avoir un champ qui me permettrait aussi de savoir combien de fois le keyword est sorti ; tout en continuant bien entendu à intégrer les nouveaux keywords.

    L'idée finale est de faire un tag cloud, et je vais utiliser un classe qui est sur phpclasses à cet effet donc pour la suite pas de pbm et je vous en ferais profiter quand ça roulera. Mais pour le moment j'ai vraiment besoin de vous pour m'aider à optimiser ce boût de code car là je patoge. J'ai essayé plein de truc mais j'y arrive pas !!! Et oui je ne suis as développeur pour un sou, juste un pti peu bricoleur.

    Merci de votre aide

    Alex

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Par défaut
    ça tombe bien je suis bricoleur aussi
    bon j'ai pas trop trop de temps alors je te propose une idée (ou plutot le fil de mes idées)

    1) 1 seule requete pour insert/update
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO recherche (mot,compteur,categorie) VALUES ('xx",'1','bidule) 
    ON DUPLICATE KEY UPDATE compteur='qqch';
    je m'explique :
    cette structure permet de créer un enregistrement s'il n'existe pas et de le mettre à jour s'il existe
    (le ON DUPLICATE KEY UPDATE me fait penser qu'il faut peut etre avoir mis en clé le champ du mot de la recherche)

    2) le compteur
    mais reste le problème d'augmenter le compteur
    alors on aurait peut être un truc du genre (c'est tordu mais je cherche à te le faire en une requete) en condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compteur= '((SELECT compteur FROM recherche WHERE mot='xx')+1)'



    En résumé (j'ai construit ma réponse petit à petit dsl)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO recherche (mot,compteur,categorie) VALUES ('xx",'1','bidule) 
    ON DUPLICATE KEY UPDATE compteur= '((SELECT compteur FROM recherche WHERE mot='xx')+1)'
    je ne sais pas si la syntaxe va etre correcte mais le principe en une requête est de :
    insérer ton mot avec 1 au compteur
    sauf si le mot existe déjà là on met à jour l'enregistrement avec comme valeur pour le compteur celle d'avant+1

    ça ressemblerait presque à de l'optimisation... mais vu que c'est moi ça risque de ne pas marcher dès le début.

  3. #3
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Bon c'est un peu pas clair mais je pense que tu veux :

    - verifier si le keywords est present
    - si oui incrementer la variable count associée a ce keyword
    - si non inserer le keywords avec la variable count a 1

    c'est ça ?

    Si oui tu n'as pas a te faire autant de soucis il suffit de verifier via SELECT que le keywords est present ou pas et en fonction soi INSERT soit UPDATE ....
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    bon, je reprends et je simplifie la requête de Léortien :
    INSERT INTO recherche (mot,compteur,categorie) VALUES ('xx', 1,'bidule) ON DUPLICATE KEY UPDATE compteur= compteur + 1 ;

    précisons que pour que ça marche, il faut une clé unique sur la table...

  5. #5
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Citation Envoyé par Antoun
    bon, je reprends et je simplifie la requête de Léortien :
    INSERT INTO recherche (mot,compteur,categorie) VALUES ('xx', 1,'bidule) ON DUPLICATE KEY UPDATE compteur= compteur + 1 ;

    précisons que pour que ça marche, il faut une clé unique sur la table...
    meme mieux que cette clef soit sur 'mot'

    en tout cas bien jouée la requete je connaissais pas !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

Discussions similaires

  1. problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/10/2005, 18h00
  2. [SGBD] problème de recherche dans une base de donnée mysql
    Par Xini28 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/10/2005, 23h06
  3. Recherche dans une base de donnée
    Par genova dans le forum SQLite
    Réponses: 8
    Dernier message: 28/09/2005, 23h16
  4. problème de recherche dans une base de données
    Par bouzid_mehdi dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2005, 06h47
  5. recherche dans une base de donnée+boucle
    Par eric205 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/03/2005, 21h14

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