Problema visualizzazione dati dopo GET

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Ciao a tutti voglio mandare dei dati da arduino alla mia pagina .php nel mio server.
ho la tabella monitoraggio così composta:
id sensore
nome sensore
temperatura sensore
da arduino mando con metodo GET i dati: id, nome e temperatura alla pagina index.php
faccio tutte le query che mi servono e vado a stampare a video i vari valori prelevati
solo che i vari valori non vengono stampati!
Riesco a visualizzarli correttamente solo inserendo questa url (nel mio browser): nomeserver:porta/…/index.php?nome=primoSensore&temperatura=23.12
quindi se ho ben capito devo fare una reindirizzamento a quella pagina php e ho pensato di farlo con
la funzione header() solo che il problema che si verrebbe a creare facendo questo reindirizzamento è
che il valore di temperatura (23.12) non è costante ma varia ogni volta che arduino manderà la lettura
alla mia pagina .php (dalla quale poi la metto nel mio database).
Come posso fare? Oppure non è una buona idea quella del reindirizzamento?
Grazie
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Sto cercando di risolvere il problema.. e praticamente ho ridotto all'osso il tutto..
scrivendo questa cosa banale:
PHP:
<?php
session_start();
include('core4.php');


	$name=$_GET['name'];
	$_SESSION['name'] = $name;
	echo "name è: ".$_SESSION['name'];
?>
Non mi stampa nulla.. cioè vedo solo:
name é:
e basta... non capisco perché visto che l'invio per certo è avvenuto!!
Aiuto! :(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
metti
PHP:
var_dump($_REQUEST);
a inizio pagina dopo il tag <?php, se ti stampa array empty non è arriavato niente
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Mi compare questo risultato:
array(2) { ["PHPSESSID"]=> string(32) "0e01318231b187ea8d8ab0dc87e6968c" ["SQLiteManager_currentLangue"]=> string(1) "6" } username è:
quindi comunque continua a non stamparmi nulla però sembrerebbe che nell'array c'è qualcosa o sbaglio?
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Anche perché..pensandoci.. una cosa è certa: all'interno del database mysql i dati che mando vengono memorizzati nei campi giusti... è un problema di "stampa a video"!! Ma non capisco proprio perché! Non è che è per via di alcune impostazioni da settare?! (la butto lì da ignorante...)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ma ha stampato SESSION non REQUEST cmq non ci sono i dati che ti servono devi ricontrollare la pagina chiamante
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
e non so perchè..a dir la verità non so a che serve quella funzione.. comunque ho tolto anche il richiamo a core4.php
e questo è tutto il codice:
PHP:
<?php
var_dump($_REQUEST);  

$db_name = '--';

// mi connetto al MySql Server
$myconn = mysql_connect(' ', ' ', ' ') or die("Connessione non riuscita: " . mysql_error());

// seleziono il database
mysql_select_db($db_name, $myconn) or die('Errore...');
$username=$_GET['username'];
 echo "username è: ".$_GET['username'];
?>
ho tolto appositamente nome database password ecc..
non so che fare onestamente! :(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
tu dici di mandare i dati tramite arduino, io non so come funziona, come fai ?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
più o meno è questo quello che stai facendo ? il software di arduino richiama la pagina che dovrebbe aggiornare i dati sul db quindi se la chiami senza arduino i dati non arrivano. Per visulaizzare i dati aggiornati ti basta fare una SELECT sul database che aggiorna arduino sempre che le query di update funzionino. Ti converrebbe mettere degli error_log() nel file e verificarli nel file php_errors.log.
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Sì praticamente è quella che mi hai linkato la procedura, solo che adesso stavo utilizzando questo sito qui: http://requestmaker.com
che simula l'invio dei dati all'url desiderata..
Non ho capito cosa devo fare con la SELECT :)
Dove si trova il file php_errors.log?
Grazie mille ancora
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
E' assurdo.. ho creato un form dove immetto manualmente i valori che mando e prelevo con metodo GET e il tutto viene stampato, riprova a inviare la richiesta da quel sito lì e non me li stampa più!!!
:incazz2:
però i valori nel database (a prescindere dal fatto che stampa a video o non stampa) vengono inseriti!
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
sono due procedure distinte
1 arduino o il link che hai postato richiamano la pagina che si occupa di inserire i dati e basta, non deve stampare nulla
2 ti serve una pagina che ogni volta che la ricarichi mostra i dati aggiornati, una semplice select come ti dicevo
PHP:
<?php

$sql = new mysqli($host, $user, $password, $database);

$query = "SELECT * FROM tabella";

$result = $sql->query($query);

// e tutto quello che serve per mostrare i risutlati della query
se ho capito bene ..
ps:
il file di log lo trovi sul pannello di amministrazione del sito , almeno io con aruba lo vedo li, in locale invece lo ho a questo indirizzo C:\wamp\logs
 
Ultima modifica:

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Probabilmente qualcosa concettualmente non mi è chiara..io faccio questo ragionamento:
1.Invio richiesta http da sito o arduino a pagina.php
2.nel file pagina.php scrivo:
//dati di connessione
PHP:
if(isset($_GET['username'])) {
$username=$_GET['username'];
$password=$_GET['password'];

$sql1 = "INSERT INTO users (username, password)
VALUES ('$username', '$password')";
} 
//vengono inseriti correttamente nel database ma facendo un echo sulle variabili $username e $password non
//mi stampa nulla!!!!
per quanto riguarda la select che mi hai detto se la faccio ok.. mi stampa TUTTI i valori username presenti nella tabella (anche quello che ho inserito per ultimo! ma a me serve stampare a video SOLO quell'ultimo username inserito!!!Come posso fare???
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Ah a parte che ora ho messo il controllo sulla query e mi restituisce un errore (sulla query di inserimento) ma all'atto pratico comunque i valori vengono inseriti!!! Questo è il pezzo di codice dove mi da l'errore:
PHP:
if(isset($_GET['username'])) {

$username=$_GET['username'];
$password=$_GET['password'];

$sql1 = "INSERT INTO users (username, password)
VALUES ('$username', '$password')";
 
if ($conn->query($sql1) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql1 . "<br>" . $conn->error;
}

        echo "L'Username è: " . $username. "<br>";
		}
dopo questa parte ho aggiunto la SELECT che mi stampa correttamente tutto (anche l'ultimo valore inserito):
PHP:
$sql = "SELECT username FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "L'Username è: " . $row["username"]. "<br>";
    }
} else {
    echo "0 results";
}


$conn->close();
?>
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Se invece la parentesi graffa dell'if(isset($_GET...))
la chiudo prima della query INSERT ($sql1)cioè qui:
PHP:
if(isset($_GET['username'])) {

$username=$_GET['username'];
$password=$_GET['password'];
	}     <-----
$sql1 = "INSERT INTO users (username, password)
VALUES ('$username', '$password')";
a video l'errore sulla query non me lo dà più (New record created successfully) però nei 2 eco di stampa dell'username non mi compare nulla e anche nella SELECT finale sembra che abbia inserito un campo vuoto...
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Invece se escludo l'if isset.....
la query va a buon fine, l'username esterno alla select non mi compare e nella stampa della tabella dovuta alla SELECT
mi compaiono sempre tutti gli username presenti nella tabella, quello nuovo che ho mandato + 1 altro campo vuoto...
o_O cioè sembrerebbe che ogni volta che mando la richiesta da quel sito mi mandi 2 richieste, una contenente i dati che effettivamente mando e 1 altra con valori tutti vuoti e quindi è per questo che poi mi trovo la $_GET[] vuota?
O sbaglio? Nel caso sia questo il problema (verificherò se accade anche con arduino....) come posso risolvere?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
non dovrebbe inviare due volte i dati comunque prima di fare la insert puoi verificare che siano valorizzati con il metodo empty()
PHP:
if(isset($_GET['username']) && !empty($_GET['username'])) {
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
cioè... sembra sia impossibile fare 1 echo di questa variabile $username=$_GET['username'];
utilizzando sito http request maker..
bah..
cioè echo funziona solo dopo la SELECT che però mi stampa tutti i valori username della tabella e non quello acquisito..boh
 

nigiu

Nuovo Utente
10 Feb 2016
27
0
1
Ultimo tentativo che ho fatto mi fa capire che alla mia pagina .php non gli arriva un bel niente (sto facendo le prove sempre dal sito proprio perché non voglio inserire arduino.. insomma per esclusione)
ho scritto 2 pagine .php la prima è di ricezione:
PHP:
<?php
session_start();
$host = '';
$db_name = '';
$db_username = '';
$db_password = '';
		$connection = mysql_connect($host, $db_username, $db_password);
if (!$connection) {
	    	die('MySQL ERROr: ' . mysql_error());
		}
		
		mysql_select_db($db_name) or die( 'MySQL ERROR: '. mysql_error() );
		   	
if(isset($_GET['username']) && !empty($_GET['username'])) {  

	$user=$_GET["username"];
	$pass=$_GET["password"];
$query = "INSERT INTO `users` (`username`, `password`) 
		VALUES ('".$user."','".$pass."')"; 
   	
   	mysql_query($query,$connection);
}
	if(mysql_num_rows(mysql_query("SELECT * FROM users WHERE username LIKE '$user' AND password='$pass'")) > 0) {
			$username = mysql_result(mysql_query("SELECT username FROM users WHERE username LIKE '$user'"), 0);
			$userid = mysql_result(mysql_query("SELECT id FROM users WHERE username LIKE '$user'"), 0);
			$_SESSION['id']=$userid;
			$_SESSION['username']=$username;

   }else echo 'non riesco a prelevare';

header("Location: pagina2.php");
?>
e poi una semplice pagina 2:
PHP:
<?php
session_start();
	$host = '';
$db_name = '';
$db_username = '';
$db_password = '';
		$connection = mysql_connect($host, $db_username, $db_password);
if (!$connection) {
	    	die('MySQL ERROr: ' . mysql_error());
		}
		
		mysql_select_db($db_name) or die( 'MySQL ERROR: '. mysql_error() );
					$userid=$_SESSION['id'];
					$username=$_SESSION['username'];

					echo 'id è:' .$userid;
					echo 'user è:' .$username;
	mysql_close($connection);

session_destroy();
	   	
	?>
Praticamente nel database ho inserito una riga che ha id 78 con campi di password e username NULLI, vado sul sito e invio la richiesta tramite l'URL: indirizzoserver: 80/...../pagina1.php?username=Go&password=pippo
Dove Go e pippo sono valori presenti nel mio database ma corrispondo all'id 82.
digito nel browser la mia pagina pagina1.php...e (ovviamente) mi rimanda alla pagina2.php nella quale alla voce username c'è uno spazio vuoto e alla voce id invece compare il numero 78 guarda caso alla riga corrispondente ai valori NULLI di user e password.
Quindi ho dedotto che o non arriva proprio la richiesta oppure il metodo GET non funziona...
come posso fare?! :(