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 :

Recherche d'une chaine dans plusieurs tables sql et affichage du contenu d'un champ si chaine rencontré [MySQL]


Sujet :

PHP & Base de données

  1. #21
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2018
    Messages : 29
    Points : 8
    Points
    8
    Par défaut
    La requête suivante (dans phpMyAdmin):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT titre FROM spiruline2_accueil WHERE article LIKE '%avxwokiJGYu%' AND valid_article = 'yes'
    me retrouve bien les 2 titres contenant cette image, donc fonctionne (sans la boucle pour les autre tables).

  2. #22
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    On progresse dans le débogage ; la partie requête semble être bonne.

    Continuons en essayant ça :
    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
    try 
    {
    	$dbh = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password);
    } 
    catch (PDOException $e) 
    {
    	echo "Erreur!: " . $e->getMessage() . "<br/>";
    	die();
    }
     
    // Tableau contenant la liste des tables à explorer
    $liste_tables = array("acceuil", "acces", "tarifs" /* etc. pour toutes les tables à interroger */);
     
    //$fichier = 'aPkhbgyaiOl'; 
    $fichier = 'a'; 
     
    $result = array();
     
    foreach ($liste_tables as $table)
    {
    	// Écriture paramétrée de la requête
    	$sql = "SELECT titre FROM site1_".$table." WHERE article LIKE :fichier AND valid_article = 'yes'";
     
    	try
    	{
    		$prep = $dbh->prepare($sql); 
    		$prep->bindValue(':fichier', '%'.$fichier.'%', PDO::PARAM_STR);
    		$prep->execute();
    		$result[$table] = $prep->fetchAll();
    	}
    	catch (PDOException $e)
    	{
    		echo "Erreur!: " . $e->getMessage() . "<br/>";
    		die();
    	}
    }
     
    echo 'Résultat complet :<br /><pre>';
    print_r($result);
    echo '</pre>';
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2018
    Messages : 29
    Points : 8
    Points
    8
    Par défaut
    Voilà, le résultat affiché:


    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
    Résultat complet :
    Array
    (
        [acceuil] => Array
            (
            )
     
        [acces] => Array
            (
            )
     
        [tarifs] => Array
            (
            )
     
    )

  4. #24
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    peux-tu ARRÊTER de cliquer sur "Répondre avec citation" ??

    MERCI d'utiliser le bouton "+ Répondre à la discussion" CI-DESSOUS en bas à gauche !


    N.B. Et pour info : on écrit "accueil". Pas acceuil.

  5. #25
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Effectivement, la faute sur Accueil est peut-être une cause de l'absence de valeur dans le résultat.
    Sinon je commence à sécher sur le problème !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #26
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2018
    Messages : 29
    Points : 8
    Points
    8
    Par défaut
    Entendu pour le bouton "+ Répondre à la discussion" en bas de page, je ne suis pas habitué aux forums. Désolé.

    Il y avait une erreur dans la façon d'écrire "accueil" et c'est pour cela qu'il n'y avait pas de résultat!
    "accueil" dans la BDD et "acceuil" dans le script que vous aviez écrit...
    Désolé, une fois de plus, j’aurais dû faire attention

    Je viens donc d'obtenir après correction un résultat sur le nom d'image suivant placé dans 3 articles sur 2 tables différentes, et ils ont été trouvé correctement tous les 3 mais sous la forme suivante:

    Requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $liste_tables = array("accueil", "acces", "tarifs", "contact"); 
    $fichier = 'aCnmiYTLDBV';
    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
    Résultat complet :
    Array
    (
        [accueil] => Array
            (
                [0] => Array
                    (
                        [titre] => Un Atout Santé
                        [0] => Un Atout Santé
                    )
     
            )
     
        [acces] => Array
            (
            )
     
        [tarifs] => Array
            (
            )
     
        [contact] => Array
            (
                [0] => Array
                    (
                        [titre] => Un Atout Santé
                        [0] => Un Atout Santé
                    )
     
                [1] => Array
                    (
                        [titre] => Séparateur spiruline 3
                        [0] => Séparateur spiruline 3
                    )
     
            )
     
    )
    Comment faire désormais, s'il vous plait, pour les obtenir sans le tableau de la forme plus présentable suivante:

    Cette image est utilisée dans l'article "Un Atout Santé" de la page "accueil"
    Cette image est utilisée dans l'article "Un Atout Santé" de la page "contact"
    Cette image est utilisée dans l'article "Séparateur spiruline 3" de la page "contact"

    Merci par avance!!

  7. #27
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Mon message #14 te donne le principe pour exploiter le tableau. À toi de jouer maintenant !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #28
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2018
    Messages : 29
    Points : 8
    Points
    8
    Par défaut
    Non, j'ai tout essayé:

    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
      // Pour chaque table
    if (count($table) > 0)
    {
    print (count($table));// Seule cette ligne (placée ici) donne :  "  1111   " (donc, 1 pour chaque table, même lorsque mot recherché est enregistré 2 fois dans la même table)
     
    foreach ($table as $article)
    {
     
    print_r (count($table)); // RIEN...
    print_r ($result['accueil'][0]['titre']); // RIEN...
    print_r ($result['accueil']); // RIEN...
    print_r ($result[0]); // RIEN...
    print_r ($result['titre']); // RIEN...
    print_r ($titre_article = $article['titre']); // RIEN...
    print_r ($article); // RIEN...
    print_r($result['titre']); // RIEN...
    print_r($result[$table]); // RIEN...
    echo $article['titre']; // RIEN...
    $titre_article = $article['titre']; // RIEN...
    echo $titre_article; // RIEN... 
    }
    }  
    }
     
    echo 'Résultat complet :<br /><pre>';
    print_r($result);
    echo '</pre>';
    et j'obtiens

    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
    1111Résultat complet :
     
    Array
    (
        [accueil] => Array
            (
                [0] => Array
                    (
                        [titre] => Un Atout Santé
                        [0] => Un Atout Santé
                    )
     
            )
     
        [acces] => Array
            (
            )
     
        [tarifs] => Array
            (
            )
     
        [contact] => Array
            (
                [0] => Array
                    (
                        [titre] => Un Atout Santé
                        [0] => Un Atout Santé
                    )
     
                [1] => Array
                    (
                        [titre] => Séparateur spiruline 3
                        [0] => Séparateur spiruline 3
                    )
     
            )
     
    )

  9. #29
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Au vu du contenu du tableau et écrit vite fait, ceci devrait donner quelque chose qui ressemble à ce que tu souhaites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    foreach ($result as $table => $result_table)
    {
    	// Pour chaque table dans le résultat
    	if(count($result_table) > 0)
    	{
    		// Si la requête a trouvé dans la table au moins une ligne correspondant à la recherche
    		foreach($result_table as $ligne)
    		{
    			// Pour chaque ligne de résultat dans la table, on affiche la phrase avec le titre de l'article et le nom de la page (qui est celui du suffixe de la table)
    			echo "Cette image est utilisée dans l'article ".$ligne['titre'].' de la page '.$table.'.<br />';
    		}
    	}
    }
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  10. #30
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2018
    Messages : 29
    Points : 8
    Points
    8
    Par défaut Merci CinePhil !!! Résolu!!
    Mille merci CinePhil!!

    C'est tout-à-fait cela

    J'avais abandonné, car plus de cheveux à arracher!

    Je laisse le code complet et fonctionnel en dessous, s'il peut aider quelqu'un, un jour:

    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
    <?php 
     
    $host_name = 'nom_de_votre_hebergeur';
    $database = 'nom_de_votre_base';
    $user_name = 'votre_login';
    $password = 'votre_pass';
     
    $dbh = null;
    // La connexion à la BDD :
    try 
    {
    	$dbh = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password);
    } 
    catch (PDOException $e) 
    {
    	echo "Erreur!: " . $e->getMessage() . "<br/>";
    	die();
    }
     
    // Tableau contenant la liste (suffixes) des tables à explorer:
    $liste_tables = array("accueil", "acces", "tarifs", "contact");
     
    // Le nom du fichier (mot-clé) à rechercher:
    $fichier = 'aCnmiYTLDBV';
     
    // Le nom du site (préfixe) des tables à consulter:
    $site = 'spiruline2';
     
     
    $result = array();
     
    foreach ($liste_tables as $table)
    {
     
    	// Écriture paramétrée de la requête
    	$sql = "SELECT titre FROM ".$site."_".$table." WHERE article LIKE :fichier AND valid_article = 'yes'";
     
    	try
    	{
    		$prep = $dbh->prepare($sql); 
    		$prep->bindValue(':fichier', '%'.$fichier.'%', PDO::PARAM_STR);// Recherche dans une partie de chaîne
    		//$prep->bindValue(':fichier', $fichier, PDO::PARAM_STR); // Recherche stricte du mot-clé
    		$prep->execute();
    		$result[$table] = $prep->fetchAll();
     
    	}
    	catch (PDOException $e)
    	{
    		echo "Erreur!: " . $e->getMessage() . "<br/>";
    		die();
    	}
     
    }
     
    foreach ($result as $table => $result_table)
    {
    	// Pour chaque table dans le résultat
    	if(count($result_table) > 0)
    	{    
    		// Si la requête a trouvé dans la table au moins une ligne correspondant à la recherche
    		foreach($result_table as $ligne)
    		{
    			// Pour chaque ligne de résultat dans la table, on affiche la phrase avec le titre de l'article et le nom de la page (qui est celui du suffixe de la table)
    			echo "Cette image est utilisée dans l'article ".$ligne['titre'].' de la page '.$table.'.<br />';
    		}
    	}
    }
     
    ?>
    Je ne publierai pas toutes les lignes de codes que j'ai faites pour tenter (en vain, en plus) d'arriver à ce résultat là, car vous allez encore vous moquer...

    Encore un énorme merci à vous!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [MySQL] Prendre une information dans plusieurs tables
    Par dimebagplan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/12/2008, 16h55
  2. problem avec la recherche d'une valeur dans les table
    Par anilane dans le forum Bases de données
    Réponses: 6
    Dernier message: 25/05/2007, 19h35
  3. VBA-Recherche d'une feuille dans plusieurs classeurs
    Par derf3183 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/07/2006, 14h50
  4. [SQL] Une requête dans plusieurs tables
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/12/2005, 16h23
  5. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 18h04

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