• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Sortierung von Datensätzen mit AJAX/PHP

Dsimon24

Mitglied
Hallo,

mittlerweile versuche ich schon seit mehreren Stunden verzweifelt eine
geänderte Sortierung von Datensätzen in meine MySQL-DB zu hinterlegen.

Ich habe mittels jQueryUI die ausgegebenen Datensätze so zurechtgebastelt,
dass ich sie untereinander verschieben (umsortieren) kann. Nun versuche ich mit
Hilfe von AJAX und PHP ein Script zu erstellen, dass die Daten gespeichert bleiben,
welches jedoch einfach nicht funktionieren mag.

Im Bereich Webentwicklung bin ich noch recht neu - deshalb entschuldigt bitte,
wenn es ein nur kleines Problem ist - eine Lösung kann ich jedoch trotzdem
leider nicht finden. Ich schicke mal die entsprechenden Code-Teile mit...

index.php (Ausgabe der Datensätze):
PHP:
<?php include('config.php'); ?>
        <?php
            $abfrage = "SELECT * FROM erfassung ORDER BY item_order ASC";
            $ergebnis = mysqli_query($mysqli, $abfrage);
         ?>
               
                    <div id="content">

                        <div class="headbox">
                            <h2>September 2015</h2>
                        </div>

                        <div class="sortable"> <?php
                        while($row = mysqli_fetch_object($ergebnis))
                           {

                            ?>       
                                <div class="box">
                                    <?php echo $row->bemerkung; ?>

                                    <?php if ($row->betragC == 0) $row->betragC = "00" ?>
                                    <div class="betrag">
                                        <?php echo $row->betragE .",". $row->betragC ."€"; ?><br>
                                        <?php echo $row->datum . "<br>"; ?> <!-- Ausgaben -->
                                    </div>
                                </div>                                           
                   
                            <?php } ?> <br> <!-- Optimierungspotenzial per CSS! -->
                           
                    </div> <!-- Ende: content -->
                </div>                     
            </div>             
        </div>


sortable.js:

Code:
$(function() {
    $('#sortable').sortable({
        axis: 'y',
        opacity: 0.7,
        handle: 'span',
        update: function(event, ui) {
            var list_sortable = $(this).sortable('toArray').toString();
            // change order in the database using Ajax
            $.ajax({
                url: 'set_order.php',
                type: 'POST',
                data: {list_order:list_sortable},
                success: function(data) {
                    //finished
                }
            });
        }
    }); // fin sortable
});


set_order.php:

Code:
<?php

// including the config file
include('config_pdo.php');
$pdo = connect();

// get the list of items id separated by cama (,)
$list_order = $_POST['list_order'];
// convert the string list to an array
$list = explode(',' , $list_order);
$i = 1 ;
foreach($list as $id) {
    try {
        $sql  = 'UPDATE erfassung SET item_order = :item_order WHERE id = :id' ;
        $query = $pdo->prepare($sql);
        $query->bindParam(':item_order', $i, PDO::PARAM_INT);
        $query->bindParam(':id', $id, PDO::PARAM_INT);
        $query->execute();
    } catch (PDOException $e) {
        echo 'PDOException : '.  $e->getMessage();
    }
    $i++ ;
}
?>

jQuery und JS sowie CSS hab ich natürlich in der index.php im head-Bereich bereits eingefügt.
Die Datenbankanbindung funktioniert auch, da mir die Datensätze ausgegeben werden.
Allerdings werden diese eben nur leider nicht umsortiert und gespeichert.

Ich hoffe, mir kann einer Helfen ;-)

Grüße, David
 
Allerdings werden diese eben nur leider nicht umsortiert und gespeichert.

In welcher Reihenfolge die Daten in der DB liegen, ist doch völlig egal. Das Sortieren erfolgt mit dem Request und kann server- oder clientseitig geschehen. Warum in aller Welt willst du 'sortierte' Daten wieder in die DB pushen?
 
In welcher Reihenfolge die Daten in der DB liegen, ist doch völlig egal. Das Sortieren erfolgt mit dem Request und kann server- oder clientseitig geschehen. Warum in aller Welt willst du 'sortierte' Daten wieder in die DB pushen?

Die Datensätze sollen nach einer eigenen Art sortiert werden, aber nach keinen bestimmten Schema.
 
Das 'Schema', nach dem Datensätze intern sortiert sind, ist der Zeitpunkt ihrer Eingabe.

Um zu erläutern, wie unsinnig die Idee ist: Angenommen, du sendest eine Anfrage, die 500 Datensätze holt. Dann lässt du die nicht auf einmal ausgeben, weil das a) nicht performant wäre und b) die Ausgabe endlos lang würde. Statt dessen fetched man pro Request vielleicht 10-50. Amazon verwendet dafür Pagination, und Facebook sendet einen neuen Request für den nächsten Batch, wenn der User nach unten scrollt. Bei deiner Vorstellung eines 'sortierten Zurückschreibens' müssten alle Datensätze berücksichtigt werden. Nun stell dir vor, das wären nicht 500, sondern 5.000, 50.000 oder 100.000.
 
Zurück
Oben