Newsgroup: it.comp.www.php
Titolo: Array e select

Salve,
ho realizzato la seguente funzione che mi consente di creare le voci di una 
select con i nomi dei mesi, effettuando un piccolo controllo per vedere se č 
stato selezionata una voce.
function listBirthMonth($birthmonth){
 $months[0] = "-";
 $months[1] = "January";
 $months[2] = "February";
 $months[3] = "March";
 $months[4] = "April";
 $months[5] = "May";
 $months[6] = "June";
 $months[7] = "July";
 $months[8] = "August";
 $months[9] = "September";
 $months[10] = "October";
 $months[11] = "November";
 $months[12] = "December";
 foreach ($months as $month) {
  if ($birthmonth == $month){
     echo "<option value='$month' selected>$month</option>";
  } else {
   echo "<option value='$month'>$month</option>";
  }
 }
}
Vorrei fare in modo che come value dell'option comparisse l'indice 
dell'array. Purtroppo non so come fare ciň.
Grazie & Saluti. 

 Grazie & Saluti.
che ci fai qui di ('sabato notte' OR 'domenica mattina')?
<?php
function listBirthMonth($birthmonth){
$months = array("-", 
"January", "February", "March", "April", 
"May", "June", "July", "August", 
"September", "October", "November", "December");
while(list($index, $month) = each($months)){
  if(strtolower(trim($birthmonth)) == strtolower($month)){
    echo "<option value='$index' selected>$month</option>";
  }
  else{
    echo "<option value='$index'>$month</option>";
  }
}
}
echo "<select name='test'>";
listBirthMonth('September');
echo "</select>";
?>
-- 
www.iuz-lab.info

 dell'array. Purtroppo non so come fare ciò.
Potresti innanzitutto scrivere l'array diversamente, dichiarandolo e
definendolo contemporaneamente.
E poi per l'indice basta fare una scansione con il for.
Ti riscrivo il tuo codice
--------------------------------------------------------
 function listBirthMonth($birthmonth)
 {
  $months=array(
   "January",
   "February",
   "March",
   "April",
   "May",
   "June",
   "July",
   "August",
   "September",
   "October",
   "November",
   "December"
  );
 for ($i=0;$i<sizeof($months);$i++)
 {
  $month=$months[$i];
  if ($birthmonth == $month)
  {
    echo "<option value='$i' selected>$month</option>";
  }
  else 
  {
   echo "<option value='$i'>$month</option>";
  }
 }
}
---------------------------------------------------------
Comunque, invece di fare tutto questo casino, potresti utilizzare la
funzione date e ricavare il mese corrente.
Come ? Fai semplicemente un controllo if:
-------------------------------------
  if ($birthmonth == date("m"))
  {
    echo "<option value='".date("m")."' selected>$month</option>";
  }
  else 
  {
   echo "<option value='".date("m")."'>$month</option>";
  }
----------------------------------------
Questo si può fare se $birthmount è espresso in numeri (1..12)
Comunque date può restituire anche il mese in format Stringa ("Jan".."Dec").
E' in forma contratta, per cui basterebbe soltanto un strpos..
---------------------------------------------------------------------
if (strpos(strtolower($birthmonth),strtolower(date("M")))!==false)
  {
    echo "<option value='".date("m"),"' selected>$month</option>";
  }
  else 
  {
   echo "<option value='".date("m")."'>$month</option>";
  }
--------------------------------------------------------------------
 
Ho usato anche un strlower per assicurarmi che non ci siano problemi con le
maiuscole e minuscole: ho messo tutto minuscolo (potevo anche mettere tutto
maiuscolo, era uguale).
Questi due esempi, ovviamente, non hanno bisogno nè di cicli, nè di array.
Ciao,
 Fabrizio
-- 
http://www.negusweb.it
 --- Sito in allestimento

 echo "</select>";
Ciao,
pure di domenica pomeriggio mi tocca lavorare :D. Appena provo codice il 
codice che mi hai fornito ti saprò dire se funge o meno. Nel frattempo ti 
ringrazio.
Saluti. 

Negus wrote

Ciao,
ti ringrazio per il codice postato però, a causa di una mia troppo sintetica 
esposizione del problema, non credo che tu abbia compreso correttamente il 
mio problema. Il controllo non deve essere fatto sul mese corrente ma su 
mese selezionato in precedenza. Ti faccio un esempio pratico. In un form mi 
viene richiesto username e password con cui registrarmi e data di nascita. 
La data di nascita la ricavo con tre select (giorno, mese, anno). Compilo il 
mio bel form ma, una volta inviati i dati, mi viene restituito un errore 
relativo allo username già utilizzato da un'altro utente. A questo punto il 
form verrà ricaricato (non gestisco gli errori con javascript) ed i dati 
inseriti prima compariranno nei textbox, così come le select avranno 
preselezionato le voci selezionate precedentemente.
Saluti. 

 corrente ma su mese selezionato in precedenza. Ti faccio un esempio
Beh, uno dei due mesi dovrebbe essere proprio $birthmonth, no ?
La data di riferimento non è il mese corrente ?
-- 
