Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    restituire risultato query da PHP a HTML

    ciao a tutti,

    sono un neofita della programmazione WEB e sto seguendo dei corsi online di HTML, PHP, JS, ecc però sono abbastanza confuso su un punto probabilmente banale.

    Sto sviluppando una semplice pagina web in HTML che utilizza un modulo JS per visualizzare una mappa personalizzata (stile Google Maps) su cui sono presenti degli indicatori che rappresentano delle posizioni.. questi puntatori hanno 3 caratteristiche: id, longitudine e latitudine.

    I dati di tutti i puntatori risiedono su un DB MySQL e il mio scopo è interrogare questo DB, ottenere tutti i puntatori con le coordinate e rappresentare il tutto sulla mappa..

    Il mio problema è che nel momento in cui da HTML richiamo il PHP che esegue la query sul DB e ottiene i dati, non so poi come passare questo risultato al "client" in modo da valorizzare i puntatori.. io da PHP per ora ho visto solo degli "echo" con cui al massimo riscrivere dell'HTML da rappresentare sul client..

    potete aiutarmi?
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Angarat
    Registrato dal
    Nov 2003
    Messaggi
    157
    ciao pinta, suppongo che gli indicatori presenti sulla mappa siano passati alla mappa da js, quindi un'array js, con php puoi generare l'array js semplicemente facendo un echo come fosse html.

    ovvio che se postassi il codice sarebbe più semplice aiutarti.

  3. #3
    ciao, grazie x la risposta.

    Hai indovinato, ciclo un array e aggiungo i puntatori .

    Questo è query.php:

    codice:
    var items= new Array();
    		
    mysql_connect("localhost","root","") or die ("impossibile connettersi");
    mysql_select_db("testsite");
    
    
    $result=mysql_query("SELECT * FROM pointers");
    
    /*non sono sicuro che funzioni questo .push .. ci sto studiando :) */
    while($row=mysql_fetch_array($result)){
      items.push([{"lat":$row['lat'],"lon":$row['lon']}]);
    }
    ora io vorrei che quell'array "items" mi venga restituito già popolato all'HTML che è qualcosa del genere:

    codice:
    for(i=0;i<items.length;i++){
      var LamMarker = new L.marker([items[i].lat, items[i].lon]);
      marker.push(LamMarker);
      map.addLayer(marker[i]);
    }
    spero di essere stato chiaro.

    grazie.

  4. #4
    Utente di HTML.it L'avatar di Angarat
    Registrato dal
    Nov 2003
    Messaggi
    157
    suppongo che items sia di js.

    Tieni sempre presente che php e js non sono la stessa cosa, qui mi sembra che hai mischiato i due linguaggi.

    con php puoi generare js stampandolo sulla pagina come html.

    quindi quando scrivi js direttamente sulla pagina devi essere fuori dal php.

    Codice PHP:
    <!-- html -->

    <script type="text/javascript"> 
    // js
    var items = [
    <?php // php
        
    mysql_connect("localhost","root","") or die ("impossibile connettersi");
        
    mysql_select_db("testsite");

        
    $result=mysql_query("SELECT * FROM pointers");
        while(
    $row=mysql_fetch_array($result)){
            
    // stampo il js con php
            
    echo '[{"lat":'.$row['lat'].',"lon":'.$row['lon'].'}],';
            
        }
    // fine php
    ?>
    ];
    // js
    </script>

    <!-- html -->

  5. #5
    ah ho capito! grazie in effetti ha funzionato..
    però così mi sembra un pò "sporco".. sarà che sono sviluppatore .NET e sono abituato ad una programmazione differente..

    ora mi è sbucato un altro problema... quella query l'ho messa sotto timer perchè voglio che i dati si aggiornino ogni n secondi e vedere i puntatori che si muovono sulla mappa..

    nonostante modifichi le entry nel db a mano, le posizioni dei puntatori non si aggiornano anche se il timer funziona correttamente.. se faccio refresh della pagina invece i puntatori hanno le nuove posizioni.. prima di fare la query devo scollegarmi dal DB e ricollegarmi ogni volta?

    grazie

  6. #6
    Utente di HTML.it L'avatar di Angarat
    Registrato dal
    Nov 2003
    Messaggi
    157
    ...questo comportamento lo puoi ottenere via ajax usando js.

    praticamente in un file php separato metti solo la query al db che ti restituisce un json dei marker, nel file html con la mappa metti il js che richiama ogni tot secondi il file php e fa le operazioni del caso per aggiornarti la mappa...

    ...la butto li, dato che non ho mai aggiornato i marker di una mappa in tempo reale.

  7. #7
    .. mmm ooookeii... devo studiare cosa sono i json...

  8. #8
    Utente di HTML.it L'avatar di Angarat
    Registrato dal
    Nov 2003
    Messaggi
    157
    json è un formato per scambiarsi dati

    ecco cmq un esempio di json da wikipedia è molto semplice da utilizzare, se cerchi nella sezione js di questo forum sicuramente troverai delle risposte.

    puoi usare anche xml...

    in ogni caso ti conviene chiedere nella sezione js
    Ultima modifica di Angarat; 30-07-2014 a 17:24

  9. #9
    ciao,

    alla fine sono riuscito a fare quasi tutto, ma rimane il problema che i dati restituiti dalla query non sono aggiornati..

    di seguito il codice che ho messo sotto timer:

    codice:
    function reset(){
        items = [];
        <?php // php
                
           mysql_connect("localhost","root","") or die ("impossibile connettersi");
            mysql_select_db("geoloc");
    
              $result=mysql_query("SELECT * FROM pointers");
              $i=0;
                echo ('var items = [');
                while($row=mysql_fetch_array($result)){
                    
                 $i++;
                  if ($i==1){
                      echo ('{"lat":adaptY('.$row['LAT'].'),"lon":adaptX('.$row['LON'].')}');
                   }else{
                       echo (',{"lat":adaptY('.$row['LAT'].'),"lon":adaptX('.$row['LON'].')}');
                     }
                 }
                echo ('];');
             mysql_close();
                // fine php
           ?>
         }
    non capisco come mai se non faccio refresh della pagina i dati non sono aggiornati...

    grazie

  10. #10
    Utente di HTML.it L'avatar di Angarat
    Registrato dal
    Nov 2003
    Messaggi
    157
    la query php la esegui prima di far vedere la pagina e quindi i risultati della query saranno sempre quelli a meno che tu non faccia un refresh.

    javascript lo esegui quando la pagina viene caricata dal client, quindi puoi modificare praticamente tutto dell'esperienza utente, dal css all'html.

    se i dati della query non li richiami via ajax con javasscript la vedo dura, con le mie conoscenze attuali.

    Non essendo un esperto di php ti posso solo dare un paio di dritte:

    se conosci jquery, ajax è molto semplice da utilizzare (ovvio è sempre javascript!!)

    altrimenti se conosci solo javascript devi utilizzare XMLHttpRequest

    ti ripeto cmq che ti conviene chiedere nella sezione javascript.

    ciaoc iao

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.