2011-01-01 8 views
0

Ich arbeite gerade an dem Versuch, eine Dropdown-Box zu erhalten, um das zuletzt gespeicherte Feld jedes Mal anzuzeigen, wenn ich eine Seite zum Bearbeiten eines Artikels in einem Inventar öffne. Nehmen wir an, dass meine Dropdown-Auswahlmöglichkeiten Eisen, Kupfer, Gold, Silber und Titan sind. Wenn die Dropdown-Box das erste Mal geladen wird, möchte ich, dass sie in dieser Reihenfolge geladen wird (die Standardreihenfolge, auf die ich sie eingestellt habe). Sobald ein Benutzer jedoch ein Formular übermittelt, das eine Auswahl angibt, möchte ich, dass diese Auswahl als neuer Standard für das Dropdownfeld angezeigt wird (wenn der Benutzer beispielsweise Gold auswählt, wird Gold jetzt als Standard angezeigt). Der neue Standardwert, der ausgewählt und übermittelt wird, kann jedoch nur für die Felder angezeigt werden, unter denen er gespeichert wurde (z. B. weil der Benutzer Gold ausgewählt hat, wird seine Voreinstellung jetzt als Gold gespeichert und erscheint als solches unter dem Feld Halskette). Gold sollte nicht der Standardwert für die Felder Ring, Armband und Ohrring sein, wenn ich eine Seite öffne, um sie anzuzeigen).Kann eine Dropdownbox mit PHP/MySQL automatisch auswählen, was zuletzt in der Datenbank gespeichert wurde?

Grundsätzlich brauche ich eine Dropdown-Box, die die Option der neuesten Auswahl auf einer Seite speichern kann, nachdem das Formular übermittelt wurde, während gleichzeitig sicherstellen, dass die Standardreihenfolge der Dropdown-Box über andere Seiten nicht beeinträchtigt wird. Deine Hilfe ist sehr Willkommen.

Antwort

0

Um dies zu erreichen, benötigen Sie benutzerspezifische Einstellungen (damit Sie die letzte Auswahl für jeden Benutzer speichern können).

Abhängig von Ihrer Einrichtung könnte dies so einfach sein wie das Setzen einer $ _SESSION-Variable (überprüfen Sie einfach die Sitzungseinstellung, wenn Sie den HTML-Code der Auswahlliste ausgeben), obwohl dies natürlich nur für die Dauer der Benutzerzeit gilt auf der Website.

Zum Beispiel:

<?php 
// Example dropdown 
$dropdownValues = array("One", "Two", "Eleventy"); 

echo '<select id="test" name="test">'; 
foreach($dropdownValues as $current) { 
    echo '<option value="'.$current; 
    echo $_SESSION['dropdowndefault'] == $current ? ' selected="selected"' : ''; 
    echo '>'.$current.'</option>'; 
} 
echo '</select>'; 
?> 

Alternativ können Sie einen Cookie verwenden, oder (wenn Benutzeranmeldungen haben) eine Datenbank gesichert Grundeinstellungen.

0

Um dies zu tun, benötigen Sie ein Flag in Ihrer Datenbank, um es als zuletzt ausgewählt zu markieren. Beachten Sie, dass die Flags eine 1: m-Beziehung sein müssen, da jeder Benutzer mehrere Flags haben kann. In Ihrem SQL, Sie nur ORDER BY dieses Flag, so dass Sie dies als das oberste Element haben.

SELECT * FROM table, flag_table 
ORDER BY flag; --- not correct, just to get the idea 

Ein anderer Weg ist der ausgewählte Wert in der Sitzung zu halten, und wenn Sie ein Array verwenden, entfernen Sie es aus ihm aktuelle Position ist und einfach an die Spitze hinzuzufügen.

$array = array('foo', 'bar', 'baz'); 
//remove baz and add it to the front 
$array = array('baz', 'foo', 'bar'); 

Die SQL-Lösungen scheint mir sauberer.

0

Speichern Sie die Optionen in der Auswahlbox in einem Array innerhalb einer Sitzungsvariablen. Jedes Mal, wenn der Benutzer das Formular sendet, drücken Sie die ausgewählte Option an die Vorderseite des Arrays.

0

Unabhängig davon, ob Sie angemeldet sind oder nicht, würde ich eine sitzungsbasierte Lösung zu Beginn empfehlen.

Da verschiedene Dropdowns andere Standardwerte benötigen, warum nicht ein Array?

$_SESSION['dropdownDefaults'] = array(
    'view_name' => id, 
    'toplist_myDropdown' => 42 
); 

Wenn Ihre Standardwerte über Lebensdauer einer Sitzung zum Überleben braucht, (Browser schließen), der db-Lösung von drColossos wäre in Ordnung, aber dann müssen Sie wieder Logins ...

Würden keine Cookies empfehlen wie AV sie nicht mag.

Grüßen,

// t

Verwandte Themen