Notice: Undefined index:

p.ghisolfi

Nuovo Utente
30 Mag 2013
9
0
0
Ciao a tutti,

sono nuovo da queste parti, io ho un problema che non riesco proprio a risolvere:

ho uno script che funziona perfettamente, a parte il fatto che se non inserisco nulla in un form, mi risponde con il messaggio: Notice: Undefined index: (cioè quando carico per la prima volta la pagina php, per poi inserire il valore per fare la query). Posto il codice completo:


HTML:
<body>
<div id="searchwrapper">
<center><form name="s" id="form" action="index.php?ricerca=ok" method="POST" id="search-form" class="searchbox">
     <div id="suggest">
      <input type="text" name="cerca" size="50" value="" id="country" onkeyup="suggest(this.value);" onblur="fill();" class="" autocomplete='off' placeholder='Ricerca...' />
	  <input type='submit' value='Cerca'>
      <div class="suggestionsBox" id="suggestions" style="display: none;"> <img src="arrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
        <div class="suggestionList" id="suggestionsList"> &nbsp; </div>
      </div>
   </div>
</form></center>
</div>
<center><br><br><br>----------------------------<br><br><br></center>
</body>
</html>


PHP:
<?php
$db_host = "localhost";
$db_user = "xxxx";
$db_password = "yyyy";
$db_name = "zzzz";
$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');
$ricerca = $_GET['ricerca'];
if ( $ricerca == 'ok' ) {
$cerca = $_POST['cerca'];
if ( $cerca == TRUE && $cerca != "" ) {
if ( strlen($cerca) >= 1 ) {
$cerca =  mysql_real_escape_string(stripslashes($cerca));
$query = "SELECT * FROM 1234 WHERE 5678 LIKE '$cerca'";
$risultato = mysql_query($query) or die (mysql_error());
$risposta = mysql_query($query) or die ("Utilizza termini più specifici!");
$dentro_la_query= mysql_fetch_assoc($risposta);
if ( $dentro_la_query == TRUE ) {
while($row= mysql_fetch_assoc($risultato)) {
$1 = $row['1'];
$2 = $row['2'];
$3 = $row['3'];
$4 = $row['4'];
$5 = $row['5'];
$6 = $row['6'];
$7 = $row['7'];
$8 = $row['8'];
$9 = $row['9'];
$10 = $row['10'];
$11 = $row['11'];
$immagine_1 = $row['immagine_1'];
$immagine_2 = $row['immagine_2'];
$indirizzo_1 = $row['indirizzo_1'];
echo "<center><table border='1' width='850' bordercolor='#000000'>
 <tr>
  <td width='350'>1: <b>$1</b><br></td>
  <td>2 : $2</td>
  <td>3: $3</td>
  <td>4: $pr</td>
  <td>5: </td>
  <td>$immagine_1</td>
 </tr>
 <tr>
  <td>6: $cap</td>
  <td>7: $6" . "-$7</td>
  <td>8: $6" . "-$8</td>
  </tr>
</table><br><br>----------------------------<br><br><br><br>";



}

} else {

echo "Nessun temine alla ricerca trovato";

}


} else {

echo "Devi inserire almeno 3 caratteri";

}

} else {

echo "Non hai compilato il modulo ricerca";

}

}

?>

HELP ME PLEASEEEEE!!!!

inoltre avrei anche il problema che riesco a risolvere lo script solo se in unica pagina, ho provato a dividere lo script in 2, un html e la parte php in cerca.php, ma nulla, mi risponde con la pagina cerca.php vuota....

Grazie per l'aiuto che mi riuscirete a dare...

P.
 

Allegati

  • Immagine.png
    Immagine.png
    7,9 KB · Visite: 374
  • Immagine.jpg
    Immagine.jpg
    12,7 KB · Visite: 443
Grazie per la risposta,

$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');
$ricerca = $_GET['ricerca'];
if ( $ricerca == 'ok' ) {

$cerca = $_POST['cerca'];

in questo punto...
 
io ho caricato i file su un server localhost, e mi dà l'errore, online no (server linux aruba), forse è dovuto al fatto che online è disabilitato il display_errors

P.
 
metti una if prima del $_post

Prova cosi :

PHP:
<?php
if ($_POST['cerca'] == null) {
				   ?>
    <script> 
        alert('Inserisci almeno 2 caratteri');  // vedi anche 1 non saprei...
        location.href='cerca.htm';
    </script>
 <?php
 } else  {
$cerca=$_POST['cerca'];
}
?>
 
ciao
correggi
HTML:
<input type='submit' value='Cerca'>
in
HTML:
<input type='submit' name="cerca" value='Cerca'>
stai attento anche alle maiuscole/minuscole
i nomi delle variabile in php sono casesensitive
 
ciao
intanto una cosa ho provato copy/paste il tuo form e il mio editor da errore sul tag <form
ci sono all'internp due definizioni di id togline una o id="form" o id="search-form"

poi per il name ho sbagliato io non mi ero accorto che l'input text si chiama cerca
 
ciao
prova a correggere così
PHP:
<?php
$db_host = "localhost";
$db_user = "xxxx";
$db_password = "yyyy";
$db_name = "zzzz";
$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');
if ( isset($_GET['ricerca']) &&  $_GET['ricerca']== 'ok' ) {
	if ( isset($_POST['cerca']) && $_POST['cerca'] != "" ) {
		$cerca = $_POST['cerca'];
		if ( strlen($cerca) >= 1 ) {
			$cerca =  mysql_real_escape_string(stripslashes($cerca));
			$query = "SELECT * FROM 1234 WHERE 5678 LIKE '$cerca'";
			$risultato = mysql_query($query) or die (mysql_error());
			$risposta = mysql_query($query) or die ("Utilizza termini più specifici!");
			$dentro_la_query= mysql_fetch_assoc($risposta);
			if ( mysql_num_rows($dentro_la_query) > 0 ) {//è meglio verificare il numero
				while($row= mysql_fetch_assoc($risultato)) {
					$1 = $row['1'];
					$2 = $row['2'];
					$3 = $row['3'];
					$4 = $row['4'];
					$5 = $row['5'];
					$6 = $row['6'];
					$7 = $row['7'];
					$8 = $row['8'];
					$9 = $row['9'];
					$10 = $row['10'];
					$11 = $row['11'];
					$immagine_1 = $row['immagine_1'];
					$immagine_2 = $row['immagine_2'];
					$indirizzo_1 = $row['indirizzo_1'];
					echo "<center><table border='1' width='850' bordercolor='#000000'>
 							<tr>
  							<td width='350'>1: <b>$1</b><br></td>
  							<td>2 : $2</td>
  							<td>3: $3</td>
  							<td>4: $pr</td>
  							<td>5: </td>
  							<td>$immagine_1</td>
 							</tr>
 							<tr>
  							<td>6: $cap</td>
 							 <td>7: $6" . "-$7</td>
  							<td>8: $6" . "-$8</td>
  							</tr>
							</table><br><br>----------------------------<br><br><br><br>";
				}
			} else {
				echo "Nessun temine alla ricerca trovato";
			}
		} else {
			echo "Devi inserire almeno 3 caratteri";
		}
	} else {
		echo "Non hai compilato il modulo ricerca";
	}
}
?>
poi indenta il codice per facilitare la lettura e abbandona le query MySQL e passa alla classe PDO o a MySQLi
 
Grazie infinite, provo nel weekend, poi ti faccio sapere

P.


ciao
prova a correggere così
PHP:
<?php
$db_host = "localhost";
$db_user = "xxxx";
$db_password = "yyyy";
$db_name = "zzzz";
$db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');
mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');
if ( isset($_GET['ricerca']) &&  $_GET['ricerca']== 'ok' ) {
	if ( isset($_POST['cerca']) && $_POST['cerca'] != "" ) {
		$cerca = $_POST['cerca'];
		if ( strlen($cerca) >= 1 ) {
			$cerca =  mysql_real_escape_string(stripslashes($cerca));
			$query = "SELECT * FROM 1234 WHERE 5678 LIKE '$cerca'";
			$risultato = mysql_query($query) or die (mysql_error());
			$risposta = mysql_query($query) or die ("Utilizza termini più specifici!");
			$dentro_la_query= mysql_fetch_assoc($risposta);
			if ( mysql_num_rows($dentro_la_query) > 0 ) {//è meglio verificare il numero
				while($row= mysql_fetch_assoc($risultato)) {
					$1 = $row['1'];
					$2 = $row['2'];
					$3 = $row['3'];
					$4 = $row['4'];
					$5 = $row['5'];
					$6 = $row['6'];
					$7 = $row['7'];
					$8 = $row['8'];
					$9 = $row['9'];
					$10 = $row['10'];
					$11 = $row['11'];
					$immagine_1 = $row['immagine_1'];
					$immagine_2 = $row['immagine_2'];
					$indirizzo_1 = $row['indirizzo_1'];
					echo "<center><table border='1' width='850' bordercolor='#000000'>
 							<tr>
  							<td width='350'>1: <b>$1</b><br></td>
  							<td>2 : $2</td>
  							<td>3: $3</td>
  							<td>4: $pr</td>
  							<td>5: </td>
  							<td>$immagine_1</td>
 							</tr>
 							<tr>
  							<td>6: $cap</td>
 							 <td>7: $6" . "-$7</td>
  							<td>8: $6" . "-$8</td>
  							</tr>
							</table><br><br>----------------------------<br><br><br><br>";
				}
			} else {
				echo "Nessun temine alla ricerca trovato";
			}
		} else {
			echo "Devi inserire almeno 3 caratteri";
		}
	} else {
		echo "Non hai compilato il modulo ricerca";
	}
}
?>
poi indenta il codice per facilitare la lettura e abbandona le query MySQL e passa alla classe PDO o a MySQLi
 
Apparte la gran confusione di codice... Non c'è bisogno che in una if controlli con TRUE... Basta scrivere if($var) se è TRUE prosegue...
Comunque nella query il like si esegue con %
LIKE %'".$variabile.'"%


Ciao, stesso errore...

ma come riesco a separare le pagine (html o php, con risultato su un'altra pagina?

grazie infinite..

P.
 

Discussioni simili