• User

    Ho provato ad utilizzare il comando array_push ma non ho avuto il risultato voluto (forse lo ho scritto male..), e con l'occasione provo a spiegare nuovamente il problema con un altro esempio stavolta più chiaro 🙂

    Immaginiamo di avere la tabella abitanti con un record simile:
    nome = MARIO
    cognome= ROSSI
    figli = 4
    anni = 41

    Vado ad aprire la tabella in questo modo ed inserisco i dati nell'array:

    [php]$sql = "SELECT * FROM abitanti";
    $query = @mysql_query($sql);

    while ($risultato = @mysql_fetch_array($query)) {
    $result_featured[] = $risultato;
    }[/php]Ora se volessi interrogare l'array basterebbe (AD ESEMPIO) scrivere una cosa del genere:

    [php]ECHO $risultato['nome'];[/php]otterrei come risultato **MARIO **e **FIN QUI TUTTO CHIARO!
    **
    Il mio obiettivo e' di INSERIRE NELL'ARRAY un altro elemento. Ad esempio con un IF vado a fare un controllo e scrivo:

    [php]IF ($risultato['anni'] < 19 {
    $stato_giuridico = "MINORENNE";
    } else {
    $stato_giuridico = "MAGGIORENNE";
    } [/php]Pertanto, anzichè utilizzare la variabile ($stato_giuridico) devo inserire questo valore in UN ALTRO ELEMENTO DELL'ARRAY affinchè nello stesso modo possa in futuro utilizzarlo cosi:

    [php]ECHO $risultato['stato_giuridico'];[/php] ed otterrei come risultato: MAGGIORENNE.

    Come risolvere quindi il problema? GRACIAS


  • Bannato User

    Sua magnificenza maesta criccroc Mi permetta di offrirle l'attivita dei miei polpastrelli in segno di rispetto e lealta`:

    [php]
    $persone = array();
    $sql = "SELECT * FROM abitanti";
    $query = @mysql_query($sql);

    while ($risultato = @mysql_fetch_array($query)) {
    extract( $risultato, EXTR_PREFIX_ALL, 'r' );
    array_push( $persone, array(
    'nome' => $r_nome,
    'cognome' => $r_cognome,
    'figli' => $r_figli,
    'anni' => $r_anni
    ));
    }
    [/php](Sua maesta mi perdoni perche non avevo voglia di scrivere/copiare/incollare $risultato[''] come array 4 volte e ho messo extract, ma va bene in entrambi i modi)

    Le porgo i miei omaggi

    ( 😄 )

    @criccroc said:

    Ho provato ad utilizzare il comando array_push ma non ho avuto il risultato voluto (forse lo ho scritto male..), e con l'occasione provo a spiegare nuovamente il problema con un altro esempio stavolta più chiaro 🙂

    Immaginiamo di avere la tabella abitanti con un record simile:
    nome = MARIO
    cognome= ROSSI
    figli = 4
    anni = 41

    Vado ad aprire la tabella in questo modo ed inserisco i dati nell'array:

    [php]$sql = "SELECT * FROM abitanti";
    $query = @mysql_query($sql);

    while ($risultato = @mysql_fetch_array($query)) {
    $result_featured[] = $risultato;
    }[/php]Ora se volessi interrogare l'array basterebbe (AD ESEMPIO) scrivere una cosa del genere:

    [php]ECHO $risultato['nome'];[/php]otterrei come risultato **MARIO **e **FIN QUI TUTTO CHIARO!
    **
    Il mio obiettivo e' di INSERIRE NELL'ARRAY un altro elemento. Ad esempio con un IF vado a fare un controllo e scrivo:

    [php]IF ($risultato['anni'] < 19 {
    $stato_giuridico = "MINORENNE";
    } else {
    $stato_giuridico = "MAGGIORENNE";
    } [/php]Pertanto, anzichè utilizzare la variabile ($stato_giuridico) devo inserire questo valore in UN ALTRO ELEMENTO DELL'ARRAY affinchè nello stesso modo possa in futuro utilizzarlo cosi:

    [php]ECHO $result1['stato_giuridico'];[/php] ed otterrei come risultato: MAGGIORENNE.

    Come risolvere quindi il problema? GRACIAS


  • ModSenior

    @C-3PO said:

    La invito quindi ad utilizzare termini più rispettosi. Non sarà ripetuto!

    @kyxz said:

    Sua magnificenza maesta criccroc Mi permetta di offrirle l'attivita dei miei polpastrelli in segno di rispetto e lealta`:

    (Sua maesta mi perdoni perche non avevo voglia di scrivere/copiare/incollare $risultato[''] come array 4 volte e ho messo extract, ma va bene in entrambi i modi)

    Le porgo i miei omaggi

    :ciaosai:


  • User

    [...]

    Comunque: qualcun altro ha altre soluzioni oltre questa? Grazie.


  • Bannato User Newbie

    [php]
    $persone = array();
    $sql = "SELECT * FROM abitanti";
    $query = @mysql_query($sql);

    while ($risultato = @mysql_fetch_array($query)) {
    extract( $risultato, EXTR_PREFIX_ALL, 'r' );
    array_push( $persone, array(
    'nome' => $r_nome,
    'cognome' => $r_cognome,
    'figli' => $r_figli,
    'anni' => $r_anni,
    'stato_giuridico' => (($r_anni < 18) ? 'minorenne' : 'maggiorenne')
    ));
    }

    //accedi con

    $persone[indice_intero]['stato_giuridico'];
    [/php]


  • ModSenior

    Salve kkyxz,
    anche questo account viene bannato, in quanto registrato mediante e.mail temporanea. I dati di registrazione devono essere validi!
    Qualora intendesse iscriversi nuovamente in questo forum la invito pertanto a mostrare maggior rispetto verso la struttura che la ospita.


  • User

    Dopo una serie di prove accanite qua e la, a quanto pare ho trovato la risposta al problema, anche se sono convinto che e' da PERFEZIONARE:

    Faccio un riassunto:
    [php]
    $sql = "SELECT * FROM abitanti";
    $query = @mysql_query($sql);

    while ($risultato = @mysql_fetch_array($query)) {
    $nome = $risultato['nome'];
    $cognome = $risultato['cognome'];
    $figli = $risultato['figli'];
    ...... [/php]

    a questo punto nella variabile $risultato ho l'array e posso interrogarlo come visto in questo esempio.

    Per aggiungere un nuovo array che non esiste nel database ecco come ho proceduto:

    [php]$nuovo_array = array('castani', 'capelli' => 'castani');
    $risultato = array_merge($risultato, $nuovo_array); // Inserisce un nuovo elemento nell'array.[/php]

    Infatti, utilizzando questo comando:
    [php]print_r($risultato);[/php]sarà possibile visualizzare tutti gli elementi inseriti nell'array (E NON IN UNA VARIABILE!!!).

    In realtà quello che mi serviva era un altra cosa.. ma il concetto è uguale:

    [php]
    // da inserire nel ciclo WHILE
    IF ($risultato['anni'] < 19 {
    $stato_giuridico = "MINORENNE";
    } else {
    $stato_giuridico = "MAGGIORENNE";
    }

    $nuovo_array = array('$stato_giuridico', 'stato_giuridico' => '$stato_giuridico');
    $risultato = array_merge($risultato, $nuovo_array); // Inserisce un nuovo elemento nell'array.[/php]

    Anche se EFFETTIVAMENTE questo è solo un esempio di ciò che volevo fare.
    A questo punto, con un altro ciclo WHILE che interroga L'ARRAY, posso visualizzare il campo STATO GIURIDICO come se fosse inserito nella tabella utenti.

    Mi manca solo di capire se ho utilizzato correttamente il comando (CHE COMUNQUE FUNZIONA!!) e con l'occasione pongo un altra domanda:
    se ARRAY_MERGE(....) AGGIUNGE un nuovo array, quale e' il comando che SOSTITUISCE un elemento dell'array (esempio: $result['cognome']) ? 😄

    Spero comunque di essere stato di aiuto a qualcuno che ha incontrato lo stesso mio problema.
    Grazie comunque per l'attenzione.


  • User Attivo

    Volevo farti notare che nel nostro ordinamento giuridico
    [PHP]
    IF ($risultato['anni'] < 19 {
    $stato_giuridico = "MINORENNE";
    [/PHP]
    Non è corretto in quanto prendendo l'intero del numero precedente a 19
    è 18,quindi,per la legge sei maggiorenne;era giusto per non cadere in errore.
    Per quanto riguarda cambiare il nome del campo in un'array,essendo
    [PHP]
    mysql_fetch_array
    [/PHP]
    un'riferimento ai dati associandoli sia con un array , sia con un valore associativo alle colonne,non può essere cambiato in quanto è parte di
    un campo di tabella.
    Per visualizzare,aggiungere ulteriori chiavi/valori multipli c'è un'altra strada
    che in un colpo solo può fare multiarray,purtroppo,in questo momento scrivo dalla spagna e non ho con me il manuale,quando rientro se non hai risolto ti indico come proseguire.
    :fumato:


  • User

    @vnt54 said:

    Volevo farti notare che nel nostro ordinamento giuridico
    [php]
    IF ($risultato['anni'] < 19 {
    $stato_giuridico = "MINORENNE";
    [/php]Non è corretto.....

    Hai ragione anche tu :), ma come dicevo era un ESEMPIO (SBAGLIATO) e non mi stavo minimamente preoccupando se 18 o 19 era valido. Comunque GIUSTA CORREZIONE.

    Per quanto riguarda il SE FUNZIONA O NO, io per ora ho risolto il problema, forse non nella "PROGRAMMAZIONE CORRETTA".

    Per quanto riguarda la SOSTITUZIONE, so che esiste un ARRAY_REPLACE che appunto sostituisce valori nell'array. Lo ho provato ma senza risultati.

    Termino dicendo che i comandi che ho impostato io in questo esempio, non vanno assolutamente a toccare la tabella, ma la variabile ($risultato) che contiene in un array i dati provenienti dalla tabella.
    Resto comunque in attesa (senza fretta) della tua risposta o di qualche altro utente ma giusto per PERFEZIONARE la procedura.

    Grazie dell'intervento.


  • User

    premesso che in questa maniera l'array $risultato viene sovrascritto ogni ciclo di while e, quindi, se ti serve recuperare qualche valore dovrai nuovamente interrogare il DataBase ... secondo me ti basterebbe procedere in questa maniera:

    [PHP]
    // da inserire nel ciclo WHILE
    IF ($risultato['anni'] < 19 {
    $stato_giuridico = "MINORENNE";
    } else {
    $stato_giuridico = "MAGGIORENNE";
    }
    $risultato['stato_giuridico'] = $stato_giuridico;
    [/PHP]

    per modificare il valore di un campo dell'array basta riassegnarlo:
    [PHP]$result['cognome'] = 'Rossi';[/PHP]