Tha_Zaynt Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 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
LoS Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 (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 16. desember 2004 av LoS Lenke til kommentar
Tha_Zaynt Skrevet 16. desember 2004 Forfatter Del Skrevet 16. desember 2004 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? Lenke til kommentar
LoS Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 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
Tha_Zaynt Skrevet 16. desember 2004 Forfatter Del Skrevet 16. desember 2004 (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 16. desember 2004 av Tha_Zaynt Lenke til kommentar
LoS Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 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
Tha_Zaynt Skrevet 16. desember 2004 Forfatter Del Skrevet 16. desember 2004 ja, selvfølgelig bli det slik 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
LoS Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 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 Lenke til kommentar
Tha_Zaynt Skrevet 16. desember 2004 Forfatter Del Skrevet 16. desember 2004 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
LoS Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 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
Tha_Zaynt Skrevet 16. desember 2004 Forfatter Del Skrevet 16. desember 2004 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: Lenke til kommentar
LoS Skrevet 16. desember 2004 Del Skrevet 16. desember 2004 Ah, hehe. Blir litt feil tydeligvis med arrayet sånn sett. Prøv med " . $mon[round($month)] . " Lenke til kommentar
Tha_Zaynt Skrevet 16. desember 2004 Forfatter Del Skrevet 16. desember 2004 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! Lenke til kommentar
Tha_Zaynt Skrevet 28. desember 2004 Forfatter Del Skrevet 28. desember 2004 (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! Endret 28. desember 2004 av Tha_Zaynt Lenke til kommentar
LoS Skrevet 28. desember 2004 Del Skrevet 28. desember 2004 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 Også fjerne round, -1, osv. Lenke til kommentar
Torbjørn Skrevet 28. desember 2004 Del Skrevet 28. desember 2004 (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 28. desember 2004 av Torbjørn Lenke til kommentar
Tha_Zaynt Skrevet 28. desember 2004 Forfatter Del Skrevet 28. desember 2004 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: Lenke til kommentar
Torbjørn Skrevet 28. desember 2004 Del Skrevet 28. desember 2004 jeg skrev vel at "=> 1" ikke skulle vært der. ikke hele arraydefinisjonen. Lenke til kommentar
Tha_Zaynt Skrevet 29. desember 2004 Forfatter Del Skrevet 29. desember 2004 mener du at det skal være slik? $mon = array( "Januar" "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "Oktober", "November", "September", "Desember"); Lenke til kommentar
Torbjørn Skrevet 29. desember 2004 Del Skrevet 29. desember 2004 ja.. bare pass på å få med nok kommaer. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå