Newsgroup: it.comp.www.php
Titolo: array multidimensionale.

poniamo il caso che io abbia un array multidimensionale, impostato in questo
modo:
$_SESSION[anagrafe][]=array($_GET[nome],$_GET[cognome],$_GET[citta]);
e fin qua, ci siamo...
ora, come faccio ad cambiare il valore di una voce di un array di
quell'array?
mi spiego meglio
questo array sarà composto, per esempio, da 3 elementi, ognuno dei quali da
3 elementi.
per esempio:
elemento 1: marco,rossi,milano
elemento 2:bruno,verdi,roma
elemento 3:paolo,bianchi,catania
come faccio a cambiare la città dell'elemento 3?
se ad esempio io voglio assegnare al campo "citta" dell'elemento 3 il valore
"lecce", come faccio?
io ho usato questa sintassi:
$_SESSION[anagrafe]['2'] = $_GET[nuovacitta];
il problema è che non funziona, nel senso che la città rimane sempre la
stessa....
penso di stare cannando la sintassi, ma non so qual è la sintassi
corretta.........


Prova con
$_SESSION['anagrafe'][2] = $_GET['nuovacitta'];
Non essendo indicizzato con stringhe puoi accedere agli elementi 
solamente tramite l'indice numerico.
2!=='2' (non sono strettamente uguali)
Altrimenti crei gli array in modo simile a questo:
$_SESSION['anagrafe'][]=array('nome'=>$_GET['nome'],'cognome'=>$_GET['cognome'],'citta'=>$_GET['citta']);
e poi ti riferirai in questo modo:
$_SESSION['anagrafe']['citta'] = $_GET['nuovacitta'];
Ciao
-- 
Spoken: How much is that gorilla in the window?
Take our advice, At any price, A gorilla like Magilla is mighty nice.
Gorilla, Magilla Gorilla for sale


$_SESSION['anagrafe'][]=array('nome'=>$_GET['nome'],'cognome'=>$_GET['cognom
e'],'citta'=>$_GET['citta']);
non posso farlo perchč dovrei reiscrivere una marea di codice in altre
pagine....

>
prova a togliere gli apici (come l'hai utilizzata tu):
$_SESSION[anagrafe][2] = $_GET[nuovacitta];
.
prova anche a fare
print "<pre>";
print_r ($_SESSION);
print "</pre>";
e vedi come č organizzato l'array $_SESSION, nel caso posta il risultato.


 e vedi come è organizzato l'array $_SESSION, nel caso posta il risultato.
Array
(
    [anagrafe] => Array
        (
            [0] => Array
                (
                    [0] => marco
                    [1] => rossi
                    [2] => milano
                )
        )
)ora contiene un solo elemento, ma il concetto ovviamente è lo
stesso........

 
$_SESSION[anagrafe][0][2] = $_GET[nuovacitta];


> $_SESSION[anagrafe][0][2] = $_GET[nuovacitta];
me la potresti spiegare?:)

 
Ma funziona o ci sono ancora probs?


> Ma funziona o ci sono ancora probs?
ci sono ancora problemi.
ecco il pezzo che non funziona:
for ( $i=0 ; $i<$k ; $i++ )
{
if ( $_SESSION[anagrafe][$i][0] == $_POST['nome'] )
{
$_SESSION[anagrafe][$i][2] == $_POST['citta'];
print("$_SESSION[anagrafe][$i][2]");     //print di controllo
il problema è che la città non viene aggiornata. e la print di controllo
stampa:
Array[0][2]

 print("$_SESSION[anagrafe][$i][2]");     //print di controllo
non servono gli apici


 == comparatore di uguaglianza
cacchio hai proprio ragione......
sono un pollo......
ora aspetta un secondo: il problema era quello, ma......
questo script riceve i dati da un form, un form in cui sono presenti più
persone, che hanno più campi.
ecco da qui la necessità di una struttura del genere.
ho quindi fatto questo script che riceve i dati dal form e aggiorna la
città.
il problema è il seguente: ho appena testato lo script così com'è. ora la
città viene aggiornata, ma solo dell'ultima persona in fondo al form.
se cambio la città delle persone prima, questa non viene aggiornata.....
nella form da cui arrivano i dati faccio un foreach per rappresentarli
dentro delle caselle, poi quando si clicca su submit tutto viene spedito in
post a questo script.
secondo me non vengono aggiornati perchè la variabile "$_POST[citta]" non è
dinamica, e quindi assume il valore dell'ultimo elemento del form.........
cosa ne dici?

 
Bisognerebbe vedere l'html del form.
Quale 'name' hanno gli <input> del form?
Anche qui, potrebbe esserti utile fare una stampa dell'array $_POST
print "<pre>";
print_r ($_POST);
print "</pre>";
Il risultato è quello che ti aspetti?
A naso io rispondo di no, poiché per funzionare come dici tu (se ho ben 
inteso) devi avere un array
$_POST['citta'][] anziché un singolo valore (questo il motivo per cui ti 
funziona solo per l'ultima persona)
Nel caso i tuoi 'name' nella pagina del form devono essere di questo tipo:
<input type="text" name="citta[]" .... />
e poi agisci di conseguenza.
Ciao


il problema è che nel tag name del form non posso mica ficcarci una
variabile......

 
non ti seguo. Di che variabile parli?
Ho capito bene: tu hai piů di una <input> con lo stesso 'name'?
Č visibile da qualche parte questa pagina?
Puoi postare un pezzo di codice?
