J'ai besoin de prendre des lignes à partir de deux tables distinctes, et les organiser dans l'ordre décroissant par leur date. Les lignes ne correspondent pas dans l'ordre ou le nombre et n'ont aucune relation entre elles.PHP et MySQL: Organiser des lignes à partir de tables séparées et l'expression pour déterminer l'origine de la ligne
Ils contiennent chacun des mises à jour sur un site, une table contient du texte, des liens, des dates, des titres, etc. à partir d'un blog. L'autre a des titres, des liens, des spécifications, etc. à partir d'images. Je veux organiser quelques informations de base (titre, date, petite description) dans une section mises à jour sur la page principale du site, et pour qu'il soit dans l'ordre de date.
En les fusionnant dans une table et en les modifiant pour convenir aux deux types n'est pas ce que je voudrais faire ici, la table de blog est WordPress 'standard wp_posts, et je ne me sens pas à l'aise d'ajouter des colonnes la table d'image aussi. Je crains que cela ne puisse entrer en conflit avec la mise à niveau plus tard et que cela semble être une solution maladroite (mais cela ne signifie pas que j'objecterai si les gens ici me disent que c'est la meilleure solution).
Voici les DÉCRIT de chaque table:
mysql> describe images;
+---------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| project | varchar(255) | NO | | NULL | |
| title | varchar(255) | NO | | NULL | |
| time | timestamp | NO | | CURRENT_TIMESTAMP | |
| img_url | varchar(255) | NO | | NULL | |
| alt_txt | varchar(255) | YES | | NULL | |
| text | text | YES | | NULL | |
| text_id | int(11) | YES | | NULL | |
+---------+--------------+------+-----+-------------------+----------------+
mysql> DESCRIBE wp_posts;
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| post_author | bigint(20) unsigned | NO | | 0 | |
| post_date | datetime | NO | | 0000-00-00 00:00:00 | |
| post_date_gmt | datetime | NO | | 0000-00-00 00:00:00 | |
| post_content | longtext | NO | | NULL | |
| post_title | text | NO | | NULL | |
| post_excerpt | text | NO | | NULL | |
| post_status | varchar(20) | NO | | publish | |
| comment_status | varchar(20) | NO | | open | |
| ping_status | varchar(20) | NO | | open | |
| post_password | varchar(20) | NO | | | |
| post_name | varchar(200) | NO | MUL | | |
| to_ping | text | NO | | NULL | |
| pinged | text | NO | | NULL | |
| post_modified | datetime | NO | | 0000-00-00 00:00:00 | |
| post_modified_gmt | datetime | NO | | 0000-00-00 00:00:00 | |
| post_content_filtered | text | NO | | NULL | |
| post_parent | bigint(20) unsigned | NO | MUL | 0 | |
| guid | varchar(255) | NO | | | |
| menu_order | int(11) | NO | | 0 | |
| post_type | varchar(20) | NO | MUL | post | |
| post_mime_type | varchar(100) | NO | | | |
| comment_count | bigint(20) | NO | | 0 | |
+-----------------------+---------------------+------+-----+---------------------+----------------+
je peux le faire facilement avec une seule table comme celui-ci (j'inclus ici au cas où j'utilise une méthode trop complexe sans le savoir) :
$content = mysql_query("SELECT post_title, post_text, post_date FROM posts ORDER BY post_date DESC");
while($row = mysql_fetch_array($content))
{
echo $row['post_date'], $row['post_title'], $row['post_text'];
}
Mais comment est-il possible d'appeler les deux tables dans le même tableau pour les organiser correctement?
Par correctement, je veux dire qu'ils vont mélanger leurs résultats écho en fonction de leur date. Peut-être que je regarde cela du mauvais point de vue, et les appeler à un seul tableau n'est pas la réponse?
En outre, j'ai besoin d'un moyen de former une expression conditionnelle basée sur la table d'où ils viennent, de sorte que les lignes de la table 1 soient traitées différemment des lignes de la table 2? Je souhaite que les résultats de la table 1 soient répercutés différemment (avec différentes chaînes concaténées autour d'eux, je veux dire) dans le but de les styliser différemment de ceux de la table 2. Et vice versa.
Je sais qu'une instruction if...else
fonctionnerait ici, mais je n'ai aucune idée de la façon dont je peux écrire l'expression qui permettrait de déterminer de quelle table provient la rangée.
Quelle est la relation entre les tables? Pouvez-vous décrire leur structure, ont-ils les mêmes champs? Comment - en laissant de côté, pour le moment, * pourquoi * - voulez-vous qu'ils soient fusionnés? Si vous pouviez publier les descriptions des tables pertinentes, donnez des exemples de données et un résultat attendu qui vous aiderait. –
Nous devons voir une sortie d'une clause DESCRIBE. Si les deux tables sont liées entre elles par une colonne, vous pouvez les joindre et, plus tard, classer les résultats. Quoi qu'il en soit, utiliser PHP pour commander les résultats est également possible. – Dor