Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Caricare un'intera tabella in un array

    Ciao!

    Dunque, ho un database di mysql con un'unica tabella contenente i 10 campi:

    id (univoco incrementale)
    nome
    cognome
    via
    città
    provincia
    telefono
    titolo libro
    data ritiro
    data consegna


    Ho un problemino: dovrei caricare l'intera tabella in un array e sto facendo così:

    Codice PHP:
    $query mysql_query("SELECT * FROM tabella ") or die . (mysql_error());
    $row mysql_fetch_array($query);
    $tabella = array();
    $riga 1;

    while (
    $row mysql_fetch_array($query))
    {
        for (
    $col 1$col <= 10$col++)
        {
            
    $tabella[$col][$riga] = $row[$col];
        }
        
    $riga++;

    In questo modo posso lavorare direttamente sull'array, ma il problema è che se cancello un record dal db non ho più corrispondenza fra id della tabella sul db e id della tabella dell'array. Ad esempio se mi riferisco all'id 5 dell'array, esso potrebbe corrispondere all'id 6 sul database perchè nel frattempo potrei aver rimosso dal db l'id 3, scalando tutti i record di una posizione. Come posso fare?
    Tu schiavo di Hedwig. Ora tu fa quello che dice Hedwig.

    If you're going to San Francisco be sure to wear some flowers in your hair.

  2. #2
    Fai un array multidimensionale usando pero' mysql_fetch_assoc() per non caricare due volte lo stesso record.

    Codice PHP:


    $query 
    mysql_query("SELECT * FROM tabella ") or die . (mysql_error()); 

    while (
    $row mysql_fetch_assoc($query)) 

        
    $tabella[] = $row;

    }

    echo 
    "<pre>";

    print_r($tabella); 
    vedi tu se e' quello che cerchi. Ovviamente se vuoi una numerazione corrispondente all'id... usa l'id come indice numerico dell'array $tabella.

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

  3. #3
    Grazie! Però c'è qualcosa che non quadra: così facendo mi carica tutti i record tranne il primo, almeno da quanto vedo dall'output di print_r.

    Originariamente inviato da piero.mac
    Ovviamente se vuoi una numerazione corrispondente all'id... usa l'id come indice numerico dell'array $tabella.
    Ecco, è proprio quello che non so fare... al momento mi ritrovo con questa situazione (l'id 1, come detto sopra, non so che fine abbia fatto. 2, 3 e 4 li ho cancellati dal db):

    codice:
    [0] => Array
            (
                [id] => 5
                [nome] => tizio
    
    [...]
    
    [1] => Array
            (
                [id] => 6
                [nome] => caio
    
    [...]
    Questo perchè nel frattempo ho cancellato i record con id 2,3, e 4 dal db, quindi quando carica l'array scala di un tot... che fare?
    Tu schiavo di Hedwig. Ora tu fa quello che dice Hedwig.

    If you're going to San Francisco be sure to wear some flowers in your hair.

  4. #4
    manca il primo perche' lo estrai prima del while...Io lo avevo tolto, tu forse no....

    prova a fare cosi' se vuoi l'indice uguale all'id....

    Codice PHP:

    $query 
    mysql_query("SELECT * FROM tabella ") or die . (mysql_error()); 

    while (
    $row mysql_fetch_assoc($query)) 

        
    $tabella[$row['id']] = $row;



    echo 
    "<pre>"

    print_r($tabella); 

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

  5. #5
    Grande, funziona!

    Grazie mille.
    Tu schiavo di Hedwig. Ora tu fa quello che dice Hedwig.

    If you're going to San Francisco be sure to wear some flowers in your hair.

  6. #6
    Uh. Ancora una cosa: per individuare sull'array un elemento sto facendo una cosa di questo tipo:

    Codice PHP:
    for ($i 1$i <= $mysql_num_rows($query); $i++)
    {
        if (
    $tabella[$i][elemento] == $elemento_scelto)
        {
            echo 
    "Hai puntato alla riga $i contenente $elemento_scelto";
        }

    C'è un modo più breve per individuare la riga di un elemento di cui conosco il nome, posto che tale elemento è univoco nell'intero array? :master:
    Tu schiavo di Hedwig. Ora tu fa quello che dice Hedwig.

    If you're going to San Francisco be sure to wear some flowers in your hair.

  7. #7
    select *
    from tabella
    where campo = 'riga che conosci'

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

  8. #8
    Non intendevo dalla tabella del db ma dall'array in cui ho caricato la tabella.

    Comunque mi servirebbe proprio l'equivalente di una select di quel tipo ma per quanto riguarda gli array...
    Tu schiavo di Hedwig. Ora tu fa quello che dice Hedwig.

    If you're going to San Francisco be sure to wear some flowers in your hair.

  9. #9
    Originariamente inviato da Lyn
    Non intendevo dalla tabella del db ma dall'array in cui ho caricato la tabella.

    Comunque mi servirebbe proprio l'equivalente di una select di quel tipo ma per quanto riguarda gli array...
    array_search()

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

  10. #10
    Wow! VVoVe: La provo subito, grazie ancora.
    Tu schiavo di Hedwig. Ora tu fa quello che dice Hedwig.

    If you're going to San Francisco be sure to wear some flowers in your hair.

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.