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 :

Requête sql dans une fonction php [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 71
    Par défaut Requête sql dans une fonction php
    Bonjour,
    j'ai une requête qui recherche les identifiants d'auteurs enregistrés dans ma base de données, en les plaçant dans une chaîne qui débute par array(
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $resauteur2='array('; // ouvre la chaîne
    			$auteur='SELECT * FROM utilisateurs WHERE auteur>0 ';
    			$sqlauteur=mysql_query ($auteur) or die ('Erreur SQL !'.$auteur.'<br />'.mysql_error());
    			while($dataauteur = mysql_fetch_array($sqlauteur))
    			{
    				$resauteur2=$resauteur2 . $dataauteur['auteur'].','; // écrit une virgule après chaque item
    			}
    			$l=strlen($resauteur2)-1;
    			$resauteur2=substr($resauteur2,0,$l).')'; // enlève la dernière virgule et ferme la parenthèse
    Si je fais un écho echo $resauteur2; j'obtiens le bon résultat, à savoir : array(23,18,21,65,12,2,104,78,134,136,6,59,5,79,14,216,60,133,51,115)

    Je veux maintenant utiliser ce résultat pour rechercher dans ma base de données tous les articles qui ne sont pas attribués à ces auteurs-là:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $selaut='SELECT * FROM article_auteur WHERE identifiant_article="'.$id_article.'"';
    	$sqlaut=mysql_query ($selaut) or die ('Erreur SQL !'.$selaut.'<br />'.mysql_error());
    	while($dataaut = mysql_fetch_array($sqlaut))
    	{
    if(! in_array($dataaut['identifiant_auteur'],$resauteur2))
    							 {echo $resultat;}
    						}
    ça ne fonctionne pas alors que, si j'écris le même code en remplaçant ma variable $resauteur2 par sa valeur, ça marche :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $resauteur2b=array(23,18,21,65,12,2,104,78,134,136,6,59,5,79,14,216,60,133,51,115);
    $selaut='SELECT * FROM article_auteur WHERE identifiant_article="'.$id_article.'"';
    	$sqlaut=mysql_query ($selaut) or die ('Erreur SQL !'.$selaut.'<br />'.mysql_error());
    	while($dataaut = mysql_fetch_array($sqlaut))
    	{
    if(! in_array($dataaut['identifiant_auteur'],$resauteur2))
    							 {echo $resultat;}
    						}
    Je n'arrive pas à comprendre. Je serais heureuse si quelqu'un pouvait m'aider.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    tu peux réunir tes 2 requêtes sql en une seule requête.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $selaut='SELECT * FROM article_auteur WHERE identifiant_article="'.$id_article.'"
     AND identifiant_auteur NOT IN (SELECT auteur FROM utilisateurs WHERE auteur>0) ';
    	$sqlaut=mysql_query ($selaut) or die ('Erreur SQL !'.$selaut.'<br />'.mysql_error());
    	while($dataaut = mysql_fetch_array($sqlaut))
    	{
     
          //affichage 
    	}

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 71
    Par défaut Merci
    Merci d'avoir répondu à mon problème.
    je teste.

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 71
    Par défaut Merci à Armel, mais le problème persiste
    J'ai testé de différentes manières, parce que la requête fait partie d'une série de requête imbriquées. J'ai délimité la série qui m'intéresse ici. Si j'écris selon le code que vous m'avez envoyé
    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
     $liste='SELECT identifiant,titre,lienpage FROM articles2 ORDER BY identifiant DESC';
    			$sqlliste=mysql_query ($liste) or die ('Erreur SQL !'.$liste.'<br />'.mysql_error());
    			while($dataart = mysql_fetch_array($sqlliste))
    			{
    				$id_article=$dataart['identifiant']; echo $id_article.'<br />';
    				$titre=$dataart['titre'];
    				$lienpage=$dataart['lienpage'];
     
    				$mots='SELECT * FROM article_mots WHERE identifiant_article="'.$id_article.'"';
    				$sqlmots=mysql_query ($mots) or die ('Erreur SQL !'.$mots.'<br />'.mysql_error());
    				$datamot = mysql_fetch_array($sqlmots);
    				if(empty($datamot))
    				{	
     
    					$selaut2='SELECT * FROM article_auteur WHERE identifiant_article="'.$id_article.'"
     							AND identifiant_auteur NOT IN (SELECT auteur FROM utilisateurs WHERE auteur>0) ';
    							$sqlaut2=mysql_query ($selaut2) or die ('Erreur SQL !'.$selaut2.'<br />'.mysql_error());
    							$dataaut2 = mysql_fetch_array($sqlaut2);
    						if(!empty($dataaut2['identifiant']));
    							{echo '<li><a href="'.$lienpage.'">'.$titre.' (identifiant: '.$id_article.')</a></li>';}
    				}
    			}
    il m'affiche bien tous les articles qui ne sont pas liés à des mots-clé, mais ne trie pas ceux dont l'auteur ne fait pas partie de la liste.
    Par ailleurs, désolée, mais je n'ai pas compris comment activer la coloration du code???
    Merci d'avance pour votre réponse.

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 71
    Par défaut j'essaie de reformuler le problème
    j'ai 3 tables: articles2, article_auteur et article_mot
    elles sont reliées entre elles par
    articles2.identifiant=article_auteur.identifiant_article=article_mot.identifiant_article
    je cherche les articles qui
    • n'ont pas de correspondance dans la table article_mot
      et qui, dans la table article_auteur correspondent à un identifiant_auteur qui ne fait pas partie d'une liste, générée par la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT auteur FROM utilisateurs WHERE auteur>0
    je dois avoir une erreur dans l'imbrication des 3 étapes. Je n'arrive pas à trouver, ça fait 3 jours que je suis dessus.
    Merci d'avance pour votre aide.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Dans le premier cas $resauteur2 est égal à une chaine de caractères. Dans le deuxième, il est égal à un tableau.
    Il faut utiliser la fonction "eval" pour que la chaine de caractères devienne véritablement un tableau.

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

Discussions similaires

  1. requête sql dans une fonction
    Par Monsieur Griboux dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/05/2013, 19h40
  2. [MySQL] Impossibilité d'utiliser une requête MySQLi dans une fonction PHP
    Par Sestifer dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 10/01/2012, 14h40
  3. [PHP 5.0] Exécuter une requête SQL dans une fonction Javascript
    Par PrinceMaster77 dans le forum Langage
    Réponses: 13
    Dernier message: 08/07/2011, 04h53
  4. erreur dans une requête sql dans une fonction php
    Par frboyer dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2009, 13h37

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