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

MySQL Discussion :

Problème pour recuperer la variable de recherche en couleur


Sujet :

MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 97
    Par défaut Problème pour recuperer la variable de recherche en couleur
    Bonjour,

    Je me permets d'envoyer ce message car je rencontre un problème de couleur lors de ma requete de recherche.

    En effet ma requete fonctionne :
    MAIS je voudrais que la variable que l'on recherche s'affiche en rouge pour un confort visuel sur la page.

    voici ce que j'ai fait :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <?php
    //connexion base
    // on se connecte &agrave; MySQL 
    $db = mysql_connect('localhost', 'root', '');  
    // on sel&eacute;ctionne la base 
    mysql_select_db('test',$db);  
     
    /********************
    DECLARATION DE MES VARIABLES PHP POUR EVITER L'ERREUR  "Undefined variable"
    /********************
    */
    $n = "lolo";
    $t = "droit";
     
    /*****************
    CREATION MOTEUR DE RECHERCHE
    */
    //requete de base 
    $requete_base = "SELECT * FROM auteurs , pub, categorie WHERE ";
     
    //correspondance pour publications et categorie
    $requete2 = "pub.id_aut=auteurs.id_aut AND categorie.id_cat = pub.id_cat";
     
    //requete pour nom 
    $req_nom = " (nom LIKE '%$n%') ";
     
    //condition pour couleur
    $req_coul = "'<span style='color: red;'>' ";
    $req_coul_fin = "</span>";
     
    //condition pour titre
    $req_titre = " titre LIKE ";
     
    //variable titre seule arajouter dans requete titre
    $req_var = " '%$t%' ";
     
    //requete complete qui ne change pas 
    $req_comp=$requete_base.$requete2;
     
     
    //code de condition pour recherche par nom
    if ($n != "") {
    $req_comp=$req_comp." AND ".$req_nom;
    	}
    //code de condition pour recherche par titre	
    		if ($t != "") {
    			$req_comp=$req_comp." AND ".$req_titre.$req_coul.$req_var.$req_coul_fin; // je pense que MySql ne comprend pas cette partie de requete, pourtant lors de laffichage de la requete la variable est bien rouge
    			}
     
     
    echo $req_comp; //AFFICHAGE DE LA REQUETE
    	//variable de recherche incluant la requete complete 
    		$recherche = mysql_query($req_comp) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    //MISE EN FORME HTML
    echo "<div align = 'center' class='titre1'></div><br>";	 
     
    //BOUCLE POUR AFFICHER LES RESULTATS
    	while($ligne = @mysql_fetch_array($recherche))
    	{
    		echo "<table width='1300' cellpadding='-1' bgcolor='#CCCCCC'>
      		<tr>
       		 <td width='1300' bgcolor='#CCCCCC'><table width='1300' cellpadding='-1' bgcolor='#FFFFFF'>
          	<tr>
            <td bgcolor='#c0cad6' class='txt'>", $ligne["nom_cat"]," ", " ", "(", $ligne["titre"], ")", " ", " ", " ", " ", " ", " ", " </td>
          </tr>
        </table></td>
      </tr>
    </table><br>";
     
    }
    mysql_close(); 
     
     
    ?>
    merci par avance pour vos lumieres

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 600
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Quelques remarques :
    - la présentation des données n'est pas du ressors du langage SQL, il faut donc que vous postiez votre question dans la section PHP
    - il est peu probable que vous ayez vraiment besoin de toutes les colonnes de vos 2 tables, de plus, select * est très dangereux, si vos tables changent, vos résultats changent
    Pour ces raisons, proscrivez select *
    - votre requête sera plus lisible si vous exprimez vos jointures hors prédicat de filtrage : inner ou outer join on...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 97
    Par défaut
    D'accord merci pour vos remarques je vais donc poster dans la section PHP ..

    Quant a ma requete, elle fonctionne tres bien comme ceci !!! Je veux juste que ma variable de recherche s'inscrive en rouge ..., mais si je peux l'optimiser avec un INNER JOIN je vais me pencher dessus

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Salut lolodelp.

    Voici quelques remarques :

    1) L'extension mysql est obsolète depuis la version mysql 5.5. Il serait temps d'utiliser l'extension 'mysqli_' ou bien l'extension PDO.

    2) On ne met pas dans le code html, des propriétés CSS. Il faut les externaliser dans un fichier ".css".
    Pour ce faire, on crée une classe en CSS où l'on donne toutes les propriétés voulues. Et de ce fait, en HTML, on indique juste la nouvelle class.

    3) On n'utilise plus les anciennes propriétés HTML comme 'cellpading' qui ont été remplacées par les nouvelles propriétés CSS dont l'équivalent est 'border-spacing' et 'border-collapse'. Il serait temps de se mettre au HTML5 !

    4) Votre code est illisible. Faites un effort de présentation.

    5) pour des questions de sécurités évidentes, on ne met jamais la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db = mysql_connect('localhost', 'root', '');
    en clair dans le code php. On dédie un fichier qui sera protégé sous apache et contenant tout le paramétrage pour accéder à votre base de données.

    6) de plus, quand on fait un accès à une base de données, on ne le fait jamais avec le compte 'root' qui à toutes les autorisations !
    On crée un nouveau compte ayant des permission restreinte sur la base de données en question et uniquement avec les droits sur 'select, insert, delete et update'.

    7) on teste le code retour de la connexion à votre base de données, en indiquant le message d'erreur s'il y a lieu.
    quand un problème survient, la plupart du temps c'est sur la connexion.
    Si vous n'indiquez pas le message d'erreur, comment saurez-vous résoudre le problème ?

    8) ceci n'est pas correcte comme écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_nom = " (nom LIKE '%$n%') ";
    Si vous avez un index sur la colonne 'nom', la clause 'where' aura pour effet de désactiver l'index et rendra votre recherche très longue.
    Si vous désirez faire une recherche par mot, utilisez un index de type 'full text search'.

    9) bien quand général, on essaye de rendre les noms des colonnes uniques dans une base de données, lors de l'écriture d'une requête sur plusieurs tables, on préfixe chaque colonne par un alias, afin de rendre la lecture de la requête plus facile, mais aussi pour éviter toutes confusions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM auteurs as a,
    pub as p,
    categorie as c
    WHERE p.id_aut = a.id_aut
    AND c.id_cat = p.id_cat
    ...
    10) comme l'indique Maître Escartefigue, dans une requête, on ne met jamais de 'select *'.
    Si un jour, vous ajoutez une nouvelle colonne dans l'une de vos tables, vous serez obligé d'intervenir dans tous vos scripts pour tenir compte de cette modification.

    11) je ne voie aucune gestion des caractères spéciaux comme l'apostrophe ou les accents dans votre script. Est-ce un oubli ?

    @+

Discussions similaires

  1. [2.x] [Twig]Problème pour recuperer une variable
    Par cescu dans le forum Symfony
    Réponses: 0
    Dernier message: 20/02/2013, 11h38
  2. [Configuration] php pour recuperer une variable dans l'url sans utiliser $_GET
    Par mikebranque dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/06/2006, 20h22
  3. Réponses: 1
    Dernier message: 22/05/2006, 14h44
  4. Réponses: 2
    Dernier message: 14/04/2006, 18h40
  5. Probléme pour insérer une variable dans un champs
    Par BOUTRAIS dans le forum Access
    Réponses: 2
    Dernier message: 11/04/2006, 22h45

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