Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494

    Ciclo foreach su delle select multiple

    Salve a tutti,
    ho delle select multiple con un id nel nome della select (alcuni sono uguali):

    codice HTML:
    <select name="n_camere[1]>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    <select name="n_camere[1]>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    
    <select name="n_camere[2]>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    <select name="n_camere[2]>
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    </select>
    Il form viene mandato in una pagina che ne preleva i dati:

    Codice PHP:
    $n_camere $_POST['n_camere'];
    foreach(
    $nome as $key=>$value){
                echo 
    $value' id: '.$key.'<br>';

    se seleziono solo i primi due select (con id 1) 2 e 3 il risultato sarà questo:

    1 id: 1
    0 id: 2

    Invece di:

    5 id: 1
    0 id: 2

    Non fa la somma dei select.

    Qualche idea?

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Non fa la somma dei select.
    Perché, dovrebbe fare la somma?
    Se, e dico se, ho ben capito cosa vorresti ottenere, dovresti fare qualcosa tipo:

    codice:
    foreach ($_POST['n_camere'] as $id_camere => $val_camere) {
        echo sprintf("Camera %d ha la somma %d\n", $id_camere, array_sum($val_camere));
    }
    Nota bene che la seconda select con lo stesso nome verrà sovrascritta con quella sopra. Devi quindi cambiare n_camere[N] in n_camere[N][] ​affinché tutti i dati vengano inviati.

  3. #3
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    quelle select vengono stampate dinamicamente tramite una query, come faccio a mettere n_camere[n][]?
    (nell'esempio ho due select, ma possono essere anche 10 o 15)

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    (nell'esempio ho due select, ma possono essere anche 10 o 15)
    Ecco perchè esistono i vettori.
    come faccio a mettere n_camere[n][]?
    Qual'è la difficoltà?

  5. #5
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Scusa avevo letto di inserire le parentesi quadre solo nelle altre select (distrazione).

    Comunque funziona!
    Grazie.

  6. #6
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Kurt scusa ancora, in questo modo mi stampa anche quelli che non seleziono, (li stampa tutti "Camera 2 ha la somma 0"), se non volessi quelli con somma 0?

  7. #7
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    se non volessi quelli con somma 0?
    Hai provato a scrivere qualcosa tu? Se non funziona scrivi qui, e ti aiuteremo, ma almeno prova.
    http://php.net/manual/en/control-structures.if.php

  8. #8
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    Si ho provato cosi:

    Codice PHP:
    foreach($_POST['n_camere'] as $id_camere=>$val_camere){
     if (
    $val_camere 1) {    continue;}
        echo  
    $id_camere'= 'array_sum($val_camere).'<br>';

    Non funziona

  9. #9
    Quote Originariamente inviata da lukezz Visualizza il messaggio
    Si ho provato cosi:

    Codice PHP:
    foreach($_POST['n_camere'] as $id_camere=>$val_camere){
     if (
    $val_camere 1) {    continue;}
        echo  
    $id_camere'= 'array_sum($val_camere).'<br>';

    Non funziona
    Hai una minima idea di cosa contenga $eval_camere?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Utente di HTML.it L'avatar di lukezz
    Registrato dal
    Feb 2010
    Messaggi
    494
    il valore delle select

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.