Ricerca nel DB con radiobutton + riempimento select

PHP:
switch ($_POST['Radio_Ricerca']) {
				case "Codice": $wh = " UPPER(CODICE) LIKE '$stringa%'";
				break;
				case "Categoria": $wh = " UPPER(CATEGORIA) LIKE '%$stringa%'";
				break;
				case "Autore": $wh = " UPPER(AUTORE) LIKE '%$stringa%'";
				break;
				case "Titolo": $wh = " UPPER(TITOLO) LIKE '%$stringa%'";
				break;
				case "Casa_ED": $wh = " UPPER(CASA_EDITRICE) LIKE '%$stringa%'";
				break;
				case "Anno": $wh = " UPPER(ANNO) LIKE '%$stringa%'";
				break;
				case "Tutto": $wh = "UPPER(CODICE) LIKE '$%stringa%' OR UPPER(AUTORE) LIKE '%$stringa%' OR UPPER(TITOLO) LIKE '%$stringa%' OR UPPER(CASA_EDITRICE) LIKE '%$stringa%' OR UPPER(ANNO)  LIKE '%$stringa%'";
				default: $wh = " UPPER(CODICE) LIKE '$stringa%'";
				break;			
			}

Il break dopo il default c'è... :S
 
ciao
ho fatto una prova (sulla stessa pag per fare prima, ma su due pag è lo stesso)
inserito "pinco" nella stringa di ricerca e NON ho selezionato alcun tipo di ricerca
PHP:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>
<body>
<?php
if(isset($_POST['Avvia_ricerca'])){
	$stringa=$_POST['Text_Search'];
	switch ($_POST['Radio_Ricerca']) {
                case "Codice": $wh = " UPPER(CODICE) LIKE '$stringa%'";
                break;
                case "Categoria": $wh = " UPPER(CATEGORIA) LIKE '%$stringa%'";
                break;
                case "Autore": $wh = " UPPER(AUTORE) LIKE '%$stringa%'";
                break;
                case "Titolo": $wh = " UPPER(TITOLO) LIKE '%$stringa%'";
                break;
                case "Casa_ED": $wh = " UPPER(CASA_EDITRICE) LIKE '%$stringa%'";
                break;
                case "Anno": $wh = " UPPER(ANNO) LIKE '%$stringa%'";
                break;
                case "Tutto": $wh = "UPPER(CODICE) LIKE '$%stringa%' OR UPPER(AUTORE) LIKE '%$stringa%' OR UPPER(TITOLO) LIKE '%$stringa%' OR UPPER(CASA_EDITRICE) LIKE '%$stringa%' OR UPPER(ANNO)  LIKE '%$stringa%'";
				break;
                default: $wh = " UPPER(CODICE) LIKE '$stringa%'";
                break;            
            } 
	//verifica dell switch
	echo "$wh <br>";
}
?>
<form id="Ricerca_Libri" name="Ricerca_Libri" method="post" action="#">
  <h3>Cerca per</h3>
  <div id="tipo_ricerca">
    <label>
      <input type="radio" name="Radio_Ricerca" value="Codice" id="Radio_Ricerca_0" />
      Codice</label>
      <label>
      <input type="radio" name="Radio_Ricerca" value="Categoria" id="Radio_Ricerca_1" />
      Categoria</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Autore" id="Radio_Ricerca_2" />
      Autore</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Titolo" id="Radio_Ricerca_3" />
      Titolo</label>
      <label>
      <input type="radio" name="Radio_Ricerca" value="Casa_ED" id="Radio_Ricerca_4" />
      Casa Editrice</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Anno" id="Radio_Ricerca_5" />
      Anno</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Tutto" id="Radio_Ricerca_6" />
      Tutto</label>
  </div>
    <div id="Search">
      <p>
          <input type="text" name="Text_Search" id="Text_Search" /> <input type="submit" name="Avvia_ricerca" value="Ricerca" />
      </p>
    </div>
</form>
</body>
</html>

uotput
UPPER(CODICE) LIKE 'pinco%'
risulta come deve risultare e non l'errore che dici tu (undefinuted...)
verifica di aver scritto tutto giusto
 
Non mi sono spiegato, forse lo screen è più chiaro.
Io faccio la ricerca, senza alcuna categoria settata.
Cerco "A" e avvio la ricerca.
Nella pagina mi si caricano i risultati, perché il default funziona,
ma mi appare anche quell'errore, così:

screen.png

Qui la ricerca è già stata eseguita. Come vedi carica i risultati correttamente, ma mi appare quella scritta lì...
 
ciao
non capisco, posta il codice della pagina ricerca.php (tralascia i css) io ho usato il codice che ti avevo postato e provando non da quell'errore
 
PHP:
session_start()
//dati di connessione

<body>
<div id="container">
<div id="header">
<h1 class="title">BIBLIOTECA</h1>
<h2>BIBLIOTECA</h2>
</div>
<div id="contenuto">
<div id="menu">
<ul>
  <li><a href="ricerca.php">Ricerca</a></li>
  <li><a href="aggiungi_nuovo.php">Aggiungi Nuovo</a></li>  
</ul>
</div>
<p></p>
<br />
<hr />
<?php
	if(isset($_SESSION['delconf'])) {
		$delconf = unserialize($_SESSION['delconf']);
		echo "<div id=\"conferma\"> <p>";
		echo $delconf;
		echo "</p></div>";
	} else {
		$delconf = '';
	}
?>
<form id="Ricerca_Libri" name="Ricerca_Libri" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <h3>Cerca per</h3>
  <div id="tipo_ricerca">
    <label>
      <input type="radio" name="Radio_Ricerca" value="Codice" id="Radio_Ricerca_0" />
      Codice</label>
      <label>
      <input type="radio" name="Radio_Ricerca" value="Categoria" id="Radio_Ricerca_1" />
      Categoria</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Autore" id="Radio_Ricerca_2" />
      Autore</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Titolo" id="Radio_Ricerca_3" />
      Titolo</label>
      <label>
      <input type="radio" name="Radio_Ricerca" value="Casa_ED" id="Radio_Ricerca_4" />
      Casa Editrice</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Anno" id="Radio_Ricerca_5" />
      Anno</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Tutto" id="Radio_Ricerca_6" />
      Tutto</label>
  </div>
  <div id="Search">
      <p>
          <input type="text" name="Text_Search" id="Text_Search" /> <input type="submit" name="Avvia_ricerca" value="Ricerca" />
      </p>
    </div>
    </form>
  <?php
	if(isset($_POST['Avvia_ricerca']) && $_POST['Avvia_ricerca'] == "Ricerca") {
		if(trim($_POST['Text_Search']) != "") {
		$stringa = strtoupper($_POST['Text_Search']);
		} else {
			echo "<h2>Ops!</h2>";
			echo "<h3>Non hai inserito nessuna voce da cercare!</h3>";
			echo "<meta http-equiv='Refresh' content='5; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		}
					
		switch ($_POST['Radio_Ricerca']) {
				case "Codice": $wh = " UPPER(CODICE) LIKE '$stringa%'";
				break;
				case "Categoria": $wh = " UPPER(CATEGORIA) LIKE '%$stringa%'";
				break;
				case "Autore": $wh = " UPPER(AUTORE) LIKE '%$stringa%'";
				break;
				case "Titolo": $wh = " UPPER(TITOLO) LIKE '%$stringa%'";
				break;
				case "Casa_ED": $wh = " UPPER(CASA_EDITRICE) LIKE '%$stringa%'";
				break;
				case "Anno": $wh = " UPPER(ANNO) LIKE '%$stringa%'";
				break;
				case "Tutto": $wh = "UPPER(CODICE) LIKE '$%stringa%' OR UPPER(AUTORE) LIKE '%$stringa%' OR UPPER(TITOLO) LIKE '%$stringa%' OR UPPER(CASA_EDITRICE) LIKE '%$stringa%' OR UPPER(ANNO)  LIKE '%$stringa%'";
				break;
				default: $wh = " UPPER(CODICE) LIKE '$stringa%'";
				break;			
			}
				
				$query = "SELECT * FROM elenco_libri WHERE $wh ORDER BY AUTORE, TITOLO";
				
				$q = mysql_query($query);
				
				if (mysql_num_rows($q) > 0) {
				
				?>
    <div id="ris_search">
    <form name="form_2" action="dettagli_libro.php" method="post">    
        <select name="Risultati_Ricerca" id="Risultati_Ricerca" size="15">
        <?php
                while ($tempbox = mysql_fetch_array($q)){
                $code = ($tempbox['CODICE']);
                $category = ($tempbox['CATEGORIA']);
                $author = ($tempbox['AUTORE']);
                $title = ($tempbox['TITOLO']);
                $publishing = ($tempbox['CASA_EDITRICE']);
                $pubyear = ($tempbox['ANNO']);
                $pubplace = ($tempbox['LUOGO']);
		$loan = ($tempbox['PRESTITO']);
				
				echo "<option value=\"$code\" ondblclick=\"this.form.submit()\">$author: $title</option>";
				}
                
        ?>
        </select>
    </form>

        <?php 
		
            } else {
				echo "<h2>Ops!</h2>";
				echo "<h3>Non ci sono testi che corrispondono alla tua ricerca!</h3>";
				echo "<h3>Cambia i criteri di ricerca.</h3>";
				echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
            }
        }
        ?>
</div>
</div>
</body>

Questa è tutta la pagina di ricerca
 
ciao
prova a fare questa modifica, anche se comunque non paisco perchè ti dia quell'errore
PHP:
<?php
session_start(); //e il php? ricordati prima non deve esserci nulla
//dati di connessione immagino che questi tu li abbia messi
?>
<body>
<div id="container"><!--ti sei dimenticato di chiuderlo penso alla fine -->
<div id="header">
<h1 class="title">BIBLIOTECA</h1>
<h2>BIBLIOTECA</h2>
</div>
<div id="contenuto">
<div id="menu">
<ul>
  <li><a href="ricerca.php">Ricerca</a></li>
  <li><a href="aggiungi_nuovo.php">Aggiungi Nuovo</a></li>  
</ul>
</div>
<p></p>
<br />
<hr />
<?php
if(isset($_SESSION['delconf'])) {
	$delconf = unserialize($_SESSION['delconf']);//?? se il valore della sessione e serializzato, unserializzando $delconf diventa un arrai
	echo "<div id=\"conferma\"> <p>";
	echo $delconf;//quindi non puoi usare l'echo $delconf;
	echo "</p></div>";
} else {
	$delconf = '';
}
?>
<form id="Ricerca_Libri" name="Ricerca_Libri" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <h3>Cerca per</h3>
  <div id="tipo_ricerca">
    <label>
      <input type="radio" name="Radio_Ricerca" value="Codice" id="Radio_Ricerca_0" />
      Codice</label>
      <label>
      <input type="radio" name="Radio_Ricerca" value="Categoria" id="Radio_Ricerca_1" />
      Categoria</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Autore" id="Radio_Ricerca_2" />
      Autore</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Titolo" id="Radio_Ricerca_3" />
      Titolo</label>
      <label>
      <input type="radio" name="Radio_Ricerca" value="Casa_ED" id="Radio_Ricerca_4" />
      Casa Editrice</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Anno" id="Radio_Ricerca_5" />
      Anno</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Tutto" id="Radio_Ricerca_6" />
      Tutto</label>
  </div>
  <div id="Search">
      <p>
          <input type="text" name="Text_Search" id="Text_Search" /> <input type="submit" name="Avvia_ricerca" value="Ricerca" />
      </p>
    </div>
    </form>
<?php
if(isset($_POST['Avvia_ricerca']) && $_POST['Avvia_ricerca'] == "Ricerca") {
	//prova a mettere lelse in fondo
	if(trim($_POST['Text_Search']) != "") {
		$stringa = strtoupper($_POST['Text_Search']);
        switch ($_POST['Radio_Ricerca']) {
			case "Codice": $wh = " UPPER(CODICE) LIKE '$stringa%'";
			break;
			case "Categoria": $wh = " UPPER(CATEGORIA) LIKE '%$stringa%'";
			break;
			case "Autore": $wh = " UPPER(AUTORE) LIKE '%$stringa%'";
			break;
			case "Titolo": $wh = " UPPER(TITOLO) LIKE '%$stringa%'";
			break;
			case "Casa_ED": $wh = " UPPER(CASA_EDITRICE) LIKE '%$stringa%'";
			break;
			case "Anno": $wh = " UPPER(ANNO) LIKE '%$stringa%'";
			break;
			case "Tutto": $wh = "UPPER(CODICE) LIKE '$%stringa%' OR UPPER(AUTORE) LIKE '%$stringa%' OR UPPER(TITOLO) LIKE '%$stringa%' OR UPPER(CASA_EDITRICE) LIKE '%$stringa%' OR UPPER(ANNO)  LIKE '%$stringa%'";
			break;
			default: $wh = " UPPER(CODICE) LIKE '$stringa%'";
			break;            
		}//fineswitch
            $query = "SELECT * FROM elenco_libri WHERE $wh ORDER BY AUTORE, TITOLO";
			$q = mysql_query($query);
			if (mysql_num_rows($q) > 0) {
?>
				<div id="ris_search">
				<form name="form_2" action="dettagli_libro.php" method="post">    
				<select name="Risultati_Ricerca" id="Risultati_Ricerca" size="15">
<?php
				while ($tempbox = mysql_fetch_array($q)){
                	$code = ($tempbox['CODICE']);
                	$category = ($tempbox['CATEGORIA']);
                	$author = ($tempbox['AUTORE']);
                	$title = ($tempbox['TITOLO']);
                	$publishing = ($tempbox['CASA_EDITRICE']);
                	$pubyear = ($tempbox['ANNO']);
                	$pubplace = ($tempbox['LUOGO']);
        			$loan = ($tempbox['PRESTITO']);
                	echo "<option value=\"$code\" ondblclick=\"this.form.submit()\">$author: $title</option>";
				}//fine while         
?>
				</select>
				</form>
<?php 
			} else {
                echo "<h2>Ops!</h2>";
                echo "<h3>Non ci sono testi che corrispondono alla tua ricerca!</h3>";
                echo "<h3>Cambia i criteri di ricerca.</h3>";
                echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
            }//fine if/else esiste
	} else {
		echo "<h2>Ops!</h2>";
		echo "<h3>Non hai inserito nessuna voce da cercare!</h3>";
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	} //fine if/else non messo testo
}//fine avvio ricerca
?>
</div>
</div>
</div>
</body>
 
Niente di nuovo sul fronte occidentale...
Ho provato con un if del tipo "se non è settato, allora mettilo pari a Codice" ma credo che mi si sfaldi tutta la ricerca...
 
ciao
fatto la prova con quasto codice
PHP:
<?php
session_start(); //e il php? ricordati prima non deve esserci nulla
$host = 'localhost';     //nome host
$username = 'root';      //user name
$password = 'password';  //password
$db = 'prove';            // nome data base
//---connessione----------------------------------------------------
$conn = @mysql_connect($host,$username,$password) or die (mysql_error());
$sel = @mysql_select_db($db) or die (mysql_error());
?>
<body>
<div id="container"><!--ti sei dimenticato di chiuderlo penso alla fine -->
<div id="header">
<h1 class="title">BIBLIOTECA</h1>
<h2>BIBLIOTECA</h2>
</div>
<div id="contenuto">
<div id="menu">
<ul>
  <li><a href="ricerca.php">Ricerca</a></li>
  <li><a href="aggiungi_nuovo.php">Aggiungi Nuovo</a></li>  
</ul>
</div>
<p></p>
<br />
<hr />
<?php
/*questa parte l'ho commentata perchè non so da dove arrivi la sessione
if(isset($_SESSION['delconf'])) {
    $delconf = unserialize($_SESSION['delconf']);//?? se il valore della sessione e serializzato, unserializzando $delconf diventa un arrai
    echo "<div id=\"conferma\"> <p>";
    echo $delconf;//quindi non puoi usare l'echo $delconf;
    echo "</p></div>";
} else {
    $delconf = '';
}
*/
?>
<form id="Ricerca_Libri" name="Ricerca_Libri" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  <h3>Cerca per</h3>
  <div id="tipo_ricerca">
    <label>
      <input type="radio" name="Radio_Ricerca" value="Codice" id="Radio_Ricerca_0" />
      Codice</label>
      <label>
      <input type="radio" name="Radio_Ricerca" value="Categoria" id="Radio_Ricerca_1" />
      Categoria</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Autore" id="Radio_Ricerca_2" />
      Autore</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Titolo" id="Radio_Ricerca_3" />
      Titolo</label>
      <label>
      <input type="radio" name="Radio_Ricerca" value="Casa_ED" id="Radio_Ricerca_4" />
      Casa Editrice</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Anno" id="Radio_Ricerca_5" />
      Anno</label>
    <label>
      <input type="radio" name="Radio_Ricerca" value="Tutto" id="Radio_Ricerca_6" />
      Tutto</label>
  </div>
  <div id="Search">
      <p>
          <input type="text" name="Text_Search" id="Text_Search" /> <input type="submit" name="Avvia_ricerca" value="Ricerca" />
      </p>
    </div>
    </form>
<?php
if(isset($_POST['Avvia_ricerca']) && $_POST['Avvia_ricerca'] == "Ricerca") {
    //prova a mettere lelse in fondo
    if(trim($_POST['Text_Search']) != "") {
        $stringa = strtoupper($_POST['Text_Search']);
        switch ($_POST['Radio_Ricerca']) {
            case "Codice": $wh = " UPPER(CODICE) LIKE '$stringa%'";
            break;
            case "Categoria": $wh = " UPPER(CATEGORIA) LIKE '%$stringa%'";
            break;
            case "Autore": $wh = " UPPER(AUTORE) LIKE '%$stringa%'";
            break;
            case "Titolo": $wh = " UPPER(TITOLO) LIKE '%$stringa%'";
            break;
            case "Casa_ED": $wh = " UPPER(CASA_EDITRICE) LIKE '%$stringa%'";
            break;
            case "Anno": $wh = " UPPER(ANNO) LIKE '%$stringa%'";
            break;
            case "Tutto": $wh = "UPPER(CODICE) LIKE '$%stringa%' OR UPPER(AUTORE) LIKE '%$stringa%' OR UPPER(TITOLO) LIKE '%$stringa%' OR UPPER(CASA_EDITRICE) LIKE '%$stringa%' OR UPPER(ANNO)  LIKE '%$stringa%'";
            break;
            default: $wh = " UPPER(CODICE) LIKE '$stringa%'";
            break;            
        }//fineswitch
            $query = "SELECT * FROM elenco_libri WHERE $wh ORDER BY AUTORE, TITOLO";
            $q = mysql_query($query);
            if (mysql_num_rows($q) > 0) {
?>
                <div id="ris_search">
                <form name="form_2" action="dettagli_libro.php" method="post">    
                <select name="Risultati_Ricerca" id="Risultati_Ricerca" size="15">
<?php
                while ($tempbox = mysql_fetch_array($q)){
                    $code = ($tempbox['CODICE']);
                    $category = ($tempbox['CATEGORIA']);
                    $author = ($tempbox['AUTORE']);
                    $title = ($tempbox['TITOLO']);
                    $publishing = ($tempbox['CASA_EDITRICE']);
                    $pubyear = ($tempbox['ANNO']);
                    $pubplace = ($tempbox['LUOGO']);
                    $loan = ($tempbox['PRESTITO']);
                    echo "<option value=\"$code\" ondblclick=\"this.form.submit()\">$author: $title</option>";
                }//fine while         
?>
                </select>
                </form>
<?php 
            } else {
                echo "<h2>Ops!</h2>";
                echo "<h3>Non ci sono testi che corrispondono alla tua ricerca!</h3>";
                echo "<h3>Cambia i criteri di ricerca.</h3>";
                echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
            }//fine if/else esiste
    } else {
        echo "<h2>Ops!</h2>";
        echo "<h3>Non hai inserito nessuna voce da cercare!</h3>";
        echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    } //fine if/else non messo testo
}//fine avvio ricerca
?>
</div>
</div>
</div>
</body>
messo a nel campo di ricerca e non selzionato i radio e l'output mi da l'elenco dei libri.
fatte tutte le combinazioni e l'errore che dici non si presenta.
verifica di aver scritto giusto il codice. es mettendo parti di html di aver eliminato qualcosa (basta una quisquiglia).

p.s.
quando salvi i dati in tabella prima di salvarli usa htmlspecialchars altrimenti i nomi con caratteri speciali si leggono male (caratteri strani)
 
Ho risolto il problema con un semplice if posto prima dello switch, che prima non mi funzionava e adesso sì.
Gli ho detto che quando non si trova il valore del radio, esso è uguale a "codice" e poi parte lo switch.
Sembra funzionare perfettamente ;)
 
Ho controllato il codice parola per parola, e ho fatto tutti i tentativi del caso anche io, e continuava a darmi il warning...
 
ciao
un particolare nell switch
correggi
case "Tutto": $wh = "UPPER(CODICE) LIKE '$%stringa%'
in
case "Tutto": $wh = "UPPER(CODICE) LIKE '%$stringa%'
non vorrei che fosse quello (forse mi ero dimenticato di provare col radio tutto
 

Discussioni simili