Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254

    array javascript e database

    Buongiorno,
    ho una domanda concettuale piuttosto che pratica, poi, qualora fosse necessario posso inserire un codice d'esempio.

    Ho la necessita di caricare un array in javascript ed i dati sono prelevati da database.
    In una situazione normale effettuerei una query in php ed, elemento per elemento, carico il vettore in javascript.

    Dato che devo riempire 5 array ognuno di 300 elementi e userò uno o due elementi per array ogni volta, è possibile allora caricare l'array javascript completamente senza fare la fetch_assoc() di php e scorrere tutto l'array php?

    Se volete faccio un esempio in caso non si capisca.

    Grazie Angelo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Mostro un esempio.
    il caso semplice sarebbe:

    Codice PHP:
    <script>
    var ita={};
    </script>
    <?
    $query
    =$db->query("....");
    while (
    $row=$query->fetch_array(MYSQLI_ASSOC)) {
      echo 
    "<option value=\"$row[id]\">$row[parola]</option>";
    ?>
    <script>
     var i=<?php echo $row[id];?>;
     ita[i]="<?php echo $row[parola];?>";
    </script>
    <?php
    }
    così è ok. ma questa cosa devo farla cinque volte ed il ciclo while scorre 300 risultati per cui si può fare:

    Codice PHP:

    $query=$db->query("....");
    <script>
    var ita={<?php echo $query?>};
    </script>
    e poi in javascript qualcosa tipo fetch_assoc?

  3. #3
    Non è chiara la domanda. Ad ogni modo se la array sta su un db è ovvio che devi per forza reinviarla dopo averla ricostruita tutta.

    In js per le array ci sono solo i cicli for che per le array associative del tipo ita={} diventano for(var i in ita){alert(i+' '+ita[i]);}

    ps:
    echo "<option value=\"$row[id]\">$row[parola]</option>";
    può non funzionarti:
    usa
    echo "<option value=\"{$row['id']}\">{$row['parola']}</option>";

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Allora provo ad essere più chiaro:

    echo "<option value=\"$row[id]\">$row[parola]</option>";

    non dovevo scriverlo, se ci fai caso manca la <select ...>
    prima e </select> dopo. Perchè non può funzionare? Fino ad ora ha funzionato.


    Kmq a me interessa passare questo al javascript:

    Codice PHP:

    $query=$db->query("select nome, cognome from impiegati"); 
    <script> 
    var ita={<?php echo $query?>}; 
    </script>
    che sarà:

    NOME COGNOME
    Mario Rossi
    Giorgio Verdi
    ... ...
    ... ...

  5. #5
    la option può non funzionare perchè fra apici doppi in php le variabili composte dovrebbero stare fra parentesi graffe.
    Ad ogni modo se la option non ti interessa, non era possibile desumerlo dal fatto che, mostrandola (dal che si desumeva ti interessasse o avesse un ruolo), avessi trascurato di porre le select prima e dopo: trattandosi di codici esemplificativi poteva benissimo darsi che fosse una abbreviazione del codice integrale.

    Per il resto il codice
    $query=$db->query
    non è nativo: non sappiamo cosa fa la funzione query in php poichè potrebbe benissimo essere una funzione creata da te sull' oggetto $db.

    Dunque se tale funzione riporta una stringa idonea a fungere da coppie chiave=>valore per javascript, si può fare benissimo, tutto sta a vedere se la funzione query riproduce una stringa correttamente formattata per l'oggetto javascript ita.
    Se tale funzione manda una string del tipo
    'nome':'mario', 'cognome':'rossi'
    eccetera va benissimo.

    Ripeto, non si capisce bene dove sta il problema: nel codice di query?

  6. #6
    ps

    var ita={};

    in javascript è una array associativa la sua sintassi è diversa da

    var ita=[];

    pern cui la stringa che questa funzione $db->query()
    deve reinviare varia a seconda di che tipo di array vuoi.
    Tu nell' esempio mostri una array associativa
    ita={}

    ma l'output che sembrerebbe che tu desideri e cioè
    NOME COGNOME
    Mario Rossi
    Giorgio Verdi

    parrebbe un output da array normale e non da array associativa.
    Diventa difficile aiutarti se oltre a non conoscere cosa fa query() non sappiamo bene quale tipo di oggetto ti interessa in javascript e rimane aperto il dubbio se vi sia un errore concettuale nel tentare di riprodurre un contenuto da array lineare
    var ita=['mario rossi','giorgio verdi'];
    o da array associativa
    var ita={'nome':'mario', 'cognome':'rossi', 'nome2':'giorgio', 'cognome2': 'verdi'};

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Il problema è che non so scorrere il risultato di una query in javascript.

    Procediamo passo passo

    $query=$db->query();

    è una funzione di mysqli, nativa. Restituisce una matrice che per essere scomposta ha bisogno della fetch_assoc() sempre nativa.

    la fetch_assoc restituisce un array che corrisponde al singolo record da cui poi si prendono i campi. Faccio un esempio:


    Codice PHP:
    $query=$db->query("select nome, cognome from impiegati"); 
    il risultato, $query, è una matrice.
    NOME COGNOME
    Mario Rossi
    Giorgio Verdi

    Poi devo scorrerla per vedere i singoli record:
    Codice PHP:
    while ($r=$query->fetch_array(MYSQLI_ASSOC)) {
       echo 
    $r[nome]." ".$r[cognome];


    Questo è tutto è solo php con estenzione mysqli o in alternativa mysql ma cambia poco.

    se faccio la query

    Codice PHP:
    $query=$db->query("select nome, cognome from impiegati"); 
    come la passi al js?

  8. #8
    quando scorri la array in php la ricostruisci come stringa per javascript. Presumendo il while funziona come da te atteso e descritto:

    $aJS=array();
    while ($r=$query->fetch_array(MYSQLI_ASSOC)) {
    $aJS[]="'".$r[nome]." ".$r[cognome]."'";
    }
    $aJS=implode(',', $aJS);

    poi nel js

    var ita=[<?php echo $aJS; ?>];

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.