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

PHP: Πως ακριβώς συντάσσεται αυτό?


sinikos

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

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

Καλησπέρα. Έχω ενώσει 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  τις ημερομηνίες σωστά? 

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

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Γιατί δεν κάνεις το 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
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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