Gå til innhold

sette info fra mysql som value i form


Anbefalte innlegg

Skrevet

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å?

Videoannonse
Annonse
Skrevet (endret)

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
Skrevet

jess, det var akkurat slik jeg tenkte på. Men jeg har et spm til; hvordan separerer jeg datoformatet yyyy-dd-mm til tre forskjellige variabler, henholdsvis $dag $maned aar?

Jeg må vel bruke explode....elller?

Skrevet

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].

Skrevet (endret)

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
Skrevet

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 */
?>

Skrevet

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?

Skrevet

Da kan du lage en array ja :)

$mon = array( 1 => "Januar", "Februar,.....);

og bruke

$birthday .= "<option value=\"$month\" selected=\"selected\">$mon[$month]</option>\n";

og, på den andre selvsagt :)

Skrevet

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);

Skrevet

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.

Skrevet

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

Skrevet

Den virker forsåvidt, men den viste en måned "for mye" slik at når det stod måned 10 i databsen ble måneden November. Derfor endret jeg koden litt..

 

 

" . $mon[round($month-1)] . "

 

Det ser ut til at det fungerer nå. Takker så meget for hjelpen!

  • 2 uker senere...
Skrevet (endret)

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
Skrevet

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.

Skrevet (endret)

"1=>" i koden:

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

 

...skulle vel aldri ha vært der??

Endret av Torbjørn
Skrevet

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

Skrevet

mener du at det skal være slik?

 

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

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...