Select waarde uit database zetten

Status
Niet open voor verdere reacties.

thapriest

Gebruiker
Lid geworden
28 okt 2009
Berichten
559
Ik heb dit:
PHP:
$list .= ' <select name="soort">';
$sql = "SELECT * FROM `reizen_soort` ";
        $result = mysql_query($sql);
         while($disp = mysql_fetch_array($result))
         {
              $list .= '<option value="'.$disp['soort'].'" selected="'.$disp['soort'].'">  '.$disp['soort'].' </option>';          }
			  $list .= '</select></td></tr>';

Om specifieke opties uit een database te kunnen halen, die ik zelf ook kan invoeren via mijn backend.Echter is het hierin ook mogelijk om de keus die bij een(in dit geval reis) staat weer te geven in die dropdown.Hij staat nu namelijk op alfabetische volgorde.

Nu heb ik een en ander gelezen over het maken van een array daarvoor, dat klinkt ook logisch, alleen zit ik ermee dat elke keer als ik dan een optie toevoeg of verwijder die array weer aan moet passen.IS dit ook makkelijker op te lossen?
 
Keus? Je bedoelt de waarde die getoond wordt op het scherm?

Als dat het is, dan moet je vanuit je backend twee dingen opslaan en ze in je frontend ook allebei ophalen:

PHP:
$list .= ' <select name="soort">';
$sql = "SELECT * FROM `reizen_soort` ";
        $result = mysql_query($sql);
         while($disp = mysql_fetch_array($result))
         {
              $list .= '<option value="'.$disp['soort'].'" selected="'.$disp['soort'].'">  '.$disp['weergeven'].' </option>';          }
              $list .= '</select></td></tr>';

Daarnaast, selected werkt niet op die manier, ik zou nog even naar de documentatie daarvan kijken ;)
 
Ik zal proberen iets duidelijker te zijn ik maak een bepaalde reis aan die heeft een aantal keues in dropdown. in het bewerken van die reis(in bewerk.php) heb ik dus bovenstaande code stan om die opties uit de database te halen (die opties kan ik zelf toevoegen via een apart php bestand) , wat ik graag wil bereiken is dat ik in bewerk.php de waarde te zien krijg die aan die reis gekoppeld is.

Dus bijv. reis1 heeft heeft bij soort strandvakantie, dat hij daar dan ook op staat als ik bewerk open.

Ik hoop dat ik duidelijk genoeg heb uitgelegd wat ik bedoel.
Daarnaast, selected werkt niet op die manier, ik zou nog even naar de documentatie daarvan kijken
Dank je dat klopt, was gisteren ff een gauw probeersel....vergeten weer weg te halen...

Edit: Die waarde zal dus ook uit een andere tabel moeten komen in dit geval uit reizen_aanbod.. De opties staan zelf in reizen_soort.
 
Laatst bewerkt:
Heb er nu dit van gemaakt en hij zelecteert de goede waarde, echter laat hij hem dan ook 4 x zine in de dropdown.Dit heft vast te maken met die while loop, maar als ik hem uit de while loop haal doet hij het niet.

PHP:
$list .= ' <select name="soort">';
	$sql2 = "SELECT * FROM `reizen_aanbod`";
	$result2 = mysql_query($sql2);
	$soort = mysql_fetch_array($result2);
	$list .= '<option selected value"'.$soort['soort'].'"> '.$soort['soort'].' </option>';
	$sql = "SELECT * FROM `reizen_soort` ";
        $result = mysql_query($sql);
         while($disp = mysql_fetch_array($result))
         {
		    
       		  $list .= '<option value="'.$disp['soort'].'" >  '.$disp['soort'].' </option>';          } 
			  $list .= '</select></td></tr>';

EDIT: op deze manier werkt het ook , maar dan laat ik hem alsnog 2x zien, ik zou hem dus uit de while moeten filteren, alleen hoe?
 
Laatst bewerkt:
Zullen dus waarschijnlijk meerdere soorten kunnen zijn denk ik.

In je while haal je de dingen op (dus niet echo'en). Daarna kun je met een if in_array kijken, of die waarde in je array zit. Is dat true, dan doe je in die if je zooi echo'en. Zal je wel nog eerst een array moeten maken van je soort veld, in je reizen_aanbod.

Mocht het geen array zijn, kun je het bovenstaanda aanhouden. Je if in_array word dan if opgehaalde soort == soort in reizen_aanbod, en daarna je zooi echo'en.
 
Maar gezien ik waardes uit 2 verschillende tabellen haal werkt dit toch niet?
ik haal alle opties uit reizen_soort, daar kan ik met een apart php bestand in mijn backend dus ook soorten toevoegen en verwijderen.

En de optie die gezet is, haalt hij uit reizen_aanbod.

Dus ik zou iets moeten hebben dat de default value de gene is uit reizen_aanbod, en de overige opties geladen worden uit reizen_soort.

Maar ik weet ff niet hoe


PHP:
//Begin
		$list .= ' <select name="soort">';
		//Haal soort op uit reizen_aanbod tabel
		$sql2 = "SELECT * FROM `reizen_aanbod`";
		$result2 = mysql_query($sql2);
		$soort = mysql_fetch_array($result2);
		//hier geeft hij dan de gezette waarde neer
		$list .= '<option selected value"'.$soort['soort'].'"> '.$soort['soort'].' </option>';
		//hier haalt hij alle opties op uit reizen_soort
		$sql = "SELECT * FROM `reizen_soort` ";
        $result = mysql_query($sql);
  while($disp = mysql_fetch_array($result)){ 
		//Hier geeft hij dus de waardes weer die in de tabel reizen_soort staan, dus ook weer de waarde die gezet is in de aanbod tabel.
        $list .= '<option value="'.$disp['soort'].'" >  '.$disp['soort'].' </option>';          
		} 
        $list .= '</select></td></tr>';
 
Je krijgt dan zoiets;

PHP:
$query = mysql_query("SELECT * FROM reizen_soort ");
while($record=mysql_fetch_assoc($query)) {
	$soort = $record['soort'];
	// ander eventueel spul ?>
	<select name="soort"><?php
	// Hier is je $soortreisaanbod het veld van je soort in je reizen_aanbod, de ander is die van reizen_soort
	// Als ze niet gelijk zijn, dan moeten ze dus niet geselecteerd zijn
	if($soort != $soortreisaanbod){ ?>
		<option value="<?php echo $soort; ?>"><?php echo $soort; ?></option><?php
	} 
	// Zijn gelijk, dus geselecteerd
	else { ?>
		<option value="<?php echo $soort; ?>" selected="selected"><?php echo $soort; ?></option><?php
	}?>
	</select><?php
}
 
Bedankt voor je voorbeeld, maar ook dit werkt niet zoals het moet, omdat hij in de while staat, genereert hij gewoon 3 aparte veldjes.

Met de if(in_array, ben ik al wel iets anders tegengekomen wat ik ermee kon coveren, dank voor die tip.

In dit geval werkt het met if(in_array wel:
PHP:
//Kijken of aanbieding is aangevinkt, zo ja dan ook zo weergeven.
		$checkbox = "SELECT * FROM `reizen_aanbod` WHERE id = '" .$_GET['nid']."' ";
		$uitkomst = mysql_query($checkbox);
		$check = mysql_fetch_array($uitkomst);
		if (in_array("Ja", $check, TRUE)){ 
			$angebot .= '<input type="checkbox" value="Ja" checked name="aanbieding" />';}
		else{
			$angebot .= '<input type="checkbox" value="Ja"  name="aanbieding" />'; }
 
Ja klopt, ik had de select erbuiten moeten zetten. Stom..

PHP:
<select name="soort"><?php
$query = mysql_query("SELECT * FROM reizen_soort ");
while($record=mysql_fetch_assoc($query)) {
	$soort = $record['soort'];
	// ander eventueel spul
	// Hier is je $soortreisaanbod het veld van je soort in je reizen_aanbod, de ander is die van reizen_soort
	// Als ze niet gelijk zijn, dan moeten ze dus niet geselecteerd zijn
	if($soort != $soortreisaanbod){ ?>
		<option value="<?php echo $soort; ?>"><?php echo $soort; ?></option><?php
	} 
	// Zijn gelijk, dus geselecteerd
	else { ?>
		<option value="<?php echo $soort; ?>" selected="selected"><?php echo $soort; ?></option><?php
	}
} ?>
</select>

Zo werkt ie wel naar behoren denk ik zo.
 
Haha, dat had ik moeten zien:p

Maar hoe maak ik de query voor het ophalen uit aanbod dan passend hierbij?

Want op deze manier haal ik wel alle soorten op maar dan uit de tebel soorten(alle opties dus.)
 
Zoals je andere queries ook opstelt?..

PHP:
<?php 
$query = mysql_query("SELECT * FROM `reizen_aanbod"); // je query kan hier ook zijn SELECT soort, als je alleen maar paar dingen nodig hebt, ander sterretje laten staan
while($record=mysql_fetch_assoc($query)) {
	$soortreisaanbod = $record['soort'];
	// hier eventueel meer dingen
} ?>
 
Ok, op die manier maak ik hem passend... werkt mooi zo, nu nog een aantal waardes op dezelfde manier gaan toepassen...

Wederom is mijn dank groot..

Heb ik nog wel een theorie vraagje, ik zie dat jij Fetch_assoc gebruikt, en ik gebruik fetc_array, wat is hier nu het precieze verschil in.

Want ik heb ergens gelezen dat array de betere manier was, maar wat is daar van waar?
 
Al sla je me dood, precies weet ik het ook niet. Fetch array is echter iets trager, omdat het meerdere dingen meeneemt. Aangezien je alleen maar resultaten wil ophalen, en geen posities of tellen van iets, lijkt mij assoc hier het beste.

"..it's even faster to use fetch_row rather than passing fetch_array MYSQL_NUM, or fetch_assoc rather than fetch_array"
 
Het verschil (dit kun je ook vinden op PHP.net) is als volgt:

[sql]
SELECT veldA, veldB, veldC
FROM tabel
[/sql]

PHP:
$array = mysql_fetch_assoc( $query );
// array ziet er nu zo uit:
$array = array ( 'veldA' => 1, 'veldB' => 2, 'veldC' => 3 );

$array = mysql_fetch_row( $query );
// array ziet er nu zo uit:
$array = array ( 0 => 1, 1 => 2, 2 => 3 );

$array = mysql_fetch_array( $query );
// array ziet er nu zo uit:
$array = array ( 'veldA' => 1, 'veldB' => 2, 'veldC' => 3, 0 => 1, 1 => 2, 2 => 3 );

Ik denk niet dat je wil weten wat er gebeurd als je een kolom hebt die "1" heet. (Ik weet het ook niet)

Persoonlijk zou ik altijd voor Assoc gaan, maar in principe is het vooral een kwestie van voorkeur.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan