Antwort
 
Themen-Optionen
Alt 12.08.2006, 09:43 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard Datensatz hoch/runter verschieben

Irgendwie haut das bei mir nicht richtig hin.

Ich habe verschiedene Texte. Diese werden auf der Hauptseite gelistet.
Jeder Text hat einen online und offline Status. Außerdem gibt es eine Spalte, wo die Benutzerdefinierte Reihenfolge drin ist.

Die Tabelle sieht so aus
Code:
id| title   | selforder | textstatus
1 | Titel 1  | 1         | 1
2 | Titel 2  | 2         | 1
3 | Titel 3  | 3         | 1
4 | Titel 4  | 4         | 1
Beim Auflisten der Textübersicht ist bei jedem Text ein Hoch/Runter Button wo man den Text eben versetzen kann. Die Auflistung soll wie folgt sein
ORDER BY textstatus DESC, selforder DESC

Angenommen ich tausche nun Text 2 mit Text 3 und setze Text 3 auf offline, dann wird steht dieser Text ganz unten. Wenn ich aber nun Text 2 mit Text 4 tausche funktioniert das nicht weil ja der nächstgelegene Artikel 3 ist.

Kann mir jemand in Form von Pseudocode mal helfen wie ich das hoch/runter machen kann unter Berücksichtung von Online/Offline Status?
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 09:48 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Zitat:
Zitat von ex³
Wenn ich aber nun Text 2 mit Text 4 tausche funktioniert das nicht weil ja der nächstgelegene Artikel 3 ist.
Die Begründung verstehe ich nicht.

Wie sehen denn deine SQL-Statements diesbzgl. derzeit aus?
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 11:12 Nach oben    #3
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Nun ja die hab ich grad nich hier

Jedenfalls hab ich zwei links und jeder link hat die ID des Textes
textmove.php?down=[ID des Textes], textmove.php?up=

Das läuft dann ungefähr so:

hole ID, Reihenfolgenwert von Text mit ID $_GET['down']

hole den Reihenfolgenwert von Text kleiner wie die obige Reihenfolge DESC LIMIT 0, 1

Dann hab ich die beiden die vertauscht werden sollen.

Tausche beide (Weiß ich grad den Code nich)

Punkt ist der das wenn ich auf runter klicke und der darunterliegende Datensatz ist offline dann werden diese beiden getauscht, es sollte aber der darunterliegende online Text getauscht werden.

Is schlimm zu erklären ich werde die Tage den Code posten hoffe du kannst mir dann weiterhin helfen?
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 11:26 Nach oben    #4
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Zitat:
Zitat von ex³
hole den Reihenfolgenwert von Text kleiner wie die obige Reihenfolge DESC LIMIT 0, 1
Dann müsstest du hier eine WHERE-Bedingung einbauen, so dass nur "online"-Texte ausgelesen werden.

Hab ich doch richtig verstanden, oder?
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 12:27 Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Jep, die muss irgendwie bei dem DESC LIMIT 0,1 mit rein, oder allgemein beim verschieben.

Ich werd das am Montag nochmal durchgehen und dann hier posten.
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.08.2006, 12:36 Nach oben    #6
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Wenn du es schon wusstest .. warum fragst du dann? *verwirrt bin*
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.08.2006, 15:21 Nach oben    #7
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Hallo Ben ich habs zum Laufen gebracht es funktioniert. Nicht sehr elegant vor allem mit den wenigen Mitteln hier, aber egal. Vielleicht hast du irgendwelche Ideen zum optimieren

PHP-Code:
if (isset ($_GET['down'])) {
    
// Infos des geklickten Artikels holen
    
$where = array (
        
$stringtool->mysql_escape($_GET['down'])
    );
    
    
$query vsprintf('SELECT id, articleorder, articlestatus FROM ' $dbtable['article'] . ' WHERE id = %s'$where);
    
$result mysql_query($query) or die(mysql_error());
    
$row mysql_fetch_array($resultMYSQL_ASSOC);
    
    
$articledown $row;
    
//print_r($articledown);

    // Artikel holen der unter dem oberen liegt anhand der Reihenfolge
    
$where = array (
        
$stringtool->mysql_escape($articledown['articlestatus']),
        
$stringtool->mysql_escape($articledown['articleorder'])
    );

    
$query vsprintf('SELECT id, articleorder, articlestatus FROM ' $dbtable['article'] . ' WHERE articlestatus = %s AND articleorder < %s ORDER BY articleorder DESC LIMIT 0, 1'$where);
    
$result mysql_query($query) or die(mysql_error());
    
$row mysql_fetch_array($resultMYSQL_ASSOC);
    
    
$articleup $row;
    
//print_r($articleup);
    
    // Unteren Artikel an die Position des oberen setzen
    
$update = array(
        
$stringtool->mysql_escape($articledown['articleorder']),
        
$stringtool->mysql_escape($articleup['id'])
    );
    
    
$query vsprintf('UPDATE ' $dbtable['article'] . ' SET articleorder = %s WHERE id = %s'$update);
    
$result mysql_query($query) or die(mysql_error());
    
//echo $query.'<br>';
    
    // Oberen Artikel an die Position des unteren setzen
    
$update = array(
        
$stringtool->mysql_escape($articleup['articleorder']),
        
$stringtool->mysql_escape($articledown['id'])
    );
    
    
$query vsprintf('UPDATE ' $dbtable['article'] . ' SET articleorder = %s WHERE id = %s'$update);
    
$result mysql_query($query) or die(mysql_error());
    
//echo $query;

    
header('Location: articlelist.php');
} elseif (isset (
$_GET['up'])) {
    
// Infos des geklickten Artikels holen
    
$where = array (
        
$stringtool->mysql_escape($_GET['up'])
    );
    
    
$query vsprintf('SELECT id, articleorder, articlestatus FROM ' $dbtable['article'] . ' WHERE id = %s'$where);
    
$result mysql_query($query) or die(mysql_error());
    
$row mysql_fetch_array($resultMYSQL_ASSOC);
    
    
$articleup $row;
    
// print_r($articleup);
    
    // Artikel holen der über dem unteren liegt anhand der Reihenfolge
    
$where = array (
        
$stringtool->mysql_escape($articleup['articlestatus']),
        
$stringtool->mysql_escape($articleup['articleorder'])
    );

    
$query vsprintf('SELECT id, articleorder, articlestatus FROM ' $dbtable['article'] . ' WHERE articlestatus = %s AND articleorder > %s ORDER BY articleorder ASC LIMIT 0, 1'$where);
    
$result mysql_query($query) or die(mysql_error());
    
$row mysql_fetch_array($resultMYSQL_ASSOC);
    
    
$articledown $row;
    
//print_r($articledown);
    
    // Oberen Artikel an die Position des unteren setzen
    
$update = array(
        
$stringtool->mysql_escape($articleup['articleorder']),
        
$stringtool->mysql_escape($articledown['id'])
    );
    
    
$query vsprintf('UPDATE ' $dbtable['article'] . ' SET articleorder = %s WHERE id = %s'$update);
    
$result mysql_query($query) or die(mysql_error());
    
//echo $query.'<br>';
    
    // Unteren Artikel an die Position des Oberen setzen
    
$update = array(
        
$stringtool->mysql_escape($articledown['articleorder']),
        
$stringtool->mysql_escape($articleup['id'])
    );
    
    
$query vsprintf('UPDATE ' $dbtable['article'] . ' SET articleorder = %s WHERE id = %s'$update);
    
$result mysql_query($query) or die(mysql_error());
    
//echo $query;
    
    
header('Location: articlelist.php');

ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL Abfrage klappt nicht mit mehr als einem Datensatz Jan PHP-Programmierung 11 29.03.2007 20:05
Fenster verschieben - anderes Fenster mit verschieben? Binary Allgemeine Java-Programmierung 2 15.08.2005 10:24
Textfelder und Buttons verschieben raZed Desktop-Applikationen und Grafik 3 10.05.2005 17:49
Überprüfen ob Datensatz vorhanden Quakes Datenbanken 2 25.03.2005 13:24
2Dimensionales Array, 2mal denselben Datensatz zonk Allgemeine Java-Programmierung 1 20.10.2004 07:02


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:00 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44