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

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

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

Καλησπέρα. Έχω ενώσει 2 queries για να πάρω αποτελέσματα από 2 πίνακες σε ένα foreach. Δουλεύει μια χαρά, με σορτάρισμα ανα ημερομηνία κλπ...

Τώρα θέλω όμως να sortάρω και σαν 2η παράμετρος τον αριθμό του δελτίου. Δεν μπορώ να καταλάβω όμως πως το κάνω αυτό...

$results = $query->result();    
        
function cmp($a, $b) {
    return strcmp($a->date, $b->date);
}

usort($results, "cmp");
    
return $results;

Δηλαδή θέλω να εισάγω κάπως και το 

return strcmp($a->number, $b->number);

Έκανα διάφορες πατέντες με διπλές function και διπλά usosrt αλλά δεν μπορώ να βγάλω άκρη...

Επεξ/σία από sinikos
Δημοσ. (επεξεργασμένο)

Στην function που σου δουλεύει μια χαρά και παίρνει τις ημερομηνίες κλπ βάλε άλλη μια παράμετρο και περάσετο στην sql call. 

Επεξ/σία από thiva7
Δημοσ.
1 ώρα πριν, thiva7 είπε

Στην function που σου δουλεύει μια χαρά και παίρνει τις ημερομηνίες κλπ βάλε άλλη μια παράμετρο και περάσετο στην sql call. 

Τι εννοεις αλλη μια παράμετρο. Στο results μου υπάρχουν και οι τιμές ->number

Δημοσ.

Με αυτή την function 

function cmp($a, $b) {
    return strcmp($a->date, $b->date);
}

Κάνεις sort  τις ημερομηνίες σωστά? 

Εάν ναι, δεν έχει πουθενά της Τρίτη παραμετρο που θέλεις. 

Εάν το κάνεις αλλού εξήγησε άμα θέλεις 

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

 

Σορρυ τώρα κατάλαβα οτι θες να κάνεις σόρτ ξεχωριστά τις τιμές. 

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

Γιατί δεν κάνεις το sort από τη βάση με union και order by;

Αν για κάποιο λόγο θες να το κάνεις με PHP και usort:

function cmp($a, $b) {
	if ($a->date == $b->date) return $a->number - $b->number;
    return strcmp($a->date, $b->date);
}

Επίσης με μια αναζήτηση βρήκα και αυτό, που μπορεί να σε βολέψει: https://www.php.net/manual/en/function.array-multisort.php

  • Thanks 1
Δημοσ.
15 ώρες πριν, elvizakos είπε

Γιατί δεν κάνεις το sort από τη βάση με union και order by;

Αν για κάποιο λόγο θες να το κάνεις με PHP και usort:

function cmp($a, $b) {
	if ($a->date == $b->date) return $a->number - $b->number;
    return strcmp($a->date, $b->date);
}

Ευχαριστώ πολύ. Με αυτή την λύση δούλεψε άψογα.

Απλα στο return του if το έκανα strcmp($a->number, $b->number), γιατί μου πέταγε σφάλμα. Το πεδίο δεν είναι int αλλά varchar γιατί ο αριθμός δελτίου, μπορεί να περιέχει και γράμμα

Σε ευχαριστώ

  • Like 1

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

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

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

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

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

Σύνδεση

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

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