Ik heb een website waarbij gebruikers inloggen. Nu heb ik een formulier gemaakt waar met een dropdown de gebruikers geselecteerd kunnen worden die in de database zijn opgeslagen. Echter in de database zitten ook gebruikers die ik niet in de lijst wil tonen in het formulier. Bv. de admin gebruiker. Hoe kan ik deze middels php code deze gebruiker niet tonen?
Hoezo zou je een dropdown willen gebruiken om de gebruikersnamen te kiezen?
Maakt dit het niet makkelijker om te zoeken wie een gebruiker is, waarna je door gelekte wachtwoordlijsten kan zoeken?
Antwoord op je vraag: filter in je database query erop, met bijv.
Het gaat om een portal voor een vereniging waar bestuursleden wijzingen aanvragen voor leden van de vereniging. Dan wil ik niet dat ze maar wat invullen, maar dat ze een keuze maken voor een account.
Helaas werkt de code niet.
Ik heb nu deze code in het veld staan:
//<code>
// Prepare the empty array
$items = array();
// Prepare the database connection
$db = JFactory::getDbo();
// Keep this if you'd like a "Please select" option, otherwise comment or remove it
$items[] = "|Maak een keuze[c]";
// Run the SQL query and store it in $results
$db->setQuery("SELECT * FROM `tabelnaam` WHERE 1");
$results = $db->loadObjectList();
// Now, we need to convert the results into a readable format.
// The Items field will accept values in this format:
// value-to-be-stored|value-to-be-shown
// Eg. m|M-sized T-shirt
foreach ($results as $result) {
$value = $result->name;
$label = $result->name;
$items[] = $value.'|'.$label;
}
// Multiple values are separated by new lines, so we need to do this now
$items = implode("\n", $items);
// Now we need to return the value to the field
return $items;
//</code>
Ik wil graag dus de admin gebruikers niet in de lijst hebben staan. Hoe kan ik dit inbouwen?
Een user id is alleen en uitsluitend voor intern gebruik in je database, verder zou ik het echt nergens voor gebruiken of de een of andere betekenis aan toekennen.
Je hebt dus een extra column nodig in je users tabel waar de de rol of "status" van een user in aangeeft. Kijk in je query alleen uit met het woord "status", want dat is een gereserveerd woord in MySQL.
Sommige mensen werken in zo'n geval graag met backticks:
SELECT id, user FROM users where `status` != 'admin' ORDER BY user ASC
Maar ik werk liever met tabel aliassen:
SELECT u.id, u.user FROM users u where u.status != 'admin' ORDER BY u.user ASC
Aanvulling 1: als je veel statussen gaat krijgen, kun je daarvoor weer een aparte tabel aanmaken.
Aanvulling 2: bij het echoën van je select dropdown zou ik het id in de value van het option element zetten en de user in de tekst van de option.