[PHP]Arraynummer wordt weergegeven in database ipv arraynaam

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu een scriptje geschreven met dropdown menu's. Alles werkt goed behalve dat in de database geen naam (Januari, Februari, etc) komt te staan maar het arraynummer('0', '1', etc). Het wordt dus nog niet goed omgezet.
Dit is mijn script: (sorry voor de ruimte die het in beslag neemt :) )
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<? 
$hostname = 'eric';
$database = 'test2';
$username = 'root';
mysql_select_db($database);

$dagen = array(01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);
$maanden = array('Januari','Februari','Maart','April','Mei','Juni','Juli',
'Augustus','September','Oktober','November','December');

if (!empty($_POST)){   
    $tijd = $_POST['jaar'] . "-" .$_POST['maand'] . "-" . $_POST['dag'];   
    $query="INSERT INTO test (id,datum) VALUES ('','$tijd')";   
    mysql_query($query) or die (mysql_error()); 

} else {

echo "<FORM NAME=formulier METHOD=post ACTION=$_SERVER[PHP_SELF]>"; 
echo "Jaar:"; 
echo "<input name=jaar type=text value=2003><br>"; 
echo "Maand:"; 
echo "<select name=maand>";
foreach ($maanden AS $maand => $value2)
{
$select=($maand==$HTTP_POST_VARS['maand']) ? "selected" :""; 
echo "<option value='.$maand.' '.$select.'>$value2</option>"; 
} 
echo "</select><br>";
echo "dag:"; 
echo "<select name=dag>";
foreach ($dagen AS $dag => $value)
{
$select2=($dag==$HTTP_POST_VARS['dag']) ? "selected" :""; 
echo "<option value='.$dag.'>$value</option>"; 
}
echo "</select><br>";
echo "<input type=submit value=Plaats name=Submit>";
echo "<input type=reset value=Reset name=Reset>"; 
echo "</FORM>"; 
}
?>

[ Voor 105% gewijzigd door Verwijderd op 25-11-2003 11:54 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Ik zie ook nergens in je script waar je de maand nummers omzet in maandnamen. De value van de select is namelijk gewoon het nummetje (en dan waarschijnlijk ook nog 1 te laag!). Kijk anders eens in de source van de gegenereerde html pagina, dan zie je waarschijnlijk ook waarom $_POST['maand'] een getal oplevert ipv een maandnaam.

[ Voor 2% gewijzigd door Janoz op 25-11-2003 12:19 . Reden: Even een stukje aangedikt waar blijkbaar even overheen gelezen was ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Op het formulier staan wel alle maandnamen en dagnummers onder elkaar in het dropdownmenu. Het enige probleem is het omzetten naar de database.

En dat het nummer 1 te laag is ja idd dat klopt maar het is voorlopig alleen maar een test.

Ik heb in de source gekeken van een HTML pagina, en het is niet duidelijk. Maar als je de oplossing hebt hoor ik het graag, dat scheelt weer een hoop omslachtig zoeken, en lost het voor mij gelijk een hoop problemen in 1 keer op.

[ Voor 58% gewijzigd door Verwijderd op 25-11-2003 12:25 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Kijk dan nogmaals eens goed naar de gegenereerde select code. En dan vooral wat er bij de value van de option tag staat.

Verder vraag ik me af waarom je uberhaupt maandnamen in je db zou willen hebben. In principe is het juist veel netter om dit pas bij het afdrukken om te zetten. Stel dat je nu je applicatie engels wil maken, of multilinguaal? Of wat als de maandnaam toch zonder hoofdletter moet?

[ Voor 55% gewijzigd door Janoz op 25-11-2003 12:34 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom je het zo wil doen maakt me niet uit.
In het kort:

code:
1
2
3
4
5
6
7
8
echo "Maand:"; 
echo "<select name=maand>"; 
foreach ($maanden AS $maand => $value2) 
{ 
$select=($maand==$HTTP_POST_VARS['maand']) ? "selected" :""; 
echo "<option value='.$maand.' '.$select.'>$value2</option>"; 
} 
echo "</select><br>";


In je foreach zet je $maand als key (je arraynummer) en $value2 als waarde. Tis dus niet vreemd dat je key wordt ingevuld in je select.
2e fout, het gebruik van je enkele quotes in de echo statement. Verander deze in dubbele quotes.
Die enkel quotes worden door php ongeveer gezien als \"

En bekijk de source eens (in je browser) van het resultaat van jouw code. Je zou dan moeten zien dat hier niet veel van klopt.

Nog een kleine opmerking (ook voor andere beginners). Als je PHP goed wil leren en je vindt het al "omslachtig zoeken" bij zo een klein en simpel probleempje dan wens ik je veel succes..... Je moet er op zijn mins een beetje moeite voor doen om iets te leren.
Oplossingen vragen voor problemen is altijd goed, maar meteen gaan vragen zonder zelf eerst goed te hebben gekeken/gezocht naar de oplossing??..... dat zie ik hier helaas te vaak :'(

[ Voor 66% gewijzigd door Verwijderd op 26-11-2003 14:32 . Reden: toevoeging opmerking ]