PHP Abfrage ist anders als im PHPMyAdmin

Danielku15

Erfahrenes Mitglied
Hi Leute.
Ich sitz schon ne Weile an diesem Problem. Ich hab auch schon hier gesucht aber irgendwie nichts gefunden. Ich schreibe gerade ein Script welches mit meine Datensätze in meiner Datenbank sortiert. Ich verwende diesen SQL Code um den Eintrag nach unten zu verschieben
SQL:
UPDATE `hphilfe_menue_boxen` SET `Order`=(`Order`+1) WHERE `ID`=1;";

Wenn ich diesen SQL Code im PHPMyAdmin ausführe funktioniert er perfekt. Die Spalte Order wird um 1 erhöht. Ich habe eine Funktion um die Boxen zu verschieben:

PHP:
function move_down($BID) {
    // Boxinfos holen //
    $db1 = new db1();
    $sql = "SELECT * FROM `hphilfe_menue_boxen` WHERE `ID`=".$BID.";";
    $daten = $db1->db_sql($sql,1);    
    // Diese Box Hochschieben //
    $db2 = new db1();
    $sql = "UPDATE `hphilfe_menue_boxen` SET `Order`=(`Order`+1) WHERE `ID`=".$BID.";";
    $move = $db2->db_sql($sql,1);
}

Die Funktion db_sql() sendet den Code im 1. Übergabewert mit mysql_query an die Datenbank und fängt die Ergebnisse ab (mysql_insert_id, mysql_affectedrows,...)
Der 2. Übergabewert ist der Debugmodus und gibt mir den SQL Code und Error aus.

Der SQL Code wird korrekt generiert. Bei der Box 1 Beispielsweise genau den oberen. Jedoch wird die Spalte Order um 2 erhöht. Ich finde einfach den Fehler nicht. Warum wird die Spalte um 2 erhöht wenn im Code +1 steht. Die Funktion wird auch nur 1x aufgerufen:
PHP:
        if(!empty($_POST['Boxen'])) {
            move_down($_POST['Boxen']);
        }

Vielleicht findet ihr einen Fehler.

Gruß Daniel
 
Ist es möglich, dass die Datenbankabfrage – warum auch immer – zweimal ausgeführt wird? Denn anders kann ich mir das Verhalten derzeit nicht erklären.
 
Das die Abfrage 2x ausgeführt wird wäre logisch, jedoch ist dies nicht möglich. Im Debugmodus meiner Funktion wird der SQL Code nach dem Ausführen des SQL Querys ausgegeben. Würde also der Code 2x gesendet so müsste auf der Seite irgendwo ein 2. mal der SQL Code erscheinen. Was jedoch nicht der Fall ist.
 
Ich hab nun endlich den Fehler gefunden. Ich lasse in der index.php die unterseite jeweils einbinden. Da ich aber eine Variable aus der Datei weiter oben schon benötige hatte ich dieses Script:
PHP:
ob_start();
include('templates/'.$section);
ob_end_clean();
Weiter unten hab ich dann das Template nochmals eingebunden was extrem blöd war.
Geht doch auch einfach so:
PHP:
ob_start();
include('templates/'.$section);
$template = ob_get_clean();
Dann unten einfach $template per echo ausgeben.

greez daniel
 
Zurück