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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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:

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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??
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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);
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Grazie
Si in effetti è codice alfanumerico.
Ma ripeto... non sono praticissimo di PHP... c'è tanta passione però....
Non saprei come impostarlo l'if....
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
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
Autore Titolo Forum Risposte Data
sandropochi [PHP] Query per estrarre record con data successiva a quella odierna PHP 2
giancadeejay [PHP] Estrarre solo record dell'utente connesso PHP 4
G ESTRARRE VALORI MASSIMI E MINIMI IN UN INTERVALLO DI RECORD Database 7
S estrarre e stampare a video un record in un div PHP 7
L Estrarre record di un dato mese MySQL 5
A estrarre record da DB PHP 9
I estrarre record da 2 tabelle mysql con riferimento id_utente uguale Database 3
A Estrarre solo un certo numero di record e scorrimento pagine PHP 9
G Estrarre record tramite "parte di campo" Classic ASP 2
G Estrarre l'ultimo record del db dal link Classic ASP 6
G estrarre record da un database con menu a tendina Classic ASP 4
G Estrarre un record in modo orizzontale, ma solo i record richiamati da un codice Classic ASP 2
M Estrarre Record Casualmente MS Access 10
S Estrarre record in modo casuale da database Classic ASP 10
F Estrarre record in ordine casuale Classic ASP 0
grottafelix Estrarre 4 record per riga Classic ASP 4
N Estrarre un insieme casuale di record utilizzando SQL Database 0
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
M Estrarre soltanto i prodotti con stessa descrizione PHP 10
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
M Estrarre valore con SELECT COUNT PHP 0
D Estrarre database con link esterno Database 10
S Raggruppare ed estrarre data più recente MySQL 6
F Estrarre ultima foto da cartelle PHP 2
R Estrarre valori duplicati più volte PHP 0
C Estrarre dati stringa Sql Database 1
L estrarre valori max tra più tabelle MySQL 2
L Estrarre da Cartella una determinata 'via' PHP 15
J estrarre url dei file video da youtube "get_video_info" PHP 6
M Estrarre dati da un database PHP 2
M Estrarre valori MAX da un db con una left join MySQL 8
M Estrarre dati da una select HTML PHP 3
C [PHP] Estrarre da una classe i valori che mi interessano PHP 5
S [PHP] Estrarre dati da tabella e fare la media ad intervalli di tempo PHP 11
R [PHP] Estrarre id utente loggato.? PHP 4
S [PHP] Estrarre elementi array su più variabili PHP 5
S [PHP] Estrarre dati tabella in diversi array PHP 2
P [MS ACCESS] Estrarre più somme da una query MS Access 4
trattorino estrarre titolo video facebook in php PHP 0
D [WordPress] come fare per estrarre dati da un db MySQL tramite una form e visualizzare il risultato WordPress 0
S [Javascript] come estrarre valori array e inserirli in diverse variabili Javascript 1
N [PHP] Estrarre singolo valore da array PHP 4
trattorino [PHP] sql estrarre in base all'ultima visita PHP 4
P [Visual Basic] access sql estrarre id vendite x cli e articolo con data maggiore del recordset Visual Basic 2
Jensen [PHP] Estrarre prossimi 4 lunedì PHP 4
trattorino [PHP] estrarre dati singoli PHP 1
G [PHP] estrarre data da timeline yyyy-dd-gg hh:mm:ss PHP 4
Z Estrarre dati da un DB Mysql PHP 4

Discussioni simili