Je voudrais faire ça ... possible ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Je voudrais faire ça ... possible ?

Re: Je voudrais faire ça ... possible ?

par lacfab » 03 févr. 2012, 13:31

Ah oui mais ce n'est pas ça que je veux faire ! Je veux que mes trois tables se "mixent" et se classent dans l'ordre des dates ! rejette un oeil sur mon graphisme dans le post 1.

edit : je crois qu'il faut que je fasse comme ça :
(select xx as col1, xx as col2, xx as col3 from xxx) UNION (select xx as col1, xx as col2, xx as col3 from xxx) ...

Re: Je voudrais faire ça ... possible ?

par moogli » 03 févr. 2012, 12:33

ben non ensemble,
for($i = 0; $i<count($galerie); $i++) {
echo $reportage[$i],$interview[$i],$galerie[$i],'<br />';
}
c'est simplifier mais tu a un élément par ligne de chaque tableau.

faut quand même vérifier que les tableaux aient la même taille, et tant qu'a faire bien ne pas mettre le count dans le for et utilier une autre variable ou un foreach :)


@+

Re: Je voudrais faire ça ... possible ?

par lacfab » 03 févr. 2012, 11:10

OK mais je me retrouve avec trois tableaux de résultats et donc trois affichages différents ... non ?

Re: Je voudrais faire ça ... possible ?

par moogli » 03 févr. 2012, 11:04

presque j'ai confondu avec le fetch_assoc du fetch mais il est pas implémenté par le fetchAll, ce que je voulais c'est l’implémentation par défaut : fetch_both
http://fr.php.net/manual/fr/pdostatement.fetchall.php

donc vire le ça ira

@+

Re: Je voudrais faire ça ... possible ?

par lacfab » 03 févr. 2012, 10:58

euh ... tu es sûr que PDO::FETCH_ARRAY existe ? je trouve aucune doc sur cette fonction précise !

Je veux mettre les résultats récents de mes trois tables dans un seul tableau ... comme un while ($donnees = mysql_fetch_array($reponses) )... quoi !

Re: Je voudrais faire ça ... possible ?

par lacfab » 03 févr. 2012, 10:43

Hello, merci pour la réponse.

Je comprend bien la mise en tableau (bien que je connaisse pas du tout le PDO) mais je ne comprend pas l'affichage, car dans ton for il n'y a que $galerie.

En fait il faudrait mettre les trois requêtes dans le même tableau en ne gardant que le type (galerie, interview ou reportage), l'id, et le titre, le tout trié par date de la plus récente jusqu'au résultat X (limit 0,X)

Mon style d'affichage est le même pour les trois blocs actuels : une vignette de 100x100 avec le titre en dessous (et un icône "reportage", "interview", ou "galerie" au dessus de la vignette). Donc au lieu d'avoir trois zones "nouveautés" je n'en voudrais plus qu'une (les reportages tournent plus vite que les interviews donc je me retrouve avec une interview annoncée en nouveauté pendant plusieurs mois, c'est relou).

Je me penche sur PDO de suite.

Re: Je voudrais faire ça ... possible ?

par moogli » 03 févr. 2012, 10:32

salut,


Faudrait voir comment tu fais ton affichage ;)

si tu a trois requête oui tu prend trois tableau, tu boucle et affiche un élément de chaque.
avec PDO c'est relativement simple avec fetch all

par exemple
<?php
$requetReportage = $PDO->query('select ...');
$reportage = $requetReportage ->fetchAll(PDO::FETCH_ARRAY):
$requetI = $PDO->query('select ...');
$interview = $requetI->fetchAll(PDO::FETCH_ARRAY):
$requetG = $PDO->query('select ...');
$galerie  = $requetG->fetchAll(PDO::FETCH_ARRAY):

for($i = 0; $i<count($galerie); $i++) {
echo ' ....';
}
?>
si tu veux le faire en SQL c'est réalisable, mais pas pratique, surtout si tu n'a pas d'info commune.

@+

Je voudrais faire ça ... possible ?

par lacfab » 03 févr. 2012, 08:14

Bonjour,

Sur mon site d'actualité j'ai trois cases qui présentent les derniers reportages, les dernières interviews, et les dernières galeries photos. Je voudrais que ces trois cases fusionnent en une seule "ligne de temps" seulement il s'agit de trois tables différentes dans ma base de donnée.

J'ai essayé de les mélanger et d'utiliser des AS pour bien cibler les attributs mais ça fait une erreur.

Voici un schéma qui résume ce que je voudrais faire, ainsi que les tables actuelles (telles qu'elles sont appelées sur ma page d'accueil). Si vous avez une piste pour m'orienter vers la construction de cette requête je suis preneur ! ou bien faut-il traiter les trois requêtes séparément et stocker les données dans un array pour ensuite le reconstruire ?

Image
Table des reportages :
SELECT id, titre
FROM `reportages`
WHERE `date` <= '2012-02-02'
AND `activ` =1
LIMIT 0,3; 

Table des interviews :
SELECT id, titre
FROM `interviews`
WHERE `date` <= '2012-02-02'
AND `activ` =1
LIMIT 0,3; 

Table des galeries de photos :
SELECT phod_id, phod_libelle, phod_repbase, phod_lien_vign, bibe_id, bibe_nom, phod_lieu, phod_date_ajout
FROM photo_dossier2, biblio_etablissement
WHERE phod_date_ajout <= '2012-02-02'
AND phod_etab = bibe_id
ORDER BY phod_date_ajout DESC
LIMIT 0,3;