estrarre record specifico da db

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Buongiorno a tutti,
Sto impazzaendo!
Sto creando la ricerca di un prodotto MAGAZZINO e vorrei che se cerco un record nel mio DB mi venga restiruito un altro campo della stessa riga..
Potete aiutarmi?


Questo e' il mio form di ricerca semplicissimo:

codice HTML:
HTML:
<form method="post" action="letturadati.php">
<input type="text" name="testo">
<input type="submit" value="CERCA BOX PRODOTTO">
</form>
Ecco il codice php che cerca in db:

PHP:
<?
    $cn = mysql_connect("localhost", "USER", "XXXX");
    mysql_select_db("my_XXXX", $cn);
 
    $query = mysql_query("SELECT* FROM magazzino ", $cn );
 
    $quanti = mysql_num_rows($query);
 
    if ($quanti == 0)
    {
        echo "Nessun record!";
    }
    else
    {
        for($x=0; $x<$quanti; $x++)
        {
            $rs = mysql_fetch_row($query);
            $vin = $rs[2];
            $box = $rs[4];
         
            echo "vin: " . $vin . "<br>";
            echo "box: " . $box . "<br><br>";
        }
    }
    mysql_close($cn);
?>

DATABASE:
attachment.php



Grazie a tutti in anticipo
 
Ultima modifica di un moderatore:
ciao
se non ho capito male quello che vuoi fare, prova questo
PHP:
<?php
$cn = mysql_connect("localhost", "USER", "XXXX");
mysql_select_db("my_XXXX", $cn);
//leggi il valore che ti provine dal form
$testo=trim($_POST['testo']);
//e qui ti convine fare dei controlli es, che il testo siano solo caratteri alfabetici
// poi metti una variabile vuota
$wh="";
if(!empty($testo)){
    //la varibile testo NON è vuota
    //e quindi crei la condizione per estrarre
    $wh=" WHERE nome_campo='".$testo."' ";
    //doveil nome del campo su cui fare la ricerca lo sai tu
}
$query = mysql_query("SELECT* FROM magazzino $wh", $cn );
/*es
se il campo testo è vuoto laquery rimane
SELECT* FROM magazzino
e ti estrae tutti i record
se contiene PINCO la query diventerà
SELECT* FROM magazzino WHERE nome_campo='PINCO'
estraendo solo i record che in nome_campo hanno PINCO
*/
 
$quanti = mysql_num_rows($query);
 
if ($quanti == 0){
    echo "Nessun record!";
}else{
    while($rs=mysql_fetch_array($query)){
        //se non ti servono per latre ragioni usa direttamente l'array
        //usando come hai fatto $vin = $rs[2];$box = $rs[4];
        echo "vin: " . $rs[2] . "<br>";
        echo "box: " . $rs[4] . "<br><br>";
    }
}
mysql_close($cn);
?>
un paio di suggerimenti
non usare lo short tag <? ma usa <?php
abbandona le vecchie istruzioni mysql deprecate e passa alle mysqli
poi quando scrivi del codice racchiudilo negli appositi bccode
 
Intanto Buonasera Borgo..mi ricordo di te...tempo indietro mi hai gia' aiutato egregiamente..
Detto cio,ho provato ma la situazione non cambia...
Se nel form devi inserire vin , mi deve restiruire il box ...ma solo di quel vin ...e non tutti i campi della tabella...non riesco cavolo....

<?php
$cn = mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("my_xxxxdb", $cn);
//leggi il valore che ti provine dal form
$testo=trim($_POST['testo']);
//e qui ti convine fare dei controlli es, che il testo siano solo caratteri alfabetici
// poi metti una variabile vuota
$wh="";
if(!empty($testo)){
//la varibile testo NON è vuota
//e quindi crei la condizione per estrarre
$wh=" WHERE vin='".$testo."' ";
//doveil nome del campo su cui fare la ricerca lo sai tu
}
$query = mysql_query("SELECT* FROM magazzino $wh", $cn );
/*es
se il campo testo è vuoto laquery rimane
SELECT* FROM magazzino
e ti estrae tutti i record
se contiene PINCO la query diventerà
SELECT* FROM magazzino WHERE nome_campo='PINCO'
estraendo solo i record che in nome_campo hanno PINCO
*/
$quanti = mysql_num_rows($query);
if ($quanti == 0){
echo "Nessun record!";
}else{
while($rs=mysql_fetch_array($query)){
//se non ti servono per latre ragioni usa direttamente l'array
//usando come hai fatto $vin = $rs[2];$box = $rs[4];
echo "vin: " . $rs[2] . "<br>";
echo "box: " . $rs[4] . "<br><br>";
}
}
mysql_close($cn);
?>

Grazie mille per un riscontro
 
Ultima modifica:
ciao
fai una prova intanto dividi la query e metti un var_dump
PHP:
<?php
//.......
$sel = "SELECT* FROM magazzino $wh";
var_dump($sel);
$query = mysql_query($sel, $cn );

//......
?>
scrivi nel form e dai il submit
e verifiva che la stringa venga sritta come dovrebbe, es se inputo amarone il var dump dovrebbe rstituirti

string(nn) "SELECT* FROM magazzino WHERE vin='amarone'"

quella query ti estrae tutti i revord che nel campo vin hanno amarone, uno o più
poi eventualmente posta cosa ti restituisce il var-dump
 
Allora..io ho questa tabella :
attachment.php

questo form html:

Codice:
<form method="post" action="cerca.php">
<input type="text" name="testo">
<input type="submit" value="CERCA VETTURA">
</form>

questo codice php:

Codice:
<?php
$cn = mysql_connect("localhost", "xxx", "xxxx");
mysql_select_db("my_db", $cn);
//leggi il valore che ti provine dal form
$testo=trim($_POST['testo']);
//e qui ti convine fare dei controlli es, che il testo siano solo caratteri alfabetici
// poi metti una variabile vuota
$wh="";
if(!empty($testo)){
    //la varibile testo NON è vuota
    //e quindi crei la condizione per estrarre
    $wh=" WHERE vin='".$box."' ";
    //doveil nome del campo su cui fare la ricerca lo sai tu
}

$sel = "SELECT* FROM magazzino $wh";
var_dump($sel);
$query = mysql_query($sel, $cn );
/*es
se il campo testo è vuoto laquery rimane
SELECT* FROM magazzino
e ti estrae tutti i record
se contiene PINCO la query diventerà
SELECT* FROM magazzino WHERE nome_campo='PINCO'
estraendo solo i record che in nome_campo hanno PINCO
*/
$quanti = mysql_num_rows($query);
if ($quanti == 0){
    echo "Nessun record!";
}else{
    while($rs=mysql_fetch_array($query)){
        //se non ti servono per latre ragioni usa direttamente l'array
        //usando come hai fatto $vin = $rs[2];$box = $rs[4];
        echo "vin: " . $rs[2] . "<br>";
        echo "box: " . $rs[4] . "<br><br>";
    }
}
mysql_close($cn);
?>


NEL FORM DI RICERCA
inserisco numero VIN prodotto da cercare nel MAGAZZINO e vorrei che tale VIN mi restituisse la posizione del prodotto BOX....non tutta la tabella.
 
Ultima modifica:
mi estrae tutta la tabella e non va bene perche io chiedo:
Questo vin che box ha?
e mi restituisce tutto cosi:

vin: ZFA312000X57899
box: F4 FUORI NORD


vin: ZFA312000X57877
box: g4 piazzaletto

vin: ZFA312000GW67885
box: RINGHIERA SUD N.187

vin: ZFA312000GW67333
box: piazzaletto camp.3.7

vin: ZFA312000GW61111
box: G5 FUORI NORD

vin: ZFA312000X57234
box: J4 FUORI SUD

vin: Zfa400000et546655
box: H3 fuori sud

vin:
box:

vin: Zla000456gw100434
box: Cassino e45 avanti

vin: Cri6947
box: Caselle


----------------
se io ho messo il ricerca il VIN (in rosso per capirci) perche' me li restituisce tutti??
 
ciao
ma hai messo il var_dump che ti avevo detto? e cosa riporta?
se il form non trasmette o la parte di php non riceve è evidente che ti da tutti i record
se la variabile $testo è vuota anche la $wh rimane vuota quindi la select estrae tutti i record
 
ciao
mi sono accorto adesso, tu hai scritto
PHP:
$wh=" WHERE vin='".$box."' ";
ma dove valorizzi la variabile $box?
nel mioi codice avevo scritto
PHP:
$wh=" WHERE nome_campo='".$testo."' ";
perchè valorizzavo la variabile $testo con quanto proveniva dal form
PHP:
$testo=trim($_POST['testo']);
o correggi nella select $testo al posto di $box o nella ricezione e nell'if che crea $wh

ripeto: usa gli appositi bccode per gli script
 
Grazie dell'attenzione Borgo..
Ci siamo quasi....
Ora se nel form metto in ricerca un numero VIN mi restituisce il BOX esatto ma io
ho bisogno solo del report del Box e non di tutta questa stringa:
Codice:
string(54) "SELECT* FROM magazzino WHERE vin='Zfa400000et546655' " box: H3 fuori sud
Come posso eliminare il superfluo?
E ancora...se nel form non metto in ricerca nulla e premo cerca mi escono tutti i BOX della tabella e non va bene...non dovrebbe restituire nulla..
Grazie ancora comunque
 
Ultima modifica:
ciao
PHP:
<?php
$cn = mysql_connect("localhost", "xxx", "xxxx");
mysql_select_db("my_db", $cn);
//leggi il valore che ti provine dal form
$testo=trim($_POST['testo']);
$wh="";
if(!empty($testo)){
    $wh=" WHERE vin='".$testo."' ";//o se nel $_POSTO hai messo $box qui ci va $box
    //doveil nome del campo su cui fare la ricerca lo sai tu
    $sel = "SELECT* FROM magazzino $wh";
    //var_dump($sel); LO COMMENTI
    $query = mysql_query($sel, $cn );
    $quanti = mysql_num_rows($query);
    if ($quanti == 0){
        echo "Nessun record!";//qui ti converrebbe nettere un link di ritorno al form
    }else{
        while($rs=mysql_fetch_array($query)){
            //ti converrebbe mettere il nome del campo che visualizzi es al posto di $rs[2] mettere $rs['pinco']
            echo "vin: " . $rs[2] . "<br>";
            echo "box: " . $rs[4] . "<br><br>";
        }
    }

}else{
    echo "non hai fatto una selezione";//e anche qui ti converrebbe nettere un link di ritorno al form
}
mysql_close($cn);
?>
 
ciao
un consiglio, ti conviene mettere almeno un controllo sulla variabile $testo (o come l'hai chiamata)
da quello che ho capito è un codice di lettere e numeri, quindi metterei nell'if un preg_match per verificarne la correttezza
è essenziale quando si opera sul db, soprattutto se non operi personalmente
 
Grazie
Si in effetti è codice alfanumerico.
Ma ripeto... non sono praticissimo di PHP... c'è tanta passione però....
Non saprei come impostarlo l'if....
 
ciao
PHP:
<?php
//......
if(!empty($testo) && preg_match('/^[a-zA-Z0-9]{6,12}/',$testo)){//se l'hai chiamato $box, al posto di $testo metti $box
    //.....
}else{
    echo "non hai fatto una selezione o codice errato";
}

mysql_close($cn);
?>
dove la parte /^[a-zA-Z0-9]{6,12}/ è il cosiddetto patner che verifica che il codice sia costituito solo da i caretteri alfabetici che vanno da a sino a z, da A sino a Z e numerici da 0 a 9
la parte tra parentesi graffe {6,12} indica la lunghezza minima (6) e la massima (12) che deve avere la stringa del codice, tale parte può essere omessa e comunque devi saperlo tu quanto è lungo al minimo o al massimo il codice
 
ciao
al posto di
if(!empty($testo)){
metti
if(!empty($testo) && preg_match('/^[a-zA-Z0-9]{6,12}/',$testo)){
e al posto di
echo "non hai fatto una selezione"
echo "non hai fatto una selezione o codice errato";
poi prova ad inserire un codice errato che contenga es o uno spazio o es un due punti, dovrebbe dirti che il codice è vuoto o errato
 
Ci sono persone che si spacciano per GENI dell'informatica.....non su questo forum che penso sia il migliore ....
Poi provi a postare qualche discussione FLASH,PHP,HTML ETC.ETC e di risposte manco una !
Questo per ringraziare BORGO ITALIA che si dimostra da anni molto disponibile con gli utenti del FORUM e davvero competente e professionale.
Grazie Amico FUNZIONA TUTTO!
 

Discussioni simili