Visualizzazione dei risultati da 1 a 9 su 9

Discussione: array associativo

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    487

    array associativo

    ho due tabelleippo e pluto
    nella tabella pippo ho il campo comune
    nella tabella pluto ho il campo comune e il campo sigla.
    con questa query li metto in relazione:
    $query="select pip.comune,pl.comune,pl.sigla from pippo as pip left join pluto as pl on(pl.comune=pip.comune)";

    vorrei ora fare un array associativo del tipo:

    ciccio=array('pippo.comune'=>'pluto.sigla');
    come si fà?
    Vivi intensamente, muori giovane e sarai un cadavere di bell' aspetto.

  2. #2
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    codice:
    $ciccio = array();
    while($rs = mysql_fetch_row($query)) {
      $ciccio[ $rs[0] ] = $rs[2];
    }
    ti consiglio comunque di rinominare all'interno di una query i campi omonimi così da poter usare anche mysql_fetch_assoc() che è più intuitiva:

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    487

    cosa significa

    questo: $ciccio[ $rs[0] ] = $rs[2];
    Vivi intensamente, muori giovane e sarai un cadavere di bell' aspetto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    190

    Re: cosa significa

    [supersaibal]Originariamente inviato da tespiego
    questo: $ciccio[ $rs[0] ] = $rs[2]; [/supersaibal]

    $ciccio = array();
    while($rs = mysql_fetch_assoc($query)) { //while che scorre il risultato della tua query
    $ciccio[$rs['campo_da_utilizzare_come_indice']] = $rs['valore'];
    }

  5. #5
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093

    Re: cosa significa

    [supersaibal]Originariamente inviato da tespiego
    questo: $ciccio[ $rs[0] ] = $rs[2]; [/supersaibal]
    nella tua query ci sono campi omonimi, non posso riferirmi ad un campo usando il suo nome perché altrimenti si creerebbe confusione con risultati potenzialmente errati. Devo riferirmi ad essi con un indice numerico. I campi restituiti dalla query vengono ordinati con un indice che parte da 0.

    Quindi $rs[0] si riferisce al campo pippo.comune mentre $rs[2] si riferisce al campo pl.sigla

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    487

    ok grazie

    ora comunque li rinomino.grazie mille
    Vivi intensamente, muori giovane e sarai un cadavere di bell' aspetto.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    487

    come si possono evitare le ripetizioni?

    cioè, se ho dei dati doppi,come posso farne uscire solo uno?
    questo è il codice:
    WHILE($row = mysql_fetch_assoc($result)) {
    $legend=array($row['sportello'] => $row['sigla']);
    foreach($legend as $key){
    echo "$key";
    }
    }
    vorrei che mi uscisse una sola volta il nome dello sportello e la sua sigla.invece i dati si ripetono perche è inserito piu volte nella tabella.come posso fare un qualcosa tipo il distinct o il group by in un foreach
    Vivi intensamente, muori giovane e sarai un cadavere di bell' aspetto.

  8. #8
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    il mio post non si riferiva a dati doppi ma a colonne doppie. Nella tua select c'erano dei campi omonimi anche se appartenenti a tabelle diverse. Dato che con il mysql_fetch_assoc ti riferisci al solo nome del campo senza toccare la tabella di appartenenza si può creare confusione

    per la seconda domanda beh... un array_unique($legend) dovrebbe essere sufficiente

  9. #9
    Oppure GROUP BY...

    Nel caso di nomi di colonna uguali, l'ultimo estratto sovrascrive i precedenti indifferentemente dalla tabella. Non vengono resi due risultati ma uno solo.

    In pratica nel result set non c'e' "tabella.campo", ma solo "campo". per diversificare si dovrebbe usare un alias..




    @kuarl.... trovato, thanx.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.