un id_auteur recalcitrant
Hors ligneByld Le 26/07/2005 à 16:07 Profil de Byld Configuration de Byld

Bonjour.
Voilà je tente de faire afficher sur une page tous les messages d'un forum qui n'ont pas eu de réponse.
Pour cela je prend sur ma table (c'est du spip toujours) ma table spip_forume les renseignements dont j'ai besoin et notamment $id_parent qui est à 0 si le message n'a pas eu de réponse, puis son statut (publie) pour les messages publics.
Pas de problème jusqu'a présent.
Mais voilà où ça coince. Si je veux faire reconnaitre tous les messages appartenant à un texte d'auteur par son propriétaire en ligne, je n'ai pas son id_auteur mais l'id_auteur de l'auteur du message et non du texte. Comment puis-je m'y prendre pour que cela fonctionne?
Voilà ce que j'ai fait et ça: ça ne marche pas!
<? $requete = "select * from spip_forum"; $envoi = mysql_query($requete); while($tableau = mysql_fetch_array($envoi)) { $nom = $tableau['id_auteur']; $titre = $tableau['titre']; $etat = $tableau['id_parent']; $origine= $tableau['statut']; if ($etat==0 && $origine="publie" && $auteur_session['id_auteur']==$id) { echo "$nom $titre $etat $origine <br>"; } } ?>
Merci d'avance
Hors ligneAnthony Le 27/07/2005 à 01:09 Profil de Anthony Configuration de Anthony

Fou du volant
Salut,

déjà pour ta requête évite le SELECT * qui est gourmand, n'utilises que le nom des champs que tu veux récupérer. Ensuite remplace <? par <?php

et pour ta requête remplace-là par ça (ça t'évitera une condition if inutile) :

<?php $envoi = mysql_query("SELECT id_auteur,titre,id_parent,statut FROM spip_forum WHERE id_parent=0 AND statut='publie' AND id_auteur=".$_SESSION['id_auteur']); while($tableau = mysql_fetch_row($envoi)) { $nom = $tableau[0]; $titre = $tableau[1]; $etat = $tableau[2]; $origine= $tableau[3]; echo $nom,' ',$titre,' ',$etat,' ',$origine,'<br />'; } ?>

ça devrait marcher. Si t'as encore un prob bah il me faudra la structure de ta table spip_forum :-)
--

Hors ligneByld Le 27/07/2005 à 09:01 Profil de Byld Configuration de Byld

Merci mais désolé cela ne fonctionne pas chez moi j'ai cela:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /data/members/paid/l/a/la-plume-et-lencrier.com/
htdocs/www/php/CACHE/d/php-essai.07361b.NEW on line 12

Voici la structure des tables concernées:
# --------------------------------------------------------

#
# Structure de la table `spip_auteurs_articles`
#

CREATE TABLE spip_auteurs_articles (
  id_auteur bigint(21) NOT NULL default '0',
  id_article bigint(21) NOT NULL default '0',
  KEY id_auteur (id_auteur),
  KEY id_article (id_article)
) TYPE=MyISAM;
# --------------------------------------------------------
#
# Structure de la table `spip_forum`
#

CREATE TABLE spip_forum (
  id_forum bigint(21) NOT NULL auto_increment,
  id_parent bigint(21) NOT NULL default '0',
  id_rubrique bigint(21) NOT NULL default '0',
  id_article bigint(21) NOT NULL default '0',
  id_breve bigint(21) NOT NULL default '0',
  date_heure datetime NOT NULL default '0000-00-00 00:00:00',
  titre text NOT NULL,
  texte mediumtext NOT NULL,
  auteur text NOT NULL,
  email_auteur text NOT NULL,
  nom_site text NOT NULL,
  url_site text NOT NULL,
  statut varchar(8) NOT NULL default '',
  idx enum('','1','non','oui','idx') NOT NULL default '',
  ip varchar(16) default NULL,
  maj timestamp(14) NOT NULL,
  id_auteur bigint(20) NOT NULL default '0',
  id_message bigint(21) NOT NULL default '0',
  id_syndic bigint(21) NOT NULL default '0',
  PRIMARY KEY  (id_forum),
  KEY id_parent (id_parent),
  KEY id_rubrique (id_rubrique),
  KEY id_article (id_article),
  KEY id_breve (id_breve),
  KEY id_message (id_message),
  KEY id_syndic (id_syndic),
  KEY statut (statut,date_heure),
  KEY idx (idx)
) TYPE=MyISAM;
# --------------------------------------------------------

J'ai mis volontairement la structure de la able spip_auteur_article car il y a là l'id_auteur de larticle et non du message forum comme dans spip_forum.
On retrouve dans les deux l'id_article.
Est qu'il est possible de faire une comparaison sur ces deux tables pour récuperer uniquement l'id_auteur de l'article?
Cela devient beaucoup trop compliqué pour moi ;)
Merci d'avance
Hors ligneAnthony Le 27/07/2005 à 19:45 Profil de Anthony Configuration de Anthony

Fou du volant
Ok essaie de remplacer la requête par ça :

<?php $envoi = mysql_query("SELECT a.id_auteur,f.titre,f.id_parent,f.statut FROM spip_forum f,spip_auteurs_articles a WHERE f.id_parent=0 AND f.statut='publie' AND a.id_auteur=".$_SESSION['id_auteur']); ?>
--

Hors ligneByld Le 30/07/2005 à 09:28 Profil de Byld Configuration de Byld

Non désolé cela ne fonctionne pas j'ai plus rien qui s'affiche.
Mais si je reprends mon idée:
J'ai créé une colonne dans spip_forum qui se nomme id_membre, comment puis je récuperer dans cette colonne la valeur de l'id_auteur de la table spip_auteurs_articles car dans les deux tables j'ai les deux id_articles. Il doit exister une comparaison, un truc de ce genre, non?
En fait voilà:
spip_forum
id_auteur ! id_article ! id_membre
   35            10          2
car dans spip_auteurs_articles j'ai ça:
id_auteur ! id_article
  2            10

2 étant le bon id_auteur du texte et 35 etant l'id_auteur du message de forum
Hors ligneAnthony Le 30/07/2005 à 09:49 Profil de Anthony Configuration de Anthony

Fou du volant
Regarde ça : Requêtes SELECT et notamment le LEFT JOIN.

a +
--

Hors ligneByld Le 30/07/2005 à 20:56 Profil de Byld Configuration de Byld

J'avoue que je n'ai pas compris grand chose.
Je vais faire un break ça commence à me taper sur le système ce truc! Je n'y entrave rien et plus je cherche, moins j'arrive à me concentrer ;)
Merci à toi
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels