Elxis CMS Forum

Ελληνικό Forum => Δημόσιο Βήμα => Topic started by: ArXoS on December 30, 2009, 02:53:54

Title: [SOLVED] php query help !!
Post by: ArXoS on December 30, 2009, 02:53:54
Παιδιά, θέλω μια μικρή βοήθεια στο παρακάτω query που παλεύω εδώ και καιρό να στήσω και σπάω τα νεύρα μου καθημερινά (ελπίζω να σεμινάρια να βοηθήσουν!!)..

Έχω 3 πίνακες :

table_favored
id_content, id_user

table_content
id, title, sectionid

table_sections
id, title

Θέλω για το id_user=my_id του table_favored :
1. Να συγκεντρώνονται τα id_content του table_favored
2. Να βρίσκει το title του id από το table_content
3. Να βρίσκει το sectionid του id από το table_content
4. Να βρίσκει το title του sectionid από το table_sections
5. Να μου εμφανίζει αποτέλεσμα title_sectionid > title_id_content

και όλα αυτά στοιχισμένα στο title_sectionid
έστω ένα πλάνο, και θα το δοκιμάσω-προσαρμόσω  ::)


όποιος δε θέλει να μου το κάνει πρωτοχρονιάτικο δώρο, υπάρχει και το https://forum.elxis.org/index.php?topic=4282.0  :D

Ευχαριστώ και καλή πρωτοχρονιά  ;)
Title: Re: php query help !!
Post by: datahell on December 31, 2009, 09:22:25
Πρωτοχρονιάτικο δώρο!

Πρόσθεσε ένα primary key στον πίνακα #__favored με όνομα fid (INTEGER, AUTO_INCREMENT).

Code: (php) [Select]
<?php
$query 
"SELECT c.id, c.title, c.sectionid, s.title AS section, f.id_user"
."\n FROM #__content c"
."\n INNER JOIN #__sections s ON s.id=c.sectionid"
."\n INNER JOIN #__favored f ON f.id_content=c.id"
."\n WHERE f.id_user = &#39;".$my->id."&#39;";
$database->setQuery($query);
$rows $database->loadObjectList();

if (
$rows) {
foreach ($rows as $row) {
echo &#39;CONTENT ID: &#39;.$row->id."<br />\n";
echo &#39;CONTENT TITLE: &#39;.$row->title."<br />\n";
echo &#39;SECTION ID: &#39;.$row->sectionid."<br />\n";
echo &#39;SECTION TITLE: &#39;.$row->section."<br />\n";
echo &#39;USER ID: &#39;.$row->id_user."<br />\n";
echo "<hr />\n";
}
}
?>

Μπορείς να χρησιμοποιήσεις και LEFT JOIN αλλά το INNER JOIN εξασφαλίζει ότι όλα τα αποτελέσματα υπάρχουν.

CREATE TABLE  `elx_favored` (
  `fid` int(10) unsigned NOT NULL auto_increment,
  `id_content` int(10) unsigned NOT NULL default '0',
  `id_user` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`fid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Title: Re: php query help !!
Post by: ArXoS on December 31, 2009, 13:56:48
ε καλα, δεν ήταν και τίποτε .. θα το είχα βρει κι εγώ, σε ... 20 χρόνια δοκιμών  ;D ;D
Δούλεψε με την μία (με INNER JOIN)
ευχαριστώ Άγιε Βασίλη  ;D
Title: Re: php query help !!
Post by: ArXoS on December 31, 2009, 14:23:16
Στο τέλος του query δεν πρέπει να βάλω
."\n ORDER BY c.sectionid DESC"    ???

για να μου βγαίνουν στοιχισμένα με το sectionid ? Το δοκίμασα και δε δουλεύει  :(
Title: Re: php query help !!
Post by: datahell on December 31, 2009, 17:01:20
Αν θες να κάνεις ταξινόμηση με το sectionid και βάλε και αυτό, θα σου πτότεινα όμως να κάνεις ταξινόμηση με τον τίτλο του άρθρου:

."\n ORDER BY c.title ASC"
Title: Re: php query help !!
Post by: ArXoS on December 31, 2009, 21:37:18
Datahell, κοίτα τι μου έφτιαξες  :D :D (σωστά είχα βάλει το order, αλλά δεν είχα κλείσει το query με ερωτηματικό και παιδευόμουν ώρες μέχρι να το ανακαλύψω  :-[)

(http://img97.imageshack.us/img97/9739/favoritesv.jpg)

Βασικά η δουλειά ήταν για το greekmasa.gr, που είναι μαγειρικό site. Έχω ενα module που μπορούν τα μέλη και αποθηκεύουν τις αγαπημένες τους συνταγές (από το akocomment). To θέμα όμως ήταν οτι τελικά τα μέλη αποθήκευαν αγαπημένες συνταγές κατά εκατοντάδες (μέσα από 3.500 συνταγές) με αποτέλεσμα όταν ανατρέχουν στη λίστα με τα αγαπημένα τους, να μη μπορούσαν να βρουν αυτό που ήθελαν εύκολα.
Ο μόνος τρόπος ήταν να χωριστούν σε κατηγορίες και να στοιχιστούν σύμφωνα με αυτές. Τελικά το καταφέραμε (βέβαια το προχώρησα και άλλο, όλα τα tltes είναι clickable, έβαλα και 2 άλλες παραμέτρους ..)

Σε ευχαριστώ για τη βοήθεια που προσφέρεις να κάνουμε τα portal μας ακόμα πιο λειτουργικά για τους επισκέπτες μας.
Καλή χρονιά σε σένα, στην οικογένειά σου και σε όλους όσους υποστηρίζουν το Elxis με τόσο θετικό τρόπο  ;D
Title: Re: php query help !!
Post by: datahell on December 31, 2009, 22:14:54
Μπορείς να κάνεις και ταξινόμηση σε περισσότερα από ένα βάζοντας κόμμα:

."\n ORDER BY section ASC, c.title ASC"

Το παραπάνω θα τα ταξινομήσει πρώτα κατά ενότητα (τίτλο ενότητας, όχι id που δεν είναι πρακτικό) και κατόπιν κατά τίτλο (αύξουσα ταξινόμηση, αλφαβητικά).

Χρόνια πολλά σε όλους, κλείνω, τα λέμε του χρόνου!  :D
Title: Re: php query help !!
Post by: ArXoS on January 02, 2010, 02:29:57
α, τώρα εγινε ακομα καλυτερο  ;D thanks