Gå til innhold

sette info fra mysql som value i form


Anbefalte innlegg

Jeg har et form som jeg skal bruke til å oppdatere info i en database med. Jeg har forstått det slik at den enkleste metoden å gkøre dette på er å hente info fra databasen og sette den som value i formen. Men jeg har et problem; Jeg har en select-meny som ser slik ut:

 

<select name='day'><option value='0' selected='selected'>--</option><option value='01'>1</option><option value='02'>2</option><option value='03'>3</option><option value='04'>4</option><option value='05'>5</option><option value='06'>6</option><option value='07'>7</option><option value='08'>8</option><option value='09'>9</option><option value='10'>10</option><option value='11'>11</option><option value='12'>12</option><option value='13'>13</option><option value='14'>14</option><option value='15'>15</option><option value='16'>16</option><option value='17'>17</option><option value='18'>18</option><option value='19'>19</option><option value='20'>20</option><option value='21'>21</option><option value='22'>22</option><option value='23'>23</option><option value='24'>24</option><option value='25'>25</option><option value='26'>26</option><option value='27'>27</option><option value='28'>28</option><option value='29'>29</option><option value='30'>30</option><option value='31'>31</option></select> 
<select name='month'><option value='0' selected='selected' >--</option><option value='01'>januar</option><option value='02'>februar</option><option value='03'>mars</option><option value='04'>april</option><option value='05'>may</option><option value='06'>juni</option><option value='07'>juli</option><option value='08'>august</option><option value='09'>september</option><option value='10'>oktober</option><option value='11'>november</option><option value='12'>desember</option></select> 
<select name='year'><option value='0' selected='selected'>--</option><option value='2003'>2003</option><option value='2002'>2002</option><option value='2001'>2001</option><option value='2000'>2000</option><option value='1999'>1999</option><option value='1998'>1998</option><option value='1997'>1997</option><option value='1996'>1996</option><option value='1995'>1995</option><option value='1994'>1994</option><option value='1993'>1993</option><option value='1992'>1992</option><option value='1991'>1991</option><option value='1990'>1990</option><option value='1989'>1989</option><option value='1988'>1988</option><option value='1987'>1987</option><option value='1986'>1986</option><option value='1985'>1985</option><option value='1984'>1984</option><option value='1983'>1983</option><option value='1982'>1982</option><option value='1981'>1981</option><option value='1980'>1980</option></select>

 

Jeg kan jo ikke sette selected="' .$infofradb. '" på alle sammen...er det en annen måte å gjøre dette på?

Lenke til kommentar
Videoannonse
Annonse

Har en liten funksjon jeg har laget til å finne ut hvilken bursdag som er valgt i ett select form du kan få se på :)

function birthday($day2="01", $month2="01", $year2="1950")
{
 $birthday = '<select name="day">';
 	for($day = 1; $day <= 31; $day++)
 	{
 	if($day < 10)
 	{
   $day = "0" . $day;
 	}
   if($day == $day2)
   {
   	$birthday .= "<option value=\"$day\" selected=\"selected\">$day</option>\n";
   }
   else
   {
   	$birthday .= "<option value=\"$day\">$day</option>\n";
   }
 	}
 $birthday .= '</select>';
 $birthday .= '<select name="month">';
 	for($month = 1; $month <= 12; $month++)
 	{
 	if($month < 10)
 	{
   $month = "0" . $month;
 	}
   if($month == $month2)
   {
   	$birthday .= "<option value=\"$month\" selected=\"selected\">$month</option>\n";
   }
   else
   {
   	$birthday .= "<option value=\"$month\">$month</option>\n";
   }
 	}
 $birthday .= '</select>';
 $birthday .= '<select name="year">';
 	for($year = 1950; $year <= date("Y"); $year++)
 	{
   if($year == $year2)
   {
   	$birthday .= "<option value=\"$year\" selected=\"selected\">$year</option>\n";
   }
   else
   {
   	$birthday .= "<option value=\"$year\">$year</option>\n";
   }
 	}
 $birthday .= '</select>';
 return $birthday;

}

Se om du finner noe ut av det :)

 

edit: hvis jeg forstod riktig, that is.

Endret av LoS
Lenke til kommentar

Antar det er ut av mysqlspørringen du mener. Hvis du bruke kolonneformatet "date", så kan du bruke

SELECT dayofmonth(dato) AS day, month(dato) AS month, year(dato) AS year FROM table

Hvis jeg ikke husker feil. Så blir variablene laget i henholdsvis $row[day], $row[month], og $row[year].

Lenke til kommentar

Fant ut at jeg kan bruke split(), men jeg har nå et nytt problem:

 

$fodselsdato = $row['alder'];

list($aar, $maned, $dag) = split('[-]', $fodselsdato);


function birthday($day2="$dag", $month2="$maned", $year2="$aar")

 

Når jeg bruker denne kode får jeg denne feilmeldingen

 

 

Parse error: parse error, unexpected '\"' in /hsphere/local/home/sjurvaag/nisselink.sjurvaage.com/bursdag.php on line 25

 

EDIT: Når jeg skriver ut $dag $maned $aar få jeg resulatet 12 10 87, som er riktig, men nå jeg setter variablene inn i funksjoenen fungerer d altså ikke...

Endret av Tha_Zaynt
Lenke til kommentar

Lite eksempel her, veit ikke om du har jobbet så mye med funksjoner før.

<?php
function birthday()
{
// scriptet mitt her //
}
//script som henter ut mysqlinfo her, les spørringen min over //
echo birthday($row[day],$row[month],$row[year]); /* tar i bruk funksjonen med de variablene som er blitt satt der */
?>

Lenke til kommentar

ja, selvfølgelig bli det slik :blush: Takker for hjelpen! Har et lite spm til btw;

 

På formen vises navnet på måneden i select menyen...hvordan får jeg til det i denne funksjonen?f.eks slik at det står oktober isteden for 10 i select menyen...valuen skal seff være 10..Må vel lage en array da eller?

Lenke til kommentar

slik ser funksjonen ut nå, men det fungerer ikke helt...hva har jeg glemt?;

 

$mon = array( 1 =>     
   "Januar", 
   "Februar", 
   "Mars", 
   "April", 
   "Mai", 
   "Juni", 
   "Juli", 
   "August", 
   "Oktober", 
   "November", 
   "September", 
   "Desember");

function birthday($day2="01", $month2="01", $year2="1950")
{
$birthday = '<select name="day">';
 for($day = 1; $day <= 31; $day++)
 {
 if($day < 10)
 {
  $day = "0" . $day;
 }
  if($day == $day2)
  {
   $birthday .= "<option value=\"$day\" selected=\"selected\">$day</option>\n";
  }
  else
  {
   $birthday .= "<option value=\"$day\">$day</option>\n";
  }
 }
$birthday .= '</select>';
$birthday .= '<select name="month">';
 for($month = 1; $month <= 12; $month++)
 {
 if($month < 10)
 {
  $month = "0" . $month;
 }
  if($month == $month2)
  {
   $birthday .= "<option value=\"$month\" selected=\"selected\">$mon[$month]</option>\n";
  }
  else
  {
   $birthday .= "<option value=\"$month\">$month</option>\n";
  }
 }
$birthday .= '</select>';
$birthday .= '<select name="year">';
 for($year = 1950; $year <= date("Y"); $year++)
 {
  if($year == $year2)
  {
   $birthday .= "<option value=\"$year\" selected=\"selected\">$year</option>\n";
  }
  else
  {
   $birthday .= "<option value=\"$year\">$year</option>\n";
  }
 }
$birthday .= '</select>';
return $birthday;
}
$bursdag = birthday($dag, $maned, $aar);

Lenke til kommentar

I første omgang kan du fikse denne:

    $birthday .= "<option value=\"$month\">$month</option>\n";

med $mon[] i.

For det andre;

enten flytt arrayet inn i funksjonen, med mindre du skal bruke den til noe annet i samme slengen.

Eller, så setter du en

global $mon;

i starten av funksjonen.

Lenke til kommentar

endret koden slik du sa, og nå ser koden slik ut;

 

 

 

function birthday($day2="01", $month2="01", $year2="1950")
{
$mon = array( 1 =>     
   "Januar", 
   "Februar", 
   "Mars", 
   "April", 
   "Mai", 
   "Juni", 
   "Juli", 
   "August", 
   "Oktober", 
   "November", 
   "September", 
   "Desember");

$birthday = '<select name="day">';
 for($day = 1; $day <= 31; $day++)
 {
 if($day < 10)
 {
  $day = "0" . $day;
 }
  if($day == $day2)
  {
   $birthday .= "<option value=\"$day\" selected=\"selected\">$day</option>\n";
  }
  else
  {
   $birthday .= "<option value=\"$day\">$day</option>\n";
  }
 }
$birthday .= '</select>';
$birthday .= '<select name="month">';
 for($month = 1; $month <= 12; $month++)
 {
 if($month < 10)
 {
  $month = "0" . $month;
 }
  if($month == $month2)
  {
   $birthday .= "<option value=\"$month\" selected=\"selected\">$mon[$month]</option>\n";
  }
  else
  {
   $birthday .= "<option value=\"$month\">$mon[$month]</option>\n";
  }
 }
$birthday .= '</select>';
$birthday .= '<select name="year">';
 for($year = 1950; $year <= date("Y"); $year++)
 {
  if($year == $year2)
  {
   $birthday .= "<option value=\"$year\" selected=\"selected\">$year</option>\n";
  }
  else
  {
   $birthday .= "<option value=\"$year\">$year</option>\n";
  }
 }
$birthday .= '</select>';
return $birthday;
}
$bursdag = birthday($dag, $maned, $aar);

 

men nå ser det slik ut:

post-30-1103238587_thumb.jpg

Lenke til kommentar
  • 2 uker senere...

hm..Det ser ut som det oppstår et problem når jeg bruker " . $mon[round($month-1)] . " likevel..

 

Nedenfor ser du problemet; Det blir et blank felt i toppen av menyen dvs. at brukeren kan velge en måned uten verdi noe som gjør at det blir helt feil lagret . Vet ikke helt hvordan jeg skal fåløst dette..noen forslag?

 

EDIT: glemte bildet!

post-30-1104263719_thumb.jpg

Endret av Tha_Zaynt
Lenke til kommentar

Tro om det kanskje funker hvis du lager ett array på denne måten isteden.

array( 01 => "Januar", 02 => "Februar")

osv, hvis det fungerer så kan du teste å bare sett ett 0-tall foran den første slik som på vanlig måte, noe jeg egentlig tviler på at funker :p

 

Også fjerne round, -1, osv.

Lenke til kommentar

denne koden:

 

function birthday($day2="01", $month2="01", $year2="1980")
{


$mon = array( 01 => "Januar", 02 => "Februar", 03 => "Mars", 04 => "April", 05 => "Mai", 06 => "Juni", 07 => "July", 08 => "August", 09 => "September", 10 => "Oktober", 11 => "November", 12 => "Desember");

$birthday = '<select name="day">';
 for($day = 1; $day <= 31; $day++)
 {
 if($day < 10)
 {
  $day = "0" . $day;
 }
  if($day == $day2)
  {
   $birthday .= "<option value=\"$day\" selected=\"selected\">$day</option>\n";
  }
  else
  {
   $birthday .= "<option value=\"$day\">$day</option>\n";
  }
 }
$birthday .= '</select>';
$birthday .= '<select name="month">';
 for($month = 1; $month <= 12; $month++)
 {
 if($month < 10)
 {
  $month = "0" . $month;
 }
  if($month == $month2)
  {
   $birthday .= "<option value=\"$month\" selected=\"selected\">" . $mon[$month] . "</option>\n";
  }
  else
  {
   $birthday .= "<option value=\"$month\">" . $mon[$month] . "</option>\n";
  }
 }
$birthday .= '</select>';
$birthday .= '<select name="year">';
 for($year = 1980; $year <= date("Y"); $year++)
 {
  if($year == $year2)
  {
   $birthday .= "<option value=\"$year\" selected=\"selected\">$year</option>\n";
  }
  else
  {
   $birthday .= "<option value=\"$year\">$year</option>\n";
  }

 }
$birthday .= '</select>';
return $birthday;
}

 

 

ga dette resultatet:

post-30-1104264504_thumb.jpg

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...