Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλησπέρα,

 

Λέω να το δημοσιεύσω εδώ πριν κάτσω να το ψάξω το θέμα, για να μου πείτε γνώμες σε ένα μικρό θεματάκι με ένα function.

 

To function τραβάει από 2 tables τις εγγραφές και τις περνάει σε ένα pricing table του index.

  • Στο ένα table υπάρχουν 4 εγγραφές, όπου εχει ID / Title / Popular / Price / Link / Button
  • Στο δεύτερο table υπάρχουν 32 (8x4) εγγραφές, όπου έχει ID / Value / Label / Status.

και τα δύο tables, συνδέονται ως προς το ID.

 

Αυτό που κάνει το function είναι να τραβάει τις 4 εγγραφές του πρώτου table και επαναλαμβάνει τις εγγραφές του δεύτερου 4 φορές. Αντί να παίρνει 8 εγγραφές για το 1 ID, παίρνει 4 φορές την ίδια εγγραφή, για κάθε row του table.

 

 

Table1.Row1 / Table1.Row2
 
Table2.Row1 / Table2.Row3

Table2.Row1 / Table2.Row3

Table2.Row1 / Table2.Row3

Table2.Row1 / Table2.Row3

 

Table2.Row2 / Table2.Row4

Table2.Row2 / Table2.Row4

Table2.Row2 / Table2.Row4

Table2.Row2 / Table2.Row4

......

 

To ζητούμενο είναι 1 εγγραφή για κάθε Row, όχι 4.

 

Function.source: [REMOVED]

Επεξ/σία από Crazy Priest
Δημοσ.

Κάνε στο εαυτό σου τα εξής 2 γιορτινά δώρα:

  1. Αντί να κάνεις N+1 queries, διάβασε περι joins και κάντο με ένα query σωστά. Για την ακρίβεια το εσωτερικά query σου (αυτό που εκτελείται N φορές) είναι ήδη cross join και δεδομένου ότι κάνεις την ερώτηση είναι λάθος, αλλά δε μπορώ να ξέρω τις λεπτομέρειες για το τι ακριβώς πρέπει να γίνει και δεν υπάρχει και εγγύηση ότι το σχήμα της βάσης είναι κατάλληλο για να υποστηρίξει το σωστό join.
  2. Ξεχώρισε το business logic σου από το presentation logic. Κάνε μια function που τραβάει τα δεδομένα και τα επιστρέφει σε κάποια επεξεργασμένη μορφή (π.χ. σαν πολυδιάστατο πίνακα στην απλούστερη των περιπτώσεων) και μια διαφορετική function η οποία θα παίρνει αυτό τον πίνακα και θα τον εμφανίζει. Η πρώτη δε χρειάζεται να ξέρει από HTML, και η δεύτερη δε χρειάζεται να ξέρει από SQL.
Δημοσ. (επεξεργασμένο)

Σωστό αυτό με το JOIN.

 

Άλλαξα το 2ο query και μου επιστρέφει όλες τις 32 εγγραφές. Το θέμα είναι να κάνει σωστά το loop με διαφορετικό ID.

 

Δηλ:

  • O πίνακας #1: [REMOVED]
  • Ο πίνακας #2 έχει (με το join) : [REMOVED]
  • Αυτό που θέλω είναι το function να φτιάχνει αυτό (με HTML/PHP): [REMOVED]
Επεξ/σία από Crazy Priest

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...