Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110

    creazione matrice dinamica

    Vorrei creare una matrice con queste caratteristiche

    $persona[0][id]
    $persona[0][nome]
    $persona[0][cognome]

    in modo dinamico
    pero lo 0 deve essere dinamico cioè ci va una variabile li..ke sia la stessa per quei campi..

    e la devo riempire con una query dentro un ciclo

    while( blabla)
    $persone= array($e[$id],$e[$nome].....etc

    ogni dato viene preso da una variabile..help

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Puoi usare un altro modo per popolare gli array associativi perche' di quello si tratta.

    Codice PHP:


    $persona
    [0][id]
    $persona[0][nome]
    $persona[0][cognome]


    // e' equivalente a 

    $persona = array();

    array_push$persona , array( "id"=>$id "nome"=>$nome"cognome"=>$cognome )  ) ; 
    La funzione array push si occupa da sola ad inserire nelle celle incrementando l'indice il tuo sottoarray di dati .

    QUindi ad ogni ciclo puoi inserire tutti i dati che vuoi con un codice molto pulito.

    Ovviamente come dicevo sopra le due sol sono equivalenti e ti serve sempre un ciclo for, foreach, while, do while .... per popolare l'array.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110
    Originariamente inviato da Virus_101
    Puoi usare un altro modo per popolare gli array associativi perche' di quello si tratta.

    Codice PHP:


    $persona
    [0][id]
    $persona[0][nome]
    $persona[0][cognome]


    // e' equivalente a 

    $persona = array();

    array_push$persona , array( "id"=>$id "nome"=>$nome"cognome"=>$cognome )  ) ; 
    La funzione array push si occupa da sola ad inserire nelle celle incrementando l'indice il tuo sottoarray di dati .

    QUindi ad ogni ciclo puoi inserire tutti i dati che vuoi con un codice molto pulito.

    Ovviamente come dicevo sopra le due sol sono equivalenti e ti serve sempre un ciclo for, foreach, while, do while .... per popolare l'array.
    grazie mille ora proverò e ti farò sapere..

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110
    temo che non funzioni ti spiego perchè..

    io devo raggruppare ogni riga identica restituita dalla query in un'unico id..

    per esempio ho due righe :

    123, marco , rossi , cdf123
    124, marco , rossi ,cdf123

    queste due righe andranno a riempire un'unico array in questo modo

    1, marco , rossi , cdf123

    preso 1 volta sola e con un suo id specifico..

    come faccio?

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Scusa visto che le righe sono resituite da query allora fai fare alla query il filtro delle doppie,
    ossia :

    select * from tabella group by nome , cognome;

    Cosi' verranno filtrati in automatico tutti gli utenti con lo stesso nome e cognome e non verranno generate linee doppie come quella sotto.

    L'id recuperato dipendera' dal tipo di ordinamento della ricerca.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110
    Originariamente inviato da Virus_101
    Scusa visto che le righe sono resituite da query allora fai fare alla query il filtro delle doppie,
    ossia :

    select * from tabella group by nome , cognome;

    Cosi' verranno filtrati in automatico tutti gli utenti con lo stesso nome e cognome e non verranno generate linee doppie come quella sotto.

    L'id recuperato dipendera' dal tipo di ordinamento della ricerca.
    ma a me serve sapere quali sono quelli ripetuti..

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    ok allora torniamo sempre alla soluzione precedente :

    1) modifica la query in questo modo :
    select * from tabella order by nome , cognome
    Cosi' ordiniamo tutto per nome e cognome e avremo i dati messi tipo

    12 mario bianchi
    15 mario rossi
    4 mario verdi
    77 mario verdi
    5 mario verdi

    12 vincenzo pasquale
    .....

    2) ora modifichiamo lo script di prima in

    Codice PHP:

    $persona 
    = array();

    $ris mysql_query"select * from tabella order by nome , cognome" $conn )or die( mysql_error() );


    // aggiungiamo una var per memorizzare l'ultimo user controllato
    $last_u = array("nome"=>"" "cognome"=>"");
    // creiamo struttura per memorizzare id replicati
    $mul = array();
    while(
    $curr mysql_fetch_array($ris))
    {
        if(  
    $last_u[nome] == $curr[nome] && $last_u[cognome]==$curr[cognome] )
        {
            
    array_push$mul $curr[id] );
        }
        else
        {
            
    array_push$persona , array( "id"=>$id "nome"=>$nome"cognome"=>$cognome )  ) ;
            
    $last_u[nome] = $curr[nome];
            
    $last_u[cognome] = $curr[cognome];
        }

    A questo punto hai filtrato e popolato 2 array 1 con i dati NON replicati degli utenti e uno con tutte le replicazioni nome-cognome .

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110
    Originariamente inviato da Virus_101
    ok allora torniamo sempre alla soluzione precedente :

    1) modifica la query in questo modo :
    select * from tabella order by nome , cognome
    Cosi' ordiniamo tutto per nome e cognome e avremo i dati messi tipo

    12 mario bianchi
    15 mario rossi
    4 mario verdi
    77 mario verdi
    5 mario verdi

    12 vincenzo pasquale
    .....

    2) ora modifichiamo lo script di prima in

    Codice PHP:

    $persona 
    = array();

    $ris mysql_query"select * from tabella order by nome , cognome" $conn )or die( mysql_error() );


    // aggiungiamo una var per memorizzare l'ultimo user controllato
    $last_u = array("nome"=>"" "cognome"=>"");
    // creiamo struttura per memorizzare id replicati
    $mul = array();
    while(
    $curr mysql_fetch_array($ris))
    {
        if(  
    $last_u[nome] == $curr[nome] && $last_u[cognome]==$curr[cognome] )
        {
            
    array_push$mul $curr[id] );
        }
        else
        {
            
    array_push$persona , array( "id"=>$id "nome"=>$nome"cognome"=>$cognome )  ) ;
            
    $last_u[nome] = $curr[nome];
            
    $last_u[cognome] = $curr[cognome];
        }

    A questo punto hai filtrato e popolato 2 array 1 con i dati NON replicati degli utenti e uno con tutte le replicazioni nome-cognome .
    ti ringrazio molto ho risolto in altro modo con group_concat()

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 © 2025 vBulletin Solutions, Inc. All rights reserved.