Queste variabili globali... Uff...

Salve ragazzi!   :buck:

Ho un problema che proprio non riesco a risolvere...

Ho due pagine, una HTML e una PHP: un form contenuto nella pagina HTML invia delle variabili alla pagina PHP che ha in compito di estrarre dei dati dal DB.

PROBLEMA: $_POST non porta alcuna variabile con sè e le variabili nella pagina PHP che devono assumere i valori provenienti dal form, mi generano un errore in quanto non definite.

Premetto che ho controllato la presenza di un qualsiasi errore di scrittura, etc... nulla. E, trà l'altro, ho anche provato modificando "register_globals" portandolo su "On", ma nulla.

Qualcuno saprebbe aiutarmi?

Grazie in anticipo!

inviato 5 anni fa
Aizen
X 0 X

Potresti riportare il codice dei due script?

 :bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni!

L'html è un semplice form che utilizza dei select con metodo POST e action="ricerca.php", qui non credo ci siano problemi.

Ti posto il codice di ricerca.php:

<?php
 
require_once('Connections/lux.php');
mysql_select_db($database_lux, $lux);

if (isset($_POST['sezione'])){
   $sezione = $_POST['sezione'];
}
if (isset($_POST['provincia'])) {
   $provincia = $_POST['provincia'];
}
if (isset($_POST['catprezzi'])) {
   $catprezzo = $_POST['catprezzi'];
}

if(get_magic_quotes_gpc()) {
   $sezione=stripslashes($sezione);
   $provincia=stripslashes($provincia);
   $catprezzo=stripslashes($catprezzo);
}

$sezione= function_exists("mysql_real_escape_string") ? mysql_real_escape_string($sezione) :          mysql_escape_string($sezione);

$provincia=function_exists("mysql_real_escape_string") ? mysql_real_escape_string($provincia) :    
mysql_escape_string($provincia);

$catprezzo=function_exists("mysql_real_escape_string") ? mysql_real_escape_string($catprezzo) :    
mysql_escape_string($catprezzo);

$query="SELECT titolo,descrizione FROM immobili WHERE sezione='$sezione' AND provincia='$provincia' AND catprezzo='$catprezzo'";

$res=mysql_query($query);
if(!$res) {
   die("Errore nella query: " . mysql_error());
}
?>

<?php

while($row=mysql_fetch_array($res)){
   echo $row['titolo'] . "<br />";
   echo $row['descrizione'] . "<br />";
} 
?>

<?php 
mysql_free_result($res);
?>

Pensi che abbia sbagliato io qualcosa?

Il punto è che se inizializzo delle variabili ad un valore predefinito, senza usare $_POST['   '] lo script funziona correttamente...

Grazie per la tua attenzione..

risposto 5 anni fa
Aizen
X 0 X

nel tag form hai specificato l'attributo method="post"?

 :bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Si si nel form é tutto corretto, il method="post" é presente...

risposto 5 anni fa
Aizen
X 0 X

Cosa ottieni se in ricerca.php metti solo una istruzione print_r($_POST) ?

 :bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Giusto, appena sono in casa provo e posto il risultato!   O0

risposto 5 anni fa
Aizen
X 0 X

Ok ho provato....

print_r($_POST) mi restituisce un array completamente vuoto... Appunto $_POST non riceve nulla dal form... Ma che cosa strana!

risposto 5 anni fa
Aizen
X 0 X

e invece con print_r($GLOBALS) ?

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

OK ho ottenuto un risultato... Dal form sono partiti tre select verso la pagina di prova php: Il primo di nome "sezioni" con valore "Vendita, il secondo di nome "provincia" con  valore "Pescara" ed infine il terzo di nome "catprezzi" con valore "Da 200.000 a 300.000".

Il risultato di print_r($GLOBALS) è il seguente:

Array ( [GLOBALS] => Array *RECURSION* [HTTP_RAW_POST_DATA] => sezione=Vendita provincia=Pescara catprezzi=Da 200.000 a 300.000 [_POST] => Array ( ) [_GET] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) )

Quindi arrivano le variabili... ma allora perchè il $_POST non le prende???  :( :'(

risposto 5 anni fa
Aizen
X 0 X

Con method="get", recuperando i dati con $_GET tutto funziona correttamente! Come mai?  :)

risposto 5 anni fa
Aizen
X 0 X

riporta lo script html ed il php.ini

 :bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Il form non è proprio in html, ma anch'esso con qualche riga php. form.php :

<?php

 require_once('Connections/lux.php'); 
mysql_select_db($database_lux, $lux);
$query_province = "SELECT * FROM provincia";
$province = mysql_query($query_province, $lux) or die(mysql_error());
$row_province = mysql_fetch_assoc($province);
$totalRows_province = mysql_num_rows($province);

mysql_select_db($database_lux, $lux);
$query_catprezzi = "SELECT * FROM catprezzo";
$catprezzi = mysql_query($query_catprezzi, $lux) or die(mysql_error());
$row_catprezzi = mysql_fetch_assoc($catprezzi);
$totalRows_catprezzi = mysql_num_rows($catprezzi);

mysql_select_db($database_lux, $lux);
$query_sezioni = "SELECT * FROM sezioni";
$sezioni = mysql_query($query_sezioni, $lux) or die(mysql_error());
$row_sezioni = mysql_fetch_assoc($sezioni);
$totalRows_sezioni = mysql_num_rows($sezioni);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ricerca Immobile</title>
</head>

<body>

<form action="ricerca.php"  method="post" enctype="text/plain" name="ricerca">
  <select name="sezione">
    <?php
do {  
?>
    <option value="<?php echo $row_sezioni['sezione']?>"><?php echo $row_sezioni['sezione']?></option>
    <?php
} while ($row_sezioni = mysql_fetch_assoc($sezioni));
  $rows = mysql_num_rows($sezioni);
  if($rows > 0) {
      mysql_data_seek($sezioni, 0);
     $row_sezioni = mysql_fetch_assoc($sezioni);
  }
?>
  </select>
  <select name="provincia">
    <?php
do {  
?>
    <option value="<?php echo $row_province['provincia']?>"><?php echo $row_province['provincia']?></option>
    <?php
} while ($row_province = mysql_fetch_assoc($province));
  $rows = mysql_num_rows($province);
  if($rows > 0) {
      mysql_data_seek($province, 0);
     $row_province = mysql_fetch_assoc($province);
  }
?>
  </select>
  <select name="catprezzi">
    <?php
do {  
?>
    <option value="<?php echo $row_catprezzi['catprezzo']?>"><?php echo $row_catprezzi['catprezzo']?></option>
    <?php
} while ($row_catprezzi = mysql_fetch_assoc($catprezzi));
  $rows = mysql_num_rows($catprezzi);
  if($rows > 0) {
      mysql_data_seek($catprezzi, 0);
     $row_catprezzi = mysql_fetch_assoc($catprezzi);
  }
?>
  </select>
  <input type="submit" value="Cerca" />
</form>

</body>
</html>
<?php
mysql_free_result($province);

mysql_free_result($catprezzi);

mysql_free_result($sezioni);
?>

come faccio a postare il php.ini? E' immenso, sono più di 20.000 caratteri...  :-\

risposto 5 anni fa
Aizen
X 0 X
come faccio a postare il php.ini? E' immenso, sono più di 20.000 caratteri...  :-\

Hai modo di leggere la cartella con bash?

risposto 5 anni fa
Mario Santagiuliana
X 0 X
Hai modo di leggere la cartella con bash?

ehm...  :o ovvero?

risposto 5 anni fa
Aizen
X 0 X

Il problema è qui:

<form action="ricerca.php"  method="post" enctype="text/plain" name="ricerca">

elimina la parte in rosso o sostituiscila con:

enctype="application/x-www-form-urlencoded"

se invece devi effettuare l'upload di un file allora usa:

enctype="multipart/form-data"

 :bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

Non sei su linux immagino...non so aiutarti...altrimenti ti consigliavo il comando grep.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Ottimo funziona!!! grazie Gianni... Per curiosità, ma da dove è saltato fuori quell' enctype? Ma come mai per ricerca.php non và bene text/plain? Scusa, ma sono molto curioso  :)

risposto 5 anni fa
Aizen
X 0 X

Il browser invia al server i dati inseriti nel form secondo una codifica che li trasforma in una sequenza di caratteri. La codifica utilizzata di default è detta application/x-www-form-urlencoded

Questa sequenza arriva al server che ricompone i dati trasmessi nella forma di coppie chiave => valore da inserire nell'array $_POST

Ovviamente il server presume che i dati siano stati codificati in un certo modo, ovvero con la codifica application/x-www-form-urlencoded o al massimo con la codifica multipart/form-data (utilizzata per inviare attraverso il form anche dei file)

Se non vengono adottate queste codifiche dal browser i dati arriveranno al server in un formato che non ne permette la ricomposizione in un array

 :bye:

risposto 5 anni fa
Gianni Tomasicchio
X 0 X

bene, ho capito!

Molte grazie per l'aiuto e per la piccola lezione  ;)

A presto!  :bye:

risposto 5 anni fa
Aizen
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda