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

    Parse error in una query

    ciao,

    ho una pagina php dove a un certo punto faccio una query su un database. I dati di questo sono impostati in un file di config.php, il codice che uso è questo:

    codice:
            $year="2005";
    	$month="04";
    	$day="30";
    	$orario="00:00:00";	
    	$variabile="speed";
    	
    	query_mostra="SELECT '$variabile' FROM dati_sodar_windprofile WHERE data='$year-$month-$day' AND ora='$orario' order by data, ora;";	
    	$result_mostra=mysql_query($query_mostra) or die ("impossibile eseguire: $query_mostra");
    ma sulla linea in cui preparo la query (query_mostra=) ricevo il seguente errore:
    Parse error: parse error in C:\xampp\htdocs\blocchi_ricerca\immagini_sodar.php on line 24

    Non riesco a capire cosa ci sia che non va. Attualmente lavoro su win xp con xampp (con php5), mentre su linux (debian con apache, mysql e php5) non ho quel messaggio di errore, come mai? Quello che ho capito non dipende dall'usare variabili all'interno della query o questione di apici o doppi apici.
    Qualcuno può darmi delucidazioni, visto che non specifica che errore c'è come quando avviene con expeting etc..
    grazie.
    ciao.
    PeppePegasus

  2. #2
    query_mostra="SELECT $variabile FROM dati_sodar_windprofile WHERE data='$year-$month-$day' AND ora='$orario' ORDER BY data, ora";
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3
    Purtroppo non sono quegli apici a $variabile a generare l'errore, già provato!
    ciao.
    PeppePegasus

  4. #4
    Originariamente inviato da peppepegasus
    Purtroppo non sono quegli apici a $variabile a generare l'errore, già provato!
    ciao.
    A volte e' quello che manca che genera errore...

    query_mostra

    cose' una variabile?

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

  5. #5
    Allora era il simbolo di $ che mancava davanti a query_mostra..solo che ora lo stesso errore viene dato sull'ultima linea del pagina, è una impresa ora capire cosa c'è che non va? Posto il codice della pagina se qualcuno di buona volontà può aiutarmi a controllarlo:
    codice:
    <?php
    include_once("../include/config.php");
    include ( "../jpgraph/src/jpgraph.php");
    //include ("../jpgraph/src/jpgraph_line.php");
    //include ("../jpgraph/src/jpgraph_scatter.php");
    include ("../jpgraph_line.php");
    
    	$contatore_vettore_dati=0;
    	$contatore_vettore_dati1=0;
    	$contatore=0;
            $cont_alt=0;
       	
    	$year="2005";
    	$month="04";
    	$day="30";
    	$orario="00:00:00";	
    	$variabile="speed";
    	//	
    	$query_mostra="SELECT $variabile FROM dati_sodar_windprofile WHERE data='$year-$month-$day' AND ora='$orario' order by data, ora;";	
    	$result_mostra=mysql_query($query_mostra) or die ("impossibile eseguire: $query_mostra");
    	$contatore_ora_precedente=0;
    	$ora_precedente="";
    	while($row_mostra=mysql_fetch_array($result_mostra)){	
    		foreach($row_mostra as $attributo) {
    			echo "componente dati: $attributo 
    ";
    		}										
    				   $ora_precedente=substr($row_mostra[ora],0,2);					
    				$vettore_label[$contatore]="";
    				$dim_vettore=$contatore-1;
    	}
    	
    	$query_parametri="SELECT * FROM tabelle_campi WHERE nome_campo='$variabile' AND id_tabella = '4' ;";
    	$result_parametri=mysql_query($query_parametri) or die ("impossibile eseguire: $query_parametri");	
    	$row_parametri=mysql_fetch_array($result_parametri);
    	
    // Query per ricavare l'altitude	
    	
    	$query_alt="SELECT altitude FROM dati_sodar_windprofile WHERE data='$year-$month-$day' AND ora='$orario' order by data, ora;";
    	$result_alt=mysql_query($query_alt) or die ("impossibile eseguire: $query_mostra");
    $row_alt=mysql_fetch_array($result_alt) 
    	
    	while($row_mostra_alt=mysql_fetch_array($result_alt)){	
    		foreach($row_mostra_alt as $attributo1) {
    			echo "componente altitudine: $attributo1 
    ";
    		}		
    	
    // Genero il grafico X,Y
    
    $titolo=$row_parametri[descrizione_IT];
    if ($Lingua == "EN") $titolo=$row_parametri[descrizione_EN];
    
    $label_asse_y= $titolo." (".$row_parametri[unita_misura].")";
    
    $label_asse_y= togliaccenti($label_asse_y);
    $titolo= togliaccenti($titolo);
    
    // Create the graph. These two calls are always required
    $graph  = new Graph(300, 600,"auto");   
     
    $graph->title->Set ($titolo);
    
    
    // Se esistono dei dati validi (non tutti NULL) allora non setta un valore di max nell'asse verticale
    // altrimenti imposta 10 come valore di max
    if (($contatore_vettore_dati1 > 0) OR ($contatore_vettore_dati > 0)){
    	// LINEARE $graph->SetScale( "textlin");
    	$graph->SetScale("linlin"); // A PUNTI
    } else {
    	// LINEARE $graph->SetScale( "textlin", 0, 10);
    	$graph->SetScale("linlin",0,10); // A PUNTI
    }
    
    // setta i margini
    $graph->SetMargin(60,40,40,40);  
    
    // Create the linear plot
    // LINEARE $lineplot =new LinePlot($vettore_dati);
    // LINEARE $lineplot ->SetColor("blue");
    
    $graph->xaxis-> SetTickLabels($vettore_label);
    $graph->xaxis-> title->Set("Altitudine" );
    // distanzia la label verticale dall'asse
    $graph->yaxis-> SetTitlemargin(40);
    $graph->yaxis-> title->Set($label_asse_y); 
    
    // Add the plot to the graph
    // LINEARE $graph->Add( $lineplot);
    
    $sp1=new LinePlot($row_alt,$vettore_dati);
    //$sp1 = new ScatterPlot($vettore_dati); // A PUNTI
    $graph->Add($sp1); // A PUNTI
    
    // Display the graph
    $graph->Stroke();
    ?>
    Una domanda..dato che nel grafico devo rappresentare i dati provenienti dal DB, se chiamo, come faccio, in un certo punto il vettore $row alt con
    codice:
     $row_alt=mysql_fetch_array($result_alt)
    e poi lo richiamo quando devo fare il plot, il vettore row_alt è ancora in memoria come un array e quindi è possibili usarlo in qualsiasi punto del programma successivo al punto dove lo si nomina la prima volta con il fetch array??
    grazie.
    ciao.
    PeppePegasus

  6. #6
    Codice PHP:
    // Query per ricavare l'altitude    
        
        
    $query_alt="SELECT altitude FROM dati_sodar_windprofile WHERE data='$year-$month-$day' AND ora='$orario' order by data, ora;";
        
    $result_alt=mysql_query($query_alt) or die ("impossibile eseguire: $query_mostra");
    $row_alt=mysql_fetch_array($result_alt
        
        while(
    $row_mostra_alt=mysql_fetch_array($result_alt)){    
            foreach(
    $row_mostra_alt as $attributo1) {
                echo 
    "componente altitudine: $attributo1 
    "
    ;
            } 
    intanto ti manca il ; per chiudere il comando mysql_fetch_array... il primo.

    Poi $row_mostra_alt si becca il secondo valore del result set poiche' il primo la ha preso $row_alt ed il puntatore interno del buffer del result set e' avanzato di 1 record.

    E poi e poi ... "select altitude" estrae solo un campo e qui non si vede l'utilita' di un foreach.

    echo "componente altitudine: $row_mostra_alt['altitude']
    ";

    Quindi per concudere: $row_alt se non viene sovrascritto manterra' il valore di altitudine in un array con due indici uno numerico e l'altro associativo. Il valore che cerchi sara' in:
    row_alt[0] oppure in row_alt['altitude']

    that's all....

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

  7. #7
    ciao,

    grazie per la chiara risposta..c'è un però..
    uso ora il codice tenendo conto dei tuoi suggerimenti:

    codice:
    // Query per ricavare l'altitude	
    	
    	$query_alt="SELECT altitude FROM dati_sodar_windprofile WHERE   data='$year-$month-$day' AND ora='$orario' order by data, ora;";
    	$result_alt=mysql_query($query_alt) or die ("impossibile eseguire: $query_mostra");
    	
    	while($row_mostra_alt=mysql_fetch_array($result_alt)){	
    			echo "componente altitudine: $row_mostra_alt['altitude'] 
    ";
    	}
    ma in corrispondenza della linea dell'echo..mi da questo errore:

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\xampp\htdocs\blocchi_ricerca\immagini_sodar.php on line 49

    come mai? ora i punti e virgola sono a posto, cosa è a dare problema?
    grazie.
    ciao.
    PeppePegasus

  8. #8
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Originariamente inviato da peppepegasus
    ciao,

    grazie per la chiara risposta..c'è un però..
    uso ora il codice tenendo conto dei tuoi suggerimenti:

    codice:
    // Query per ricavare l'altitude	
    	
    	$query_alt="SELECT altitude FROM dati_sodar_windprofile WHERE   data='$year-$month-$day' AND ora='$orario' order by data, ora;";
    	$result_alt=mysql_query($query_alt) or die ("impossibile eseguire: $query_mostra");
    	
    	while($row_mostra_alt=mysql_fetch_array($result_alt)){	
    			echo "componente altitudine: $row_mostra_alt['altitude'] 
    ";
    	}
    ma in corrispondenza della linea dell'echo..mi da questo errore:

    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\xampp\htdocs\blocchi_ricerca\immagini_sodar.php on line 49

    come mai? ora i punti e virgola sono a posto, cosa è a dare problema?
    grazie.
    ciao.
    Il problema è nell'echo, se vuoi scrivere $row_mostra_alt['altitude'] dentro i doppi apici di echo allora devi togliere gli apici singoli tra le parentesi quadre
    Codice PHP:
    echo "componente altitudine: $row_mostra_alt[altitude] 
    "


  9. #9
    oppure (per me preferibile IMHO):

    Codice PHP:
    echo "componente altitudine: {$row_mostra_alt['altitude']} 
    "


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

  10. #10

    Problema con il grafico generato con jpgraph

    Ciao,

    ho questo problema con il grafico creato con jpgraph, sembra che il vettore ottenuto con il fetch array quando deve essere usato per il plot sia vuoto e mi restituisce l'errore che non può fare il plot di vettori vuoti.
    Posto il codice spiegando cosa fa:

    [PHP]
    <?php
    include_once("../include/config.php");
    include ( "../jpgraph/src/jpgraph.php");
    include ("../jpgraph/src/jpgraph_line.php");

    // Query per selezionare i dati

    $query_mostra="SELECT $variabile FROM dati_sodar_windprofile WHERE data='$year-$month-$day' AND ora='$orario' order by data, ora;";
    $result_mostra=mysql_query($query_mostra) or die ("impossibile eseguire: $query_mostra");

    // Query per selezionare i parametri

    $query_parametri="SELECT * FROM tabelle_campi WHERE nome_campo='$variabile' AND id_tabella = '4' ;";
    $result_parametri=mysql_query($query_parametri) or die ("impossibile eseguire: $query_parametri");
    $row_parametri=mysql_fetch_array($result_parametri );

    // Query per ricavare l'altitude

    $query_alt="SELECT altitude FROM dati_sodar_windprofile WHERE data='$year-$month-$day' AND ora='$orario' order by data, ora;";
    $result_alt=mysql_query($query_alt) or die ("impossibile eseguire: $query_mostra");

    // Stampa le componenti dell'altitudine e della $variabile

    while($row_mostra_alt=mysql_fetch_array($result_al t)){
    echo "componente altitudine: {$row_mostra_alt['altitude']}
    ";
    }

    while($row_mostra=mysql_fetch_array($result_mostra )){
    echo "componente di $variabile: {$row_mostra['vertical_sn']}
    ";
    }

    // Fine stampa
    [/PHP}

    fin qui quando stampo i dati che ci sono nel database e me li stampa corretti, e ci siamo.

    Codice PHP:
    // Genero il grafico X,Y

    $titolo=$row_parametri[descrizione_IT];
    if (
    $Lingua == "EN"$titolo=$row_parametri[descrizione_EN];

    $label_asse_y$titolo." (".$row_parametri[unita_misura].")";

    $label_asse_ytogliaccenti($label_asse_y);
    $titolotogliaccenti($titolo);

    // Create the graph. These twovertical_sn calls are always required
    $graph  = new Graph(250500,"auto");

    $graph->title->Set ($titolo);

    $graph->SetScale('intlin',0,300,0,100); // A PUNTI

    // setta i margini
    $graph->SetMargin(60,40,40,40);

    $graph->xaxis-> SetTickLabels($vettore_label);
    $graph->xaxis-> title->Set("$label_asse_y);

    // distanzia la label verticale dall'asse
    $graph->yaxis-> SetTitlemargin(40);
    $graph->yaxis-> title->Set("Altitude (m)");

    $sp1=new LinePlot(`$row_mostra_alt`, `$row_mostra`);

    //$sp1=new LinePlot(`$row_mostra_alt[altitude]`, `$row_mostra`);
    $graph->Add($sp1); // A PUNTI

    // Display the graph
    $graph->Stroke();
    ?> 
    ci sono cose superflue che servono nella pagina che non sto a descrivere ma vorrei capire se così dovrei ottenere un grafico o meno.
    grazie.
    ciao.
    PeppePegasus

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.