Creare un menu a discesa dove poter fare una selezione ed estrarre i dati da db MySql

  • Creatore Discussione Creatore Discussione paolomi
  • Data di inizio Data di inizio

paolomi

Nuovo Utente
14 Lug 2008
10
0
1
Ciao a tutti, chiedo gentilmente aiuto in quanto ho realizzato un form con menu a discesa e dovrei
estrarre dei dati contenuti in un database MySql in base alla selezione che faccio, per poi poterli
stampare in una tabella con relativo link di ordinamento , espongo a seguito il listato del codice che
ho scritto ma che non procude il risultato che mi sono prefissato, in quanto a prescindere dalla selezione
che faccio ( nel menu a discesa) , mi estrae sempre tutti i record dal database.
Ecco il codice della pagina form :

<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="$Rec" method="post" action="query81.php">

<p align="center">
<select name="scelta">
<option selected>scegli la finitura</option>
<option>grezza</option>
<option>zincata</option>
<option>nichelata</option>
<option>ottone</option>

</select>
</p>
<p align="center">
<tr><td></td><td><input type=submit value="Invia i Dati"><input type=reset value="Annulla"></td></tr>

</p>
</form>

</body>
</html>


ecco ora il listato della pagina del database dove estrae i record con query :




<? require_once('Connections/ma.php');


mysql_select_db($database_ma, $ma);
$query_Rec = "SELECT codart,descrizione, misura, tipologia, finitura FROM ana_articoli WHERE tipologia like '%8.8%' and finitura like '%zi%' ORDER BY descrizione ASC";
$Rec = mysql_query($query_Rec, $ma) or die(mysql_error());
$row_Rec = mysql_fetch_assoc($Rec);
$totalRows_Rec = mysql_num_rows($Rec);
?>
<style type="text/css">
<!--
.Stile2 {font-size: 10px}
.Stile3 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Stile4 {font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; }
-->
</style>
<center><table width="900" height="27" border="0">
<?php do { ?>
<tr>
<td width="101">
<div align="left" class="Stile2 Stile3"><?php echo $row_Rec['id']; ?></div></td>
<td width="93"><div align="left" class="Stile4"><?php echo $row_Rec['codart']; ?></div></td>
<td width="344"><div align="left" class="Stile4"><?php echo $row_Rec['descrizione']; ?></div></td>
<td width="92"><div align="left" class="Stile4"><?php echo $row_Rec['misura']; ?></div></td>
<td width="61"><div align="left" class="Stile4"><?php echo $row_Rec['um']; ?></div></td>
<td width="199"><div align="left" class="Stile4"><?php echo $row_Rec['tipologia']; ?></div></td>
<td width="104"><div align="left" class="Stile4"><?php echo $row_Rec['finitura']; ?></div></td>
</tr>
<?php } while ($row_Rec = mysql_fetch_assoc($Rec)); ?>
</table></center>




lanciando questa questo script mi stampa a video solo i record che hanno per tipologia 8.8
e come finitura zincata , solo perchè li ho indicati con l'istruzione LIKE, ma guardando nel menu
a discesa ci sono altre tipologie come la 10.9 ecc e anche altre finiture come grezza , nichelata ecc
però anche se faccio la selezione di una di queste , lui estrae sempre quelle segnate dal comando
LIKE , io credo ci vogliano delle altre query aggiuntive e qualche condizione , ma non saprei proprio
come fare mi aiutate per favore magari aggiungendo voi del codice , ringrazio sin d'ora quanti vorranno
darmi il loro prezioso aiuto, in attesa vi saluto tutti grazie ciao
 
Il tuo script è piuttosto confuso, così l'ho riscritto da capo. Modifica così la pagina del form:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <title>Criteri di ricerca</title>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    </head>

    <body>
        <form method="post" action="query81.php">
            <p align="center">
                Scegli il tipo di finitura:

                <select name="finitura">
                    <option value="grezza">Grezza</option>
                    <option value="zincata">Zincata</option>
                    <option value="nichelata">Nichelata</option>
                    <option value="ottone">Ottone</option>
                </select>
            </p>

            <p align="center">
                <input type="submit" name="submit" value="Cerca &raquo;" />
            </p>
        </form>
    </body>
</html>
E così lo script PHP (devi modificare il valore della costante FORM_PAGE con il nome della pagina del form):
PHP:
<?php
// scegli il nome della pagina del form
define('FORM_PAGE', 'form.html');

if (!isset($_POST['submit'])) {
    header('Location: '. FORM_PAGE);
    exit();
}

$finitura = isset($_POST['finitura']) ? trim($_POST['finitura']) : '';
$finiture = array('zincata', 'nichelata', 'ottone', 'grezza');

$conn = mysql_connect('localhost', 'root') or die(mysql_error());
mysql_select_db('database', $conn) or die(mysql_error());

if (!in_array($finitura, $finiture)) {
    header('Refresh: 5; URL='. FORM_PAGE);
    echo '<h1>Errore</h1><p>Non hai selezionato una finitura valida.</p>';
}

$query = mysql_query("SELECT * FROM tabella_articoli WHERE finitura = '{$finitura}'", $conn) or die(mysql_error());

if (!mysql_num_rows($query)) {
    die('<h1>Errore</h1><p>Nessun articolo corrisponde ai tuoi criteri di ricerca.</p>');
}

echo <<<EOF
<table border="1" cellpadding="5">
EOF;

while ($row = mysql_fetch_assoc($query)) {
    echo <<<EOF
    <tr>
        <td>{$row['id']}</td>
        <td>{$row['codart']}</td>
        <td>{$row['descrizione']}</td>
        <td>{$row['misura']}</td>
        <td>{$row['um']}</td>
        <td>{$row['tipologia']}</td>
        <td>{$row['finitura']}</td>
    </tr>
EOF;
}

echo <<<EOF
</table>
EOF;
?>
Vedi se in questo modo funziona.
 
Si in effetti..

scelta non la beccava proprio nella pagina risultato!
Ti credo che non andava. Invece tu usavi "finitura" che va bene.
Ale se 6 del 97 devo dire che i ragazzini moderni se la cavan molto meglio di noi vekkietti che a 15 anni facevamo dell'html scrauso :mavieni:
 

Discussioni simili