php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 01-06-2003, 18:22
Innuendo
 Guest
Innuendo
Beiträge: n/a
Standard Reihenfolge der Datensätze verändern ...

Hallo an alle.

Ich versuche mich gerade an einem kleinen Redaktionssystem, welches dem Kunden es ermöglichen soll, auf seiner Seite News zu veröffentlichen. An und für sich nichts aufregendes, aber ich bin ja auch noch relativer SQL-Anfänger. *g*

Die Informationen zu jedem Artikel sollen in einer MySQL-Datenbank gesichert werden, und zwar nach folgendem Aufbau:

id | article_id | article_file | header | teaser | pic | bu

"id" ist die fortlaufende Nummer des Artikels (also "auto-increment").
"article_id" enthält die ID des Artikels, mit der der Artikel bei allen möglichen Operationen erkannt wird.
"article_file" enthält den Dateinamen für den eigentlichen Artikeltext.
"header" enthält die Überschrift, "teaser" den Anreißertext.
"pic" enthält den Dateinamen für das Bild und "bu" die Bildunterschrift.

Artikel lassen sich bis jetzt problemlos einstellen, bearbeiten und auch wieder löschen. Mein Problem ist jetzt: Wie realisiere ich es, dass der Nutzer die Reihenfolge der Artikel z.B. durch Klick auf "nach oben verschieben" verändern kann? Ein Denkansatz würde mir schon genügen, ein kleines Skript wäre mehr als hilfreich.

Danke im Voraus.
Innuendo
Mit Zitat antworten
  #2 (permalink)  
Alt 01-06-2003, 18:35
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

es gibt zwei lösungen. einmal über ein feld vom typ DATETIME. damit kannst du grundsätzlich deine daten nach dem einstelldatum sortiert ausgeben. news sortiert man ja auch nicht wild umher.

die andere lösung ist eine spalte von typ INT in der du eine sortiernummer angibst. z.b. 10, 20, 30 usw.

letzteres ist wohl eher für dich interessant. und wenn du einen artikel verschieben willst, änderst du nur die sortier-nummer. fertig.

was mir hier noch aufgefallen ist ...
Zitat:
"id" ist die fortlaufende Nummer des Artikels (also "auto-increment").
"article_id" enthält die ID des Artikels, mit der der Artikel bei allen möglichen Operationen erkannt wird.
... warum machst du das erkennen über die 2. spalte? die 1. spalte erfüllt den zweck hierfür doch genauso. zumal diese id ja auch auto-increment und damit ziemlich eindeutig(er) ist.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 01-06-2003, 18:52
Innuendo
 Guest
Innuendo
Beiträge: n/a
Standard

Zitat:
Original geschrieben von Abraxax
es gibt zwei lösungen. einmal über ein feld vom typ DATETIME. damit kannst du grundsätzlich deine daten nach dem einstelldatum sortiert ausgeben. news sortiert man ja auch nicht wild umher.
Ich muss mich korrigieren. Das Redaktionssystem betrifft ein Newslettersystem. Bislang musste er die Artikel nacheinander einstellen. Wehe, es kann noch ein Artikel dazwischen, da war natürlich keine Möglichkeit gegeben, die Reihenfolge der Artikel noch im Nachhinein zu ändern (jedenfalls nicht über das Interface).

Zitat:
Original geschrieben von Abraxax
die andere lösung ist eine spalte von typ INT in der du eine sortiernummer angibst. z.b. 10, 20, 30 usw.

letzteres ist wohl eher für dich interessant. und wenn du einen artikel verschieben willst, änderst du nur die sortier-nummer. fertig.
Ändert die Datenbank die Reihenfolge dann selbst? Ich wüsste nämlich jetzt echt nicht, wie ich mit UPDATE die Reihenfolge ändern sollte.

Zitat:
Original geschrieben von Abraxax
was mir hier noch aufgefallen ist ... ... warum machst du das erkennen über die 2. spalte? die 1. spalte erfüllt den zweck hierfür doch genauso. zumal diese id ja auch auto-increment und damit ziemlich eindeutig(er) ist.
Gutes Argument. Für mich zum Verständnid: Wenn die erste ID "auto-increment" ist und ich ändere die Reihenfolge von 1-2-3 auf 1-3-2, bleibt die Reihenfolge nicht dennoch 1-2-3 (wegen der fortlaufenden ID)?
Mit Zitat antworten
  #4 (permalink)  
Alt 01-06-2003, 18:54
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Innuendo
Ändert die Datenbank die Reihenfolge dann selbst? Ich wüsste nämlich jetzt echt nicht, wie ich mit UPDATE die Reihenfolge ändern sollte.

Gutes Argument. Für mich zum Verständnid: Wenn die erste ID "auto-increment" ist und ich ändere die Reihenfolge von 1-2-3 auf 1-3-2, bleibt die Reihenfolge nicht dennoch 1-2-3 (wegen der fortlaufenden ID)?
die reihenfolge sollte nciht an die id gekoppelt sein. wenn du eine sortierspalte hast, macht du in der sql-query einfach

ORDER BY sortspalte

ans ende. und schon ist sortiert. die id ist grundsätzlich irrelevant.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #5 (permalink)  
Alt 02-06-2003, 08:35
Innuendo
 Guest
Innuendo
Beiträge: n/a
Standard

Ich dachte, dass ORDER BY nur bei SELECT geht, jedoch nicht bei UPDATE. Oder habe ich mich da verlesen?
Mit Zitat antworten
  #6 (permalink)  
Alt 02-06-2003, 09:16
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

das ist schon richtig. deine ausgabe soll ja sortiert sein. wenn du das updatest, setzt du ja erst einmal die sortierung.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #7 (permalink)  
Alt 02-06-2003, 09:23
Innuendo
 Guest
Innuendo
Beiträge: n/a
Standard

Moment, das verstehe ich jetzt nicht. Dass ich die Ausgabe sortiert wiedergeben kann, habe ich begriffen, aber wie soll das beim UPDATE passieren, wenn ich dort kein "ORDER BY" verwenden kann?
Mit Zitat antworten
  #8 (permalink)  
Alt 02-06-2003, 09:44
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

ein UPDATE machst du ja nur für EINEN datensatz. was willst du da sortieren?
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #9 (permalink)  
Alt 02-06-2003, 10:49
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Innuendo
Moment, das verstehe ich jetzt nicht. Dass ich die Ausgabe sortiert wiedergeben kann, habe ich begriffen, aber wie soll das beim UPDATE passieren, wenn ich dort kein "ORDER BY" verwenden kann?
die sortierst die datensätze nicht in der db, in der bleiben sie so drin, wie sie eingetragen wurden. und daran gibt's auch nichts zu ändern.

sortiert wird ausschliesslich beim ausgeben.

das update machst du nur, um bei einem datensatz das sortfeld zu verändern. nach diesem sortfeld wird dann bei der ausgabe sortiert.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #10 (permalink)  
Alt 02-06-2003, 12:32
Innuendo
 Guest
Innuendo
Beiträge: n/a
Standard

Ach soooooooooooooooooooooo. Jetzt verstehe ich. Danke euch beiden.
Mit Zitat antworten
  #11 (permalink)  
Alt 02-06-2003, 15:36
Innuendo
 Guest
Innuendo
Beiträge: n/a
Standard

Hallo an alle.

Ich habe hier ein Skript gefunden, welches mir "angeblich" das Verändern der Reihenfolge ermöglicht. Ich habe es auf meine Variablen umgeschrieben, aber irgendwie geht es nicht. Jemand eine Idee?

Code:
if($move=="up")
{
 $sql_up = "SELECT sort_nr from tabelle WHERE sort_nr<'$sort_nr' ORDER by sort_nr DESC LIMIT 10";
 $res_up = mysql_query($sql_up);
 while ($row_up = mysql_fetch_row ($res_up))
 {
  $sort_nr2 = $row_up[0];
  mysql_query("UPDATE tabelle SET sort_nr='$sort_nr2' WHERE sort_nr='$sort_nr'");
  mysql_query("UPDATE tabelle SET sort_nr='$sort_nr' WHERE sort_nr='$sort_nr2'");
 }
}

if($move=="down")
{
 $sql_down = "SELECT sort_nr from tabelle WHERE sort_nr>'$sort_nr' ORDER by sort_nr LIMIT 10";
 $res_down = mysql_query($sql_down);
 while ($row_down = mysql_fetch_row ($res_down))
 {
  $nr2 = $row_down[0];
  mysql_query("UPDATE tabelle SET sort_nr='$sort_nr' WHERE sort_nr='$sort_nr2'");
  mysql_query("UPDATE tabelle SET sort_nr='$sort_nr2' WHERE sort_nr='$sort_nr'");
 }
}
Mit Zitat antworten
  #12 (permalink)  
Alt 02-06-2003, 16:01
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

du musst auch die tabellenfelder und den tabellennamen anpassen...

und genau genommen ist das die umsetzung meines vorschlages.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #13 (permalink)  
Alt 02-06-2003, 22:25
Innuendo
 Guest
Innuendo
Beiträge: n/a
Standard

Das habe ich ja getan. Gut, "tabelle" heißt bei mir "redaktion" und "sort_nr" bei mir "article_order". Aber ich denke nicht, dass es daran liegt, dass das Skript die Sachen nicht ändert. Es passiert schlicht und ergreifend nichts. Muss ich vielleicht doch die "id" mit einbeziehen?
Mit Zitat antworten
  #14 (permalink)  
Alt 03-06-2003, 12:31
Innuendo
 Guest
Innuendo
Beiträge: n/a
Standard

Ich bin langsam am Verzweifeln. Hat denn keiner eine Idee????? HILFE.
Mit Zitat antworten
  #15 (permalink)  
Alt 03-06-2003, 14:15
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

ach jung. so schwer ist das doch nicht.

lege eine testtabelle an.
Code:
DROP TABLE IF EXISTS TestTab;
CREATE TABLE TestTab (
  TabId int(11) NOT NULL auto_increment,
  TabName varchar(30) NOT NULL default '',
  TabSort int(4) NOT NULL default '990',
  PRIMARY KEY  (TabId)
) TYPE=MyISAM;
und befülle sie mit daten.
Code:
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 10',   10);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 30',   30);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 20',   20);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 70',   70);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 60',   60);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 80',   80);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 50',   50);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 90',   90);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 100', 100);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 40',   40);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 150', 150);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 140', 140);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 110', 110);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 130', 130);
INSERT INTO TestTab (TabName, TabSort) VALUES ('irgendwas 120', 120);
nun mache eine normale query von dir.
Code:
SELECT * FROM TestTab
und jetzt mache diese ausgabe SORTIERT
Code:
SELECT * FROM TestTab ORDER BY TabSort
oder
Code:
SELECT * FROM TestTab ORDER BY TabSort ASC
oder
Code:
SELECT * FROM TestTab ORDER BY TabSort DESC
wenn du das jetzt immer noch verstehst, ist es ratsam mal in den buchhandel zu laufen.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Maqetta Open Source  HTML5-Editor ansehen Maqetta Open Source HTML5-Editor

Einen WYSIWYG-Editor zur visuellen Erstellung von Userinterfaces in HTML5 (Drag-and-Drop)

13.05.2019 Berni | Kategorie: HTML5/ EDITOR
NodeBB

NodeBB ist eine Foren-Software auf NodeJS-Basis

13.05.2019 Berni | Kategorie: PHP/ Forum PHP Software
EJS TreeGrid ansehen EJS TreeGrid

EJS TreeGrid is DHTML component written in pure JavaScript to display and edit data in table, grid, tree view or grid with tree on HTML page

09.04.2019 coqsoft@ | Kategorie: JAVASCRIPT/ Components
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:10 Uhr.