Query da valore tramite form

ciprovo

Nuovo Utente
16 Ott 2012
6
0
0
Buongiorno a tutti,
sono nuovo di questo forum, mi sono iscritto proprio perche leggendo i vostri post vedo molta volonta e precisione nell'aiutare le persone, e ahimé, sono a chiedervi anche io un po di questi due valori, fondamentalmente per una cosa che credo molto semplice...

un semplice script che mi dice quante donne lavorano da me ... io lo vorrei modificare in maniera che il valore venga preso da un form piuttosto che fisso ...
copio lo script qui e poi sotto mi spiego meglio ...

PHP:
<?
/* connessione a db */
$DBhost = "XXXXXXX"; $DBuser = "XXXXXXXXXXX"; $DBpass ="ZZZZZZZZZZZ"; $DBName = "XXXX";
$table = "users";
/* Connetto al db */
mysql_connect($DBhost,$DBuser,$DBpass) or die("Impossibile collegarsi al server"); @mysql_select_db("$DBName") or die("Impossibile connettersi al database $DBName");

/* query, solo le donne...*/
$sqlquery = "SELECT * FROM $table WHERE sex = 'donna'"; $result = mysql_query($sqlquery); $number = mysql_numrows($result);

$i = 0;

if ($number < 1) {
print "<center><p>La ricerca non ha prodotto nessun risultato</p></center>"; }
else {
while ($number > $i) {
$thename = mysql_result($result,$i,"nome"); $theemail = mysql_result($result,$i,"email"); print "<p><b>Nome:</b> $thename<br><b>E-Mail:</b> $theemail</p>"; $i++; }
}
?>

ora, questo script interroga il db e mi dice il nome ed email di tutti gli utenti donna ... io invece vorrei poter "ampliare" questa funzione, in maniera ad esempio, che tramite un form io possa scegliere il valore da fargli cercare nel db e di conseguenza aver risultati diversi...
se nel form scrivo "uomo" ad esempio, vorrei che mi desse gli utenti maschi.

é un impresa per chi come me sa poco di php o tramite un piccolo aiuto vostro ci posso riuscire ?

Ringrazio in anticipo.
 
Ultima modifica di un moderatore:
Puoi fare tutto in un'unica pagina così:
PHP:
<?php
if (isset($_POST['sex']) && in_array($_POST['sex'], array('uomo', 'donna'))) {
    mysql_connect('localhost', 'root') or die('Impossibile collegarsi al server.');
    mysql_select_db('test') or die('Impossibile connettersi al database.');

    $sql = 'SELECT * FROM users WHERE sex = \'%s\'';
    $sql = sprintf($sql, mysql_real_escape_string($_POST['sex']));

    $result = mysql_query($sql);

    if (mysql_num_rows($query) > 0) {
        while ($row = mysql_fetch_assoc($query)) {
            echo "<p><b>Nome:</b> {$row['nome']}</p>";
            echo "<p><b>E-mail: {$row['email']}</b></p>";
        }
    } else {
        echo '<p style="text-align: center">La ricerca non ha prodotto nessun risultaot.</p>';
    }
} else {
    echo <<<EOF
<!DOCTYPE html>
<html>
    <head>
        <title>Ricerca</title>
        <meta charset="utf-8" />
    </head>

    <body>
        <h1>Ricerca</h1>

        <form action="{$_SERVER['REQUEST_URI']}" method="post">
            <div>
                <label for="sex">Sesso:</label>

                <select id="sex" name="sex">
                    <option value="uomo">Uomo</option>
                    <option value="donna">Donna</option>
                </select>
            </div>

            <div>
                <button type="submit">Cerca</button>
            </div>
        </form>
    </body>
</html>
EOF;
?>
 
Puoi fare tutto in un'unica pagina così:
PHP:
<?php
if (isset($_POST['sex']) && in_array($_POST['sex'], array('uomo', 'donna'))) {
    mysql_connect('localhost', 'root') or die('Impossibile collegarsi al server.');
    mysql_select_db('test') or die('Impossibile connettersi al database.');

    $sql = 'SELECT * FROM users WHERE sex = \'%s\'';
    $sql = sprintf($sql, mysql_real_escape_string($_POST['sex']));

    $result = mysql_query($sql);

    if (mysql_num_rows($query) > 0) {
        while ($row = mysql_fetch_assoc($query)) {
            echo "<p><b>Nome:</b> {$row['nome']}</p>";
            echo "<p><b>E-mail: {$row['email']}</b></p>";
        }
    } else {
        echo '<p style="text-align: center">La ricerca non ha prodotto nessun risultaot.</p>';
    }
} else {
    echo <<<EOF
<!DOCTYPE html>
<html>
    <head>
        <title>Ricerca</title>
        <meta charset="utf-8" />
    </head>

    <body>
        <h1>Ricerca</h1>

        <form action="{$_SERVER['REQUEST_URI']}" method="post">
            <div>
                <label for="sex">Sesso:</label>

                <select id="sex" name="sex">
                    <option value="uomo">Uomo</option>
                    <option value="donna">Donna</option>
                </select>
            </div>

            <div>
                <button type="submit">Cerca</button>
            </div>
        </form>
    </body>
</html>
EOF;
?>

come al solito mi spiego molto male...

ti ho mandato un mex in pvt che spiega bene la problematica mia, per aiutare anche gli altri mi spiego brevemente....

io vorrei poter cercare all'interno dei prodotti che io vendo, un seriale, e, se esiste (quindi non va bene il menu a tendina perche a quel punto lo cercherei tra 3mila risultati) mi mostra le proprieta di quell'ogetto... inoltre non deve dar modo a chi cerca di conoscere gli altri seriali, se quello che inserisco c'è mi dice il resto, altrimenti "seriale non trovato".

ho mandato un mex privato spiegando molto meglio, se é cosi gentile e preciso da risolvermi il problema posterò anche di qui la soluzione.

ancora mille grazie
 
ecco il mex che ho mandato ad alessandro
Ciao Alessandro,

faccio seguito al post che ho lasciato qui a cui tu hai gentilissimente risposto...
http://forum.mrwebmaster.it/php/3187...mite-form.html

Come al solito mi spiego molto male, pensando fosse semplice ho tralasciato cose importantissime...

l'idea che tu mi hai fatto potrebbe andar bene, se non per il fatto che lo script lo avrei poi modificato a piacimento mio, e al posto di ricercare tra due valori (uomo, donna), dovrebbe poter far la ricerca tra valori multipli, come ad esempio seriale di prodotti che io vendo. Immagina, potrebbero essere centinaia e centinaia, quindi il sistema con menu a tendina non va bene.
inoltre ti dirò di piu, il sistema non dovrebbe dar modo a chi cerca di poter vedere tutti i valori contenuti, se quello che scrivo all'interno del form c'è nel db allora mi da gli estremi altrimenti no ...

faccio un esempio ...
se nel form scrivo un numero seriale che nel db esiste, mi uscirà marca e modello dell'hardware, se il seriale é inesistente uno stamp mi dirà "nessun prodotto trovato", altrimenti se il seriale esiste mi dirà tutti gli altri dati del prodotto.

il db contiene solo 4 colonne..
-id
-nomeprodotto
-seriale prodotto
-link
la colonna link ha come contenuto un link vero e proprio che se cliccato fa partire un download del softwarte relativo a quel prodotto

pensi di potermi aiutare?
ti ringrazio ancora infinitamente
 
nel senso che mi mostrava i dati dell'intero db ... sto risolvendo cercando in giro e sembra funzionare... poi appena ho la certezza che funzioni lo posto qui ... :)

ho risolto cosi, il codice che mi aveva postato alessandro mi mostrava l'intero db e non essendo un professore del php non l'ho potuto modificare...

questo funziona bene :
PHP:
<?php

// connettiamoci il nostro database

$db_host = "XXXXX";
$db_user = "XXXXX";
$db_password = "XXXXX";
$db_name = "XXXXX";

//connetto il database

$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');

// recuperiamo il valore ricerca inviato con get

$ricerca = $_GET['ricerca'];

// vediamo se è stato inviato, e quindi uguale a ok

if ( $ricerca == 'ok' ) {

// recuperiamo ora cerca inviato con post

$cerca = $_POST['cerca'];

// vediamo se è stato compilato il campo

if ( $cerca == TRUE && $cerca != "" ) {

// ora vediamo se supera i tre caratteri

if ( strlen($cerca) >= 3 ) {

// ora depuriamo la stringa da cercare sul database

$cerca =  mysql_escape_string(stripslashes($cerca));

// ora possiamo effettuare la nostra ricerca sul db, state attenti alla sintassi

$query = "SELECT * FROM users WHERE seriale 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)) {

$seriale = $row['seriale'];
$link = $row['link'];
$prodotto = $row['prodotto'];
$id = $row['id'];

// stampiamo i nostri dati

echo "seriale: $seriale<br>";
echo "Link Software:<a href='$link'>download</a><br>";
echo "prodotto : $prodotto<br>";



}

} else {

echo "Nessun temine alla ricerca trovato";

}


} else {

echo "Devi inserire almeno 3 caratteri";

}

} else {

echo "Non hai compilato il modulo ricerca";

}

}

?>

Ringrazio, siete stati gentilissimi, Alessandro un grazie particolare per il tuo impegno repentino !!

Cris
 
Ultima modifica di un moderatore:

Discussioni simili