PHP 2 Inhalte in einem <select> seperat sortieren

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hi...

also ich hab nen Dropdown:
formpostprob.bmp


Der sichtbare Inhalt des Dropdowns wird aus zwei Inhalten (Name,Datum) zusammen gesetzt...

Ich möchte den Inhalt sortieren:

Name = Nach Alphabet
Datum = Neustes Datum zuerst

So sind die Namen nach Alphabet sortiert aber die Namen sind miteinander noch nach Datum sortiert

Jedoch weiß ich nicht genau wie ich das anstellen soll...
hab es mal so probiert aber dort sortiert der nur den Namen nach Alphabet aber ließt zeigt nicht mehr richtige Datum an....

hier der Quelltext:

PHP:
//Text auswählen und Bearbeiten/Löschen
$seite = $_GET['edit'];
$sql_texte_date = mysql_query("SELECT textid,textdatum FROM texte WHERE textseite='$seite' ORDER BY textdatum DESC") or die(mysql_error());
$sql_texte_name = mysql_query("SELECT textid,textname FROM texte WHERE textseite='$seite' ORDER BY textname ASC") or die(mysql_error());
if(mysql_num_rows($sql_texte_date) != 0)
{
	echo'<hr><br>
	<form method="post" action="include/texteditor.inc.php">
	<label>Text in "<b>'.$seite.'</b>" bearbeiten:</label>
	<select name="textedit_name">
		<optgroup label="Bitte wählen...">';					
			while($obj_texte_date = mysql_fetch_object($sql_texte_date) && $obj_texte_name = mysql_fetch_object($sql_texte_name))
			{
				$year = date("d.m.Y", $sql_texte_date->textdatum);
				$time = date("H:i", $sql_texte_date->textdatum);
				echo '<option value="'.$sql_texte_date->textid.'">'.$obj_texte_name->textname.'('.$year.' um '.$time.' Uhr)</option>'; 
			}
			echo'
		</optgroup>
	</select>
	<input type="submit" name="edit_text" value="Bearbeiten">
	<input type="submit" name="delete_text" value="Löschen">
	</form><br>';
}

mfg
 
Nein, moment also so geht das:

(Aus deinem letzten Thread):
PHP:
//Text auswählen und Bearbeiten/Löschen
$seite = $_GET['edit'];
$sql_texte = mysql_query("
SELECT 
  textid,
  textname,
  textdatum 
FROM 
  texte 
ORDER BY 
  textname ASC,
  textdatum DESC
") or die(mysql_error());    
echo'<hr><br>
<form method="post" action="include/texteditor.inc.php">
    <label>Text in "<b>'.$seite.'</b>" bearbeiten:</label>
    <select name="text_edit">
        <optgroup label="Bitte wählen...">';                    
            while($obj_texte = mysql_fetch_object($sql_texte))
            {
                $year = date("d.m.Y", $obj_texte->textdatum);
                $time = date("H:i", $obj_texte->textdatum);
                echo '<option value="'.$obj_texte->id.'">'.$obj_texte->textname.'('.$year.' um '.$time.' Uhr)</option>';
            }
            echo'
        </optgroup>
    </select>
    <input type="submit" name="edit_text" value="Bearbeiten">
    <input type="submit" name="delete_text" value="Löschen">
</form><br>';
 
Zuletzt bearbeitet:
Hintergund: Für das ORDER BY deiner Abfrage kannst du mehrere Spalten angeben (durch Komma getrennt). Es ist nicht erforderlich das du für jedes Sortierkriterium eine eigene Abfrage gegen die Datenbank sendest. Es ist nicht performant (da 2 Abfragen statt einer) und auch nicht klug das du aus mehreren Ergebnissen dein eigentliches Ergebnis zusammenbauen musst. Abgesehen davon das sich bei dieser Vorgehensweise schnell Fehler einschleichen. Bei manchen DBMS gilt es zu beachten, das die Spalten deines ORDER BY (Sortierkriterien) auch in der Spaltenauflistung stehen müssen (Oracle kanns nicht, SQLServer kann es, MySQL: unbekannt). Eagle hat dir für den Zweck eine gute Vorlage geliefert...
 
Zuletzt bearbeitet:
Rossibaer hat recht. Leider bin ich nicht mehr dazugekommen eine Erklärung zu schreiben, das Abendessen hat gewartet ;-)

Man sollte SQL nicht unterschätzen, abgesehen von solchen 'simplen' Abfragen kann man eine Menge damit machen, IF-Abfragen innerhalb eines SQL-Befehls, mehrere SQL-Abfragen gleichzeitig erledigen (JOIN) und dabei die Abhängigkeit betrachten etc.
Um so komplexer deine Abfragen werden, desto öfters solltest du sie nach diesem Schema strukturieren (mir fällt der Name grad nicht ein):

Code:
SELECT / CREAT / DELETE / COUNT.......
    Spalte,
    Spalte 2,
    Alle Spalten *
FROM
    Tabelle
WHERE (etc.)
    Wert = Wert2,
    Wert3 = Wert4

P.S.: Normalerweise benutzt man die Tabulator-Taste dafür, doch hier im Forum geht das ja nicht :-((
 
Zuletzt bearbeitet:
Raven:
Wenn du einigermaßen English kannst, dann kann ich dir Planet Source Code empfehlen.

Da gibts Unmengen an netten, schwierigen, interessanten SQL Befehlen / Codes, die dir helfen können. Ansonsten findest du sicher auch was in Wikipedia. Stopf den Kopf nicht voller Fakten, wofür gibt es Akten... ;)

Eagle: Dachte mir, nur der Code, war etwas wenig... Aber an sich ein schöner Stil, um die Abfragen zu strukturieren. Bei komplizierten Abfragen/ Befehlen ist das auch meine Formatierungsmethode...
 
Zuletzt bearbeitet:
Jo danke,

ich wollte auch das erst in eine Abfrage unterbringen, aber das hat irgendwie nicht geklappt weil ich nicht wusste wie ich das trennen sollte...

ich probiers mal aus so


-------------------------------------------------------------------------------
klappt. :)
 
Zuletzt bearbeitet:
Zurück
Oben