Come usare variabile PHP all'esterno del codice

di il
7 risposte

Come usare variabile PHP all'esterno del codice

Ciao! Sto creando un sito per un progetto e questo è un file .php
Vorrei inserire una Progress Bar che vari in base al valore di $su100 calcolato nel parte di codice php
Come posso usare quella variabile all'esterno del codice? Più precisamente, nella parte sottostante la fine del codice php vero e proprio.
Vorrei poter fare una cosa tipo style="width:$su100%;" ... è possibile in qualche modo?
Il documento è strutturato in questo modo perché deve poi la progress bar e "echo $average;" dovranno apparire in una zona di un'altra pagina in seguito ad una chiamata attraverso AJAX (la chiamata con AJAX funziona)
PS. la parte di codice php funziona perfettamente! Anche la progress bar appare dove voglio, ma non so come rendere "dinamico" il suo valore.

<html> 
    <head>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    </head>
    <body> 
        <?php
            $dbconn=pg_connect(" host='' port='' dbname='' user='' password='' ") or die("Could not connect: " . pg_last_error()); 
            if (!empty($_POST["loginButton"])){
                echo "error";
            }
            else {
                $result = pg_query("select avg(fb) as avg from feedback");
                $row = pg_fetch_assoc($result);
                $average = $row['avg'];
                $su100 = $average*100/5;
                echo $average;
            }
        ?>

        <div class="progress">
          <div class="progress-bar" aria-valuemin="0" aria-valuenow="30" aria-valuemax="100" style="width:30%; background-color:orange;">
          </div>
        </div>

    </body>
</html>

7 Risposte

  • Re: Come usare variabile PHP all'esterno del codice

    Ciao,
    basta aprire e chiudere i tag del php dove ti interessa e inserire la variabile.

    Ciao
  • Re: Come usare variabile PHP all'esterno del codice

    cali ha scritto:


    Ciao,
    basta aprire e chiudere i tag del php dove ti interessa e inserire la variabile.

    Ciao
    Invece se volessi usare quella stessa variabile dichiarata nel file .php in un file .html?
  • Re: Come usare variabile PHP all'esterno del codice

    Ciao,
    con due file con estensione diversa diversa, .php e .html non puoi, tranne se utilizzi jquery/ajax. Ciò che vuoi fare tu lo puoi fare tra file .php o sessioni ecc.

    Dovrei capire cosa vuoi fare....

    Nei file .php puoi utilizzare sia codice server side che html/css/js. Poi sarà il server a interpretare cosa elaborare perché codice php cosa inviare direttamente al client perché codice html ecc.

    Ciao
  • Re: Come usare variabile PHP all'esterno del codice

    Attualmente vorrei fare in modo che l'utente attraverso due select invii al server dei dati, e che questo restituisca NELLA STESSA PAGINA html il risultato della query. Riesco però soltanto a restituirlo in una nuova scheda...
    Vorrei usare Ajax ma non so bene come implementare la cosa perché il button di submit invia la richiesta al file php messo nell'attributo action della form, e ovviamente il valore restituito appare in una nuova pagina invece che nella sezione dinamica dello stesso file html pensata.
    Non so come fare in modo che il button per inviare la domanda al server e quello usato per Ajax coincidano.

    Form index.html:
    
    <div class="login-dark">
            <form action="ask.php" method="POST" name="myform">
                <h6>What do you want to know?</h6><br>
    			<div class="form-group">
    				<select class="form-control" name="planet">
    					<option value="" disabled selected>Planet ??</option>
    					<option value="Earth">Earth</option>
    					<option value="Mars">Mars</option>
    					<option value="Saturn">Saturn</option>
    					<option value="Neptune">Neptune</option>
    					<option value="Jupiter">Jupiter</option>
    					<option value="Uranus">Uranus</option>
    					<option value="Moon">Moon</option>
    					<option value="Mercury">Mercury</option>
    					<option value="Venus">Venus</option>
    				</select>
    				<select class="form-control" name="info">
    					<option value="" disabled selected>Info</option>
    					<option value="planettype">Planet Type</option>
    					<option value="equatorialradius">Equatorial Radius</option>
    					<option value="averagedistancefromsun">Average Distance to the Sun</option>
    					<option value="surfacetemperature">Surface Temperature</option>
    					<option value="daylength">Rotation Period (Earth Days)</option>
    					<option value="yearlength">Orbit Period (Earth Years)</option>
    					<option value="surfacegravity">Surface Gravity</option>
    					<option value="atmosphericConstituents">Atmospheric Constituents</option>
    					<option value="rings">Rings</option>
    					<option value="moons">Moons</option>
    					<option value="escapevelocity">Escape Velocity</option>
    					<option value="density">Density</option>
    					<option value="mass">Mass</option>
    					<option value="volume">Volume</option>
    				</select><br>
    			
    				<button class="btn-primary" id="ask" type="submit">Ask</button>
    				<button class="btn-primary" type="reset">Reset</button>
    			</div>
    		</form>
    
    		<div class="alt" name="userRating">
    			<div class="row featurette">
    				<div id="zona_din"></div>
    			</div>
    		</div>
    
        </div>
    
    Tentativi di script index.html:
    
    <!--script>
    		var documenti = document.getElementsByName("ask");
        	for (var i = 0; i < documenti.length; i++) {
            	documenti[i].onclick = caricaDocumento;
          	}
          	function caricaDocumento(e) {
           	 	var httpRequest = new XMLHttpRequest();
            	httpRequest.onreadystatechange = gestisciResponse;
            	httpRequest.open("GET", e.target.innerHTML + ".php", true);
            	httpRequest.send();
          	}
          	function gestisciResponse(e) {
            	if (e.target.readyState == XMLHttpRequest.DONE && e.target.status == 200) {
              		document.getElementById("zona_din").innerHTML = e.target.responseText;
            	}
          	}
    	</script--> 
    
    	<script>
    	var myform = document.getElementById("myform");
        var fd = new FormData(myform);
    	$('#ask').click(function() {
    		   $.ajax({
    			url: 'ask.php',
    			type: 'POST',
    			data: fd,
    			success: function(msg) {
    				eccccc
    				alert('Email Sent');
    			}               
    		});
    	});
    	</script>
    
    File ask.php:
    
    <html> 
        <head>
          <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
        </head>
        <body> 
            <?php
                $dbconn=pg_connect(" host="" port="" dbname=planets user="" password="" ")
                            or die("Could not connect: " . pg_last_error()); 
                if (!empty($_POST["loginButton"])){
                    echo "An error occurred.\n";
                    exit;
                }
                else {
                    $info = $_POST["info"];
                    $planet = $_POST["planet"];
                    $q="select ".$info." from planets where name=$1";
                    $result=pg_query_params($dbconn, $q, array($planet));
                    if (!$result) {
                        echo "An error occurred.\n";
                        exit;
                    }
                    else {
                        $row = pg_fetch_row($result);
                    }
                }
            ?>
    
            <div class="row">
                <?php echo $row[0]; ?>
            </div>
            
        </body>
    </html>
    
  • Re: Come usare variabile PHP all'esterno del codice

    Ciao,
    la tua pagina che apri in php sarà una API che richiamerai in ajax. Al termine della tua API restituirai un JSON o HTML, come ti è più comodo.

    Ti faccio due esempi veloci sperando di essere chiaro:

    HTML
    
    <select name="test" id="test">
                                <option value="01">TEST_1</option>
                                <option value="02">TEST_2</option>
                                <option value="03">TEST_3</option>
                            </select>
                            
    <div id="risultato"></div>
    
    PHP
    
    
    echo 'Il dato è arrivato '. $_POST['dato'];
    
    
    JQUERY/AJAX
    
    $(document).ready(function() {
        $('#test').change(function() {
        
        var dato = $("#test").val();
        
        $.ajax({
        		type: "POST",
                	url: "tuo_file.php",
                	data: {"dato": dato},
               	dataType: "html",
                	contentType: 'application/x-www-form-urlencoded',
                	timeout: 3000,
                	success: function(risultato){
                		$("#risultato").html(risultato);
                	},
                error: function(jqXHR, exception){
                	var msg = "";
                    if (jqXHR.status === 0) {
                        msg = "Nessuna connessione. Controllare la rete.";
                    } else if (jqXHR.status == 404) {
                        msg = "Pagina non trovata! [404].";
                    } else if (jqXHR.status == 500) {
                        msg = "Errore interno al server [500].";
                    } else if (exception === "parsererror") {
                        msg = "Richiesta di analisi JSON non riuscita.";
                    } else if (exception === "timeout") {
                        msg = "Chiamata fuori tempo massimo.";
                    } else if (exception === "abort") {
                        msg = "Richiesta AJAX abbortita.";
                    } else {
                        msg = "Errore non definito. " + jqXHR.responseText;
                    }
                    $("#risultato").html('<h3 style="color: red">'+msg+'</h3>');
                }
        });
        
              });
        });
    
    Se vuoi puoi anche utilizzare il change di un form. Inserisci la select nel form è ogni volta che c'è un change esegui la chiamata.

    Puoi anche impostare il presend e il complete della chiamata ajax per impostare una eventuale attesa (overlay).

    Ciao
  • Re: Come usare variabile PHP all'esterno del codice

    Ok credo di aver capito la logica della maggior parte del codice e ti ringrazio! Solo mi sfugge nel codice ajax da dove venga preso il risultato che viene stampato nella div #risultato
    Io vorrei che lì venisse stampato il risultato della query, quindi dopo aver mandato al server la richiesta con due valori questo mi restituirà un valore estratto dal database tramite query
    Non so se mi sono spiegata bene
  • Re: Come usare variabile PHP all'esterno del codice

    Ciao,
    il codice PHP restituisce una semplice stringa con echo. Ajax rimane in attesa per una massimo di 3 secondi aspettando la risposta del PHP, se ha risposta positiva è un "success" e ciò che restituisce echo lo espone nel div. Se va in timeout o altri problemi passa a "error" e restituisce l'errore esponendolo sempre nel div.

    Se vuoi visualizzare il dato che hai nel db devi prima eseguire una query ciclarla e alla fine di tutta l'api in php fai un echo del dato.

    Se utilizzassi il json devi fare un sempre un echo ma con json_encode e nel "dataType" di ajax devi inserire json. Per poi costruire l'html in jquery.

    Se devi esporre una tabella ti consiglio di dare una vista alla libreria datatable.

    Non dimenticare di inserire i controlli sia lato js che lato server. Io non lì ho messi... è solo per fare 1 esempio e farti capire.

    Se hai dubbi chiedi pure...

    Ciao
Devi accedere o registrarti per scrivere nel forum
7 risposte