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

ταξινόμηση εγγραφών στην mysql κατά position (order by position)


mgiota

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

Δημοσ.
Λοιπόν ο κώδικας που προέκυψε για τη σελίδα sort_results είναι ο εξής:

 

 

Έχω και κάποια σχόλια που εξηγώ τη λογική μου. Απ' ότι έχω ελέγξει μέχρι στιγμής λειτουργεί σωστά (θα κάνω βέβαια και άλλους ελέγχους). Απλά δεν πρέπει να είναι και η πιο σωστή υλοποίηση. Κάνει πολλά ερωτήματα στο server. Για παράδειγμα εκεί που ελέγχω στην αρχή πόσες τιμές άλλαξαν, πώς θα μπορούσα να το κάνω καλύτερα;

 

Για παράδειγμα θα μπορούσες να περνάς στο $_GET ( που θα μπορούσε να γίνει $_POST ) μόνο αυτές που αλλάξαν... Αν δεν αλλάξαν δεν θα υπάρχει στο $_GET

 

π.χ.:

>
foreach ($_GET['changed'] as $theidp=>$n_pos)
{
$r = $mysqli->query("SELECT position FROM articles WHERE id='$theidp'");
// κτλ. κτλ. εχοθμε το $old_pos

// Έλεγχος αν τα position είναι "καλά" μην πάθουμε και καμιά ζημιά
if ($n_pos>$old_pos)
{
$sql2="UPDATE articles SET position=position-1 WHERE category_id='$id' && position<=$n_pos && position>$old_pos";
}
else
{
$sql2="UPDATE articles SET position=position+1 WHERE category_id='$id' && position>=$n_pos && position<$old_pos";
}
$mysqli->query($sql2);
$mysqli->query("UPDATE articles SET position='$n_pos' WHERE id='$theidp'");
}

 

Δεν έχω τεστάρει τίποτα απλά γραφω :-D

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...