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

Requêtes MySQL Discussion :

2 petites requêtes ^^'


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Par défaut 2 petites requêtes ^^'
    Bonjour tlm,

    Voila, j'ai deux faveurs a vous demandé:

    N°1:
    Voila j'ai dans une page php, deux tableau. un qui va affiché le sujet (donc il me retourne le titre, le message, l'auteur, la date, et le nombre total des commentaires [depuis la table news]).
    et dans le deuxiéme tableau tous les commentaires posté sur ce sujet, depuis la table news_coment qui on comme valeur dans le champ id_news la même valeur que id du table news.

    Voila ce que j'utilisé comme requêtes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1 => 'SELECT * FROM `news` WHERE `id` ='.$id_news;
    2 => 'SELECT * FROM `site_news_coment` WHERE `id_news` ='.$id_news;
    Maintenant je veux utilisé une seule requête a la place de ces deux la, et j'avou que je me r'appel pas grand chose des cours que j'avais dans le temps ^^'.
    (si c'est possible comment avoir les résultats retourné).


    N°2:
    Maintenant, la c'est un autre probléme (en gros ca consiste a un chatbox): voila sa Structure et son Requête :
    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
    CREATE TABLE `tribune_membre` (
      `id` int(11) NOT NULL auto_increment,
      `unix` varchar(25) collate latin1_general_ci NOT NULL default '',
      `pseudo` varchar(25) collate latin1_general_ci NOT NULL default '',
      `message` longtext collate latin1_general_ci NOT NULL,
      `val` varchar(255) collate latin1_general_ci NOT NULL default '',
      `ip` varchar(15) collate latin1_general_ci NOT NULL default '',
      `fai` varchar(60) collate latin1_general_ci NOT NULL default '',
      `id_membre` int(11) NOT NULL default '0',
      `type` int(1) default '0',
      `signe` tinytext collate latin1_general_ci,
      `raison` varchar(255) collate latin1_general_ci default NULL,
      `par` varchar(75) collate latin1_general_ci NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=13 ;
    
    ------------
    $temps=time()-3600;
    $requete="SELECT * FROM `tribune_membre` ORDER BY `id` DESC";
    	$resultat=@mysql_query($requete,$connection);
    $bantype = mysql_fetch_row($resultat);	
    $signe=$bantype[9];
    
    if($bantype[8]==1){
    		    $bane="SELECT `ip` FROM `tribune_membre` WHERE `ip` = '$ip' AND `unix` > '$temps'"; //banis par ip
     }elseif($bantype[8]==2){
    		    $bane="SELECT `pseudo` FROM `tribune_membre` WHERE `pseudo` = '$pseudo_tribune' AND `unix` > '$temps'";  //banis par pseudo
        }elseif($bantype[8]==3){
    		    $bane="SELECT `fai` FROM `tribune_membre` WHERE `fai` LIKE '%$signe%' AND `unix` > '$temps'"; //banis par fournisseur
    }        
    $ban=mysql_query($bane,$connection);
    if(mysql_num_rows($ban)=="0"){
    En résumé, c'est basé sur une simple idée, j'envois une premiere requête qui me retourne tout les messages, puis je filtre chaque résultat retourné selon la valeur du $bantype[8] (qui est le champ Type) et selon le résultat j'envois la requête adéquate
    (ca veut dire que ce membre qui a posté un message soit il est banni par la méthode IP et donc envoyé une requête pour voir s'il est banni dans moins d'une heure si c'est oui, en enregistre pas ce message, si c'est non, on l'enregistre... et c'est la même chose pour les deux autres requêtes (selon le pseudo, ou le fai [le fai, c'est utilisé içi comme dernier recours au petit bléreux qui ont un ip dynamique, et qui change de pseudo tous le temps]).

    Si vous avez tout suivé, vous remarquerais que je suis obligé d'envoyé 3 requêtes >_< pour tous les membres >_< a chaque fois qu'ils postent.
    Donc si c'est possible je veux envoyé une seule requête avec des sous requêtes, et selon la valeur du champ type elle va exécuté la bonne requête

    N°3:
    Une 3eme faveurs si c'est possible ^^' (j'en profite du situation)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql="INSERT INTO `table` ( `id` , `id_news`) VALUES ( '', '$id_news')";
    $sql='UPDATE `table2` SET commentaire=commentaire+1 WHERE `id`='.$id_news;
    Je veux unire ces deux requêtes dans une seule requête aussi ^^

    Merci de me suivre jusqu'a la. vraiment merci pour tout.
    Bonne journée
    Cordialment KOF_£V£

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 181
    Par défaut
    bonjour,

    pour la première question essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     'SELECT * FROM `news`,`site_news_coment` WHERE `news.id` ="'.$id_news.'" AND `site_news_coment.id_news` ="'.$id_news.'"';
    mais il vaut mieux choisir les champs à retourner qu'on récupère ensuite par les alias
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     'SELECT news.id as id1, news.text as text,site_news_coment.id_news as id2 FROM `news`,`site_news_coment` WHERE `news.id` ="'.$id_news.'" AND `site_news_coment.id_news` ="'.$id_news.'"';
    sinon pour la deuxième ça doit être possible (pas sûr) mais il faudrait voir comment mettre des conditions en sql (je ne m'y connais pas encore assez)
    pour la troisième, je ne pense pas qu'il soit possible de faire un insert et un update dans une seule requête

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Par défaut
    sebdu merci déja de me répondre
    je teste, et je vous tiens au courant. encore merci, et bonne journée

    Cordialement KOF_£V£

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Par défaut
    Bizarre la requête n'a pas marché ^^' pourtant j'ai verifier syntaxe dans le docu de mysql au cas ou

    Je crois que ca vient des champs des tables, surtout qu'il ya confusiant entre les même noms.

    Voila la structure de mes deux tables, pour (la 1ere question):
    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
    CREATE TABLE `site_news` (
      `id` int(11) NOT NULL auto_increment,
      `titre` varchar(255) collate latin1_general_ci NOT NULL default '',
      `message` longtext collate latin1_general_ci NOT NULL,
      `unix` varchar(25) collate latin1_general_ci NOT NULL default '',
      `auteur` varchar(25) collate latin1_general_ci NOT NULL default '',
      `id_membre_forum` mediumint(8) NOT NULL default '0',
      `type` int(2) NOT NULL default '0',
      `commentaire` int(11) NOT NULL default '0',
      `mot_cle` varchar(255) collate latin1_general_ci default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=57 ;
    
    -- --------------------------------------------------------
    
    CREATE TABLE `site_news_coment` (
      `id` int(11) NOT NULL auto_increment,
      `id_news` int(11) NOT NULL default '0',
      `auteur` varchar(25) collate latin1_general_ci NOT NULL default '',
      `message` longtext collate latin1_general_ci NOT NULL,
      `unix` varchar(25) collate latin1_general_ci NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=23 ;
    et le script php par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $requete="SELECT * FROM `site_news`,`site_news_coment` WHERE site_news.id ='$idget' AND site_news_coment.id_news ='$idget'";
    $resultat=mysql_query($requete,$connection) or die (mysql_error());
    while ($lop=mysql_fetch_array($resultat)){
    echo $lop['titre'];
    }
    Me retourne rien, (évidement ya des enregistrements ^^') et y'a pas d'erreur, c'est ca qui m'agasse ^^

    Merci encore pour tout.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 181
    Par défaut
    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete="SELECT * FROM `site_news`,`site_news_coment` WHERE site_news.id = site_news_coment.id_news AND site_news.id='".$idget."'";
    et va voir cette page, moi ça m'a beaucoup aidé

    si ça ne marche toujours pas fais des tests en ne faisant ta requête que sur une des 2 tables, ou sans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND site_news.id='".$idget."'
    pour voir d'où peut venir le problème


    ps : dans ='".$idget."' les ". et ." ne sont pas obligatoires si tu utilises les " " pour encadrer ta requête mais c'est une bonne habitude à prendre

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Par défaut
    Le problème doit se situer dans la condition. Il faut utiliser une jointure pour résoudre ton problème, ca devrait ressembler à la requête ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `site_news`LEFT JOIN `site_news_coment` ON site_news.id =site_news_coment.id_news WHERE site_news.id='$idget'";

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Par défaut
    Non, les deux propositions n'ont rien donné encore ^^''.
    Mais comme j'ai dis, il n'y a pas d'erreur dans la requête, donc je crois que c'est les champs avec les mêmes noms qui sont en confusion. ou ma méthode php que j'ai donné la haut foire tout, pas du requête elle même!! .

    Oui sebdu j'ai tout testé, toujours rien. et merci pour ton lien (mais c'est la même histoire, ils te disent pas comment récupéré les données dans une jointure, mais juste comment la faire ^^).
    Et avec vous deux, j'avou que j'ai plus que l'embara du choix ^^.

    Merci encore a vous deux. je crois que pour la premiere question, je vais laissé comme avant (deux requêtes >_<).

    Cordialement KOF_£V£

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

Discussions similaires

  1. Petite requête à faire
    Par SQLpro dans le forum SQL
    Réponses: 7
    Dernier message: 22/01/2008, 16h38
  2. Need help pour une petite requête
    Par julie75 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/08/2007, 17h10
  3. Une autre petite requête
    Par Dams33520 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 05/06/2007, 16h38
  4. [SQL] petite requête sous PHP
    Par poyoland dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 01/03/2007, 10h05
  5. [Petite requête] Nombre de transactions par jour
    Par Braim dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/04/2003, 10h53

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