gegevens uit database in formulier

Status
Niet open voor verdere reacties.

Tha Devil

Moderator
Forumleiding
Moderator
Lid geworden
1 sep 2002
Berichten
16.494
Besturingssysteem
macOS Sequoia
Ik heb een login systeem gemaakt en daar zit ook de functie edit member in.

Nu is het zo dat je dan een formulier krijgt te zien met alle velden en daarin de gegevens die in de database staan.

Maar nu heb ik dus voor het land van herkomst een <select> functie, hoe krijg ik het nou zo dat als ik dus naar edit member ga, ik de optie te zien krijg die de persoon heeft gekozen?

Ik heb dit al geprobeerd maar dat geeft niet het gewenste resultaat want dan krijg ik dus 2x een waarde in de selectie
PHP:
<select name='country'>
   <option selected value='$row[country]'>$row[country]</option>
    <option value='Netherlands'>Netherlands</option>
    <option value='Belgium'>Belgium</option>
</select></td>

Zoals jullie zien is het nog niet zo'n uitgebreide wereld, maar ik kan het beter eerst correct zien te krijgen voor ik meerdere landen toevoeg:confused:
 
je kunt de select vast wel ergens op internet downloaden... het is nogal veer werk om een paar honderd landen in te typen....

ik gebruik dit:
PHP:
<?PHP 
$land = array('NL' => 'nederland', 'BE' = > 'België', ENZ.);
echo '<select name=\'country\' method=\'post\'>';

foreach($land AS $afkorting=> $landnaam)
{
echo '<option value="' . $afkorting. '"';
  if($landnaam == $row[country])
  {
  echo ' selected';
  }
echo '>' . $landnaam. '</option>';
}
echo '</select>';
?>
met dank aan JPeetje!!!

dit werkt volgens mij wel.... ik weet niet of je met array's kunt werken, anders moetje hier maar eens kijken

JB'tje
 
Hm, je kunt idd met array's werken.

Klein voorbeeldje:

PHP:
<?

$landen = array('NL' => 'Nederland',
                'BE' => 'Belgie',
                'DE' => 'Duitsland'
                )

$query = 'SELECT * FROM users WHERE id = \'2\'';
$result = mysql_query($query) or die(mysql_error());
$rij = mysql_fetch_assoc($result);

echo '<select name="land">';

foreach($landen AS $key => $waarde)
{
  echo '<option value="' . $key . '"';
  if($key == $rij['land'])
  {
    echo ' selected';
  }
  echo '>' . $waarde . '</option>';
}

?>

Kan zomaar zijn dat er iets niet werkt. Tis laat..
 
Oke dit heb ik nu ingevoerd:
PHP:
$land = array(
                       'NL' => 'Nederland', 
                       'BE' => 'België'
                      );

echo "<select name='country' method='post'>";
                                    foreach($land AS $afkorting=> $landnaam)
                                    {
                                    echo '<option value="' . $afkorting. '"';
                                      if($landnaam == $row[country])
                                      {
                                      echo ' selected';
                                      }
                                    echo '>' . $landnaam. '</option>';
                                    }
                                    echo '</select>':

Hij geeft geen foutmeldingen, maar hij neemt niet de waarde over uit de database, als ik dus bijv Belgie invoer bij de wijziging en ik kijk daarna nog een x staat hij weer doodleuk op Nederland terwijl hij in de database of BE staat.

Iemand?
 
Controlleer in de browser broncode eens of je errors tegenkomt. Soms worden die verborgen in sommige HTML elementen :)
 
ik zou zeggen, druk '$row[country]' eens af (echo, print) en kijk wat er in staat... indien hier iets anders indtaat dan de NL of BE die in de array staan zal het niet werken....
kijk ook (zoals masterprut al zei) eens met
PHP:
error_reporting(E_ALL);
of er een fout in de code is...

JB'tje :thumb:
 
JB'tje: Zoals ik al zei: In de database wordt de waarde BE wel opgeslagen, dus als ik echo $row[country] doe komt er ook BE te staan.

Voor de rest: dit staat er in de broncode:

<tr>
<td align='right'><b>Country:</b></td>
<td><select name='country' method='post'>
<option value="NL">Nederland</option>
<option value="BE">België</option></select>
</td>
</tr>

Wat mij dus opvalt is dat er geen selected komt te staan, ligt dit misschien aan de php code? Of kan het iets anders zijn?
 
Nou weet ik echt niet wat ik verkeerd heb gedaan, maar ik heb nog eens die code van masterprut geprobeerd en nu doet hij het wel.

PHP:
foreach($landen AS $key => $waarde)

                                    {
                                      echo '<option value="' . $key . '"';
                                      if($key == $row['country'])
                                      {
                                        echo ' selected';
                                      }
                                      echo '>' . $waarde . '</option>';
                                    }
                                    echo "</select>";

Thanx, nu weet ik hoe het werkt en kan ik de andere <option> tags ook aanpassen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan