vagannMedlem sedan juli 2011171 inlägg hej
jag vill göra att så användare ska kunna välja en utav de altranativen (med hjälp av <select>) och sedan spara det i database...
för input type="text" har jag gjort som följande ....
echo 'namn:<br />';
echo '<input type="text" name="namn" value="'.$userinfo['namn'].'" />';
//-----
$namn = mysql_real_escape_string($_POST['namn']);
// uppdaterar databasen när man sparar
mysql_query("UPDATE `members` SET `namn` = '". $namn ."', WHERE `id` = '". $_SESSION['id'] ."'") or die(mysql_error());
men hur ska jag göra när det gäller <select>.... tex:
echo ' test?:<br />
<select name="tester: " >
<option value="1">test1</option>
<option value="2">test2</option>
</select>';
hur gör man för att spara värdet i databasen ?
ändra $_POST['namn'] till $_POST['testar'], eller vad menar du?
vagannMedlem sedan juli 2011171 inlägg jag har redan testat det men det funkar inte , det jag vill gör är att när man väljer en av options ska det sparas in i databasen
namnet skall vara "tester" inte "tester: ":
http://php.voigt.se/sandbox/wf/vagann/select.php
<?
if(isset($_POST['tester'])) {
echo "Värdet: " . $_POST['tester'];
}
?>
<form action="select.php" method="post">
<?
echo ' test?:<br />
<select name="tester">
<option value="1">test1</option>
<option value="2">test2</option>
</select>';
?>
<input type="submit">
</form>
vagannMedlem sedan juli 2011171 inlägg funkar utmärkt , men skulle vara bra om det kunde visa den valda alternativen istället för test1 som visas hela tiden,oberoende av valet ... brukar använda
$userinfo['testar']
för att skriva ut värdet från databasen
Kolla det skriv ut en fråga på varje option och sätt den till checked om den har samma värde som option värdet är
vagannMedlem sedan juli 2011171 inlägg hmm , jag förstår inte riktigt hur du menar men ska försöka förklara hur jag tänkte ...
<select>
$option = $userinfo['testar'] ;
<option<?php if($option = "1" ){echo 'selected="selected"'} ?> value ="1">test1</option>
<option <?php if($option = "2"){ echo 'selected="selected"'} ?>value ="2">test2</option>
</select>
$option innehåller värdet från databasen ... tänker jag rätt ?
@ndersMedlem sedan juni 200032 969 inlägg Jag antar att det där är lite pseudo-kod, men:
Det ska vara == i jämförelserna (if-satserna).
Och kolla av dina mellanslag i <option>-koden.
vagannMedlem sedan juli 2011171 inlägg nu har jag fixat det med jämförelserna men ändå så blir sidan tom , det måste vara lite fel i php delen
echo $option = $userinfo['testar'];
echo' test?:<br />
<select name="testar">
<option <?php if($option == "1" ){echo 'selected="selected"';} ?> value="1">test1</option>
<option <?php if($option == "2" ){echo 'selected="selected"';} ?> value="2">test2</option>
</select>';
@ndersMedlem sedan juni 200032 969 inlägg Du blandar apostrofer och kontext-switchar (<?php ... ?>) hejvilt. Jag tror det är lite tydligare om du gör det så enkelt som möjligt för dig. Du har lite echo på fel ställe också, till exempel på den översta raden.
<?php
$option = $userinfo['testar'];
?>
<select name="testar">
<option '<?php if($option == "1" ){ echo 'selected="selected"'; } ?>' value="1">test1</option>
<option '<?php if($option == "2" ){ echo 'selected="selected"'; } ?>' value="2">test2</option>
</select>
eller:
<?
$option = $userinfo['testar'];
echo ' test?:<br />
<select name="tester">
<option value="1" '.($option == "1" ? ' checked="checked"' : '').'>test1</option>
<option value="2" '.($option == "2" ? ' checked="checked"' : '').'>test2</option>
</select>';
?>
vagannMedlem sedan juli 2011171 inlägg gjorde så men det funkade inte ...
<?php
$option = $userinfo['testar'];
?>
echo' test?:<br />
<select name="testar">
<option '<?php if($option == "1" ){ echo 'selected="selected"'; } ?>' value="1">test1</option>
<option '<?php if($option == "2" ){ echo 'selected="selected"'; } ?>' value="2">test2</option>
</select>';
jag måste ha apostofer innan <?php annars kommer det att läsas som html kod .... voigtann , hur tänkte du med checked="checked" ? , hur funkar de till
@ndersMedlem sedan juni 200032 969 inlägg
gjorde så men det funkade inte ...
På vilket sätt funkar det inte? Har du tittat på den resulterande html-koden? Då brukar man få en ledning i vad man gjort fel...
jag måste ha apostofer innan <?php annars kommer det att läsas som html kod
Nej. Då har du gjort något fel (med kontext-switcharna möjligen?). Du kanske måste visa mer kod för att vi ska förstå vad du gör fel.
Jag blev dock lite bortkollrad av alla apostrofer och annat - jag har redigerat mitt inlägg.
mvh
vagannMedlem sedan juli 2011171 inlägg elseif (isset($_GET['account1']))
{
echo '<form action="page.php?action=UserSettings&account2" method="post">';
$option = $userinfo['testar'];
echo' test?:<br />
<select name="testar">
<option value="1" '.if($option == "1" ){ echo 'selected="selected"'; }.'>test1</option>
<option value="2" '.if($option == "2" ){ echo 'selected="selected"'; }.'>test2</option>
</select>';
echo 'namn:<br />';
echo '<input type="text" name="name" value="'. $userinfo['name'] .'" />';
echo '<input type="submit" value="Spara" />';
echo '</form>';
}
så här ser koden ut just nu , när jag går på sidan så blir den bara tom .... det är så jobbigt med att sidan blir tomt istället för att visa php error :/
<?
if(isset($_POST['tester'])) {
echo "Värdet: " . $_POST['tester'];
}
?>
<form action="select.php" method="post">
<div>
<?
echo ' test?:<br />
<select name="tester">
<option value="1">test1</option>
<option value="2">test2</option>
</select>';
?>
</div>
<div>
<?
$option = $_POST['tester2'];
echo '
<select name="tester2">
<option value="1" '.($option == 1 ? ' selected="selected"' : '').'>test1</option>
<option value="2" '.($option == 2 ? ' selected="selected"' : '').'>test2</option>
</select>';
?></div>
<input type="submit">
</form>
använd iif() frågan.. är betydligt enklare, vilken datatyp är fältet i databasen? är det en sträng så måste du använda dig av " annars (i detta exemplet så är tester2 nummer, då kollar vi efter ett tal).
eller sätt integer till en sträng:
elseif (isset($_GET['account1']))
{
$option = strval($userinfo['testar']);
echo '<form action="page.php?action=UserSettings&account2" method="post">';
echo 'test?:<br />
<select name="testar">
<option value="1"'.($option == "1" ? ' selected="selected"' : '').'>test1</option>
<option value="2"'.($option == "2" ? ' selected="selected"' : '').'>test2</option>
</select>';
echo 'namn:<br />';
echo '<input type="text" name="name" value="'. $userinfo['name'] .'" />';
echo '<input type="submit" value="Spara" />';
echo '</form>';
}
vagannMedlem sedan juli 2011171 inlägg ja , databas fältet är en sträng , för jag hade tänkte ha ord ... använde nummer bara för testa testa metoden... testade med att ha
$option = $userinfo['testar'];
echo' test?:<br />
<select name="testar">
<option value="1" '.($option == 1 ? ' selected="selected"' : '').'>test1</option>
<option value="2" '.($option == 2 ? ' selected="selected"' : '').'>test2</option>
</select>';
nu syns sidan och jag har möjlighet att ändra värdet i databasen , och sedan visa det ...
problemet är att det inte visar den valde alternativen....
när uppdatera du värdet och när hämta du $userinfo? uppdatera du innan du hämta $userinfo så bör den ju hämta den nya datan, annars inte vad säger din källkod, vilken bli selected när du visa vad php-koden generera?
(ändrade koden ovan för att konvertera nummer till strängar)
vagannMedlem sedan juli 2011171 inlägg där så , när det gäller att uppdatera databasen och sedan visa värdet så funkar den som den borde ... men problemet är bara att den inte selekterar(selected="selected") den valda alternativen....
php-koden generera denna html kod
<select name="testar">
<option value="1" >test1</option>
<option value="2" >test2</option>
</select>
se till att det är rätt datatyp när du kolla efter den, en 1 i nummer är inte samma sak som en "1" i en sträng (databas typ)
vagannMedlem sedan juli 2011171 inlägg datatypen i databasen är varchar(100)...
för noggrannhetsskull testade jag med bokstäver istället för nummer
$option = strval($userinfo['testar']);
echo' test?:<br />
<select name="testar">
<option value="test1"'.($option == "test1" ? ' selected="selected"' : '').'>test1</option>
<option value="test2"'.($option == "test2" ? ' selected="selected"' : '').'>test2</option>
</select>';
genererar fortfarande samma html kod