cercare record su db mysql

precogcris

Nuovo Utente
7 Gen 2014
10
0
1
Ciao a tutti. Premessa iniziale doverosa, sono un neofita assoluto.
Con grande difficoltà sono riuscito a importare su mysql un db che avevo realizzato su excel.
Siccome il mio fine è quello di pubblicare il db su un host in modo che io possa usufruirne ovunque io sia, ho pensato di trasformarlo in un db mysql e di creare ora delle pagine php che mi aiutassero nella gestione.
Il db, giusto per notizia, è un archivio di dischi in vinile.
Sono riuscito a creare una pagina php che mi mostra tutti i record del db. Sono riuscito a fare una pagina php (passando da un form html) che si occupa dell'inserimento di nuovi dati, una che si occupa della cancellazione dei record ed una che si occupa della modifica di record già esistenti.
Tutto ok. Il mi odilemma è questo. Come faccio a creare una pagina php (magari passando prima da un form html) che mi effettui inizialmente una ricerca tra i record con un input dato dall'operatore (es. cerco i dischi di un artista specifico digitando la stringa che in quel momento mi interessa)?
Ovviamente la query mi dovrebbe visualizzare i risultati della ricerca, filtrati da input operatore. In questo modo legherei al risultato della query delle azioni di modifica o cancella che ho già realizzato.
Vi ringrazio ed in caso vi posso postare il listato della pagina php che mi mostra l'intero contenuto del db (e non quello filtrato da criterio di ricerca a scelta su un campo).

Cris
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ecco uno schema
PHP:
<?php
//....
$autore=$_POST['autore'];//questo dato proviene dal form di ricerca
//tutti i recorcord che hanno il campo autore (o come lo chiami) che hanno valore come hai richiesto
$query="SELECT * FROM nome_tua_tablla WHERE autore='$autore'";
//....
?>
oppure che contengano la parola che viene dal form
PHP:
<?php
//....
$query="SELECT * FROM nome_tua_tablla WHERE autore LIKE '%$autore%'";//nota il carattere jolly %
//...
?>
o che inizino per
PHP:
<?php
//....
$query="SELECT * FROM nome_tua_tablla WHERE autore LIKE '$autore%'";//nota il carattere jolly %
//...
?>
o temninino per
PHP:
<?php
//....
$query="SELECT * FROM nome_tua_tablla WHERE autore LIKE '%$autore'";//nota il carattere jolly %
//...
?>
 

precogcris

Nuovo Utente
7 Gen 2014
10
0
1
E' perfetto. Funziona perfettamente. Ti ringrazio infinitamente.
Posso chiedere una domanda aggiuntiva?
E se nel form volessi inserire dei criteri di ricerca multipli?
Oltre ad inserire l'autore per la ricerca dei record potrei avere la necessità di raffinare il risultato inserendo ulteriori dati negli altri campi e fare una ricerca più precisa.
Per esempio, oltre all'autore vorrei inseriree, nel campo apposito del form, anche il dato del supporto (colonna SUPPORTO del db mysql), oppure il titolo (colonna TITOLO del db).
In pratica non essere costretto a mettere un solo dato per la ricerca ma molteplici, a piacere.

Ringrazio ancora.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
devi costruirti dinamicamente le condizioni, esempio
PHP:
<?php
//....
$autore=trim($_POST['autore']);
$titolo=trim($_POST['titolo']);
$wh="";
if($autore!=""){//hai inputato l'autore
	$wh.=" autore LIKE '$autore%' AND ";
}
if($titolo!=""){//hai inputato il titolo
	$wh.=" titolo LIKE '$titolo%' AND ";
}
$wh.= " 1=1 ";
/*
se non imputi nulla risulta $wh => 1=1 (estrai tutti i record)
se solo autore $wh =>  autore LIKE '$autore%' AND 1=1
se solo titolo $wh =>  titolo LIKE '$titolo%' AND 1=1
se imputi autore e titolo $wh =>  autore LIKE '$autore%' AND titolo LIKE '$titolo%' AND 1=1
da cui la query
*/
$query="SELECT * FROM nome_tua_tablla WHERE $wh";
//....
?>
ho messo AND ma puoi se ti serve mettere gli OR e/o fare le combinazione and or che ti servono
ana logamente per i caratteri % (danti dietro o entrembi)
 

precogcris

Nuovo Utente
7 Gen 2014
10
0
1
Sei davvero portentoso. Stasera provo e ti facci osapere. Penso di aver capito.

Ti aggiungo un altro quesito.

Questa è la pagina che utilizzo per fare la modifica di un record che seleziono dal db.
Mi apre i dati in un form che posso modificare e che vorrei al termine confermare.
Il tutto è legato al campo ID che uso come indice. Sotto al numero indicato nel campo ID della griglia della tabella ho messo il link chiamato MOD al file php che ti elenco di seguito (modifica.php)
Come mai il pulsante che ho indicato come CONFERMA MODIFICA, nel listato, non mi esce come pulsante ma come campo form, addirittura ci posso scrivere dentro!!!! Cliccando su quel pulsante io salverei le eventuali modificha apportate al record.
Leggi qualcosa di strano nella pagina php che ti aggiungo qui di seguito? Il db si chiama xls_db e la tabella si chiama LP

PHP:
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title>Modifica Record</title>
    </head>
    <body>
        <?php
        
        $host = 'localhost';
        $user = 'root';
        $password = '*********';
        $database = 'xls_db';
        
        $confirm=$_REQUEST['confirm'];
        $id=$_REQUEST['id'];
         
        $db = mysql_connect($host, $user, $password) or die ("impossibile connettersi al server $host");
        mysql_select_db($database, $db) or die ("impossibile connettersi al database $database");
        If (!$confirm)
{                          
        
                $query = "SELECT * FROM lp WHERE id=$id";         

$dbresult = mysql_query($query, $db);
$AffectedRows = mysql_affected_rows($db);
if ($AffectedRows==0)
{
      print("<h3>Non esistono record con i criteri selezionati</h3>");  
       }
else
{
mysql_data_seek($dbresult,0);
$row=mysql_fetch_row($dbresult);
print("<table>");
   print("<form method=\"post\"action=\"{$_SERVER['PHP_SELF']}\">");     
Foreach ($row as $k => $v)
{
$myfield = mysql_fetch_field($dbresult,$k);       
print("<tr><td>$myfield->name</td>");

print("<td><input type=\"text\" value=\"" . $v . "\" name=\"" . $myfield->name . "\" size=\"100\" maxlength=\"100\" ></td></tr>");
}

print("<tr><td colspan=\"2\"><input type=\"
    submit\" value=\"Conferma Modifiche\"></td></tr>  ");
        
         print("<input type=\"hidden\" name=\"confirm\" value=\"1\">");      
         
print("</form>");
        print("</table>");
Mysql_free_result($dbresult);
Mysql_close($db);
}
}
Else
{
$titolo=$_REQUEST['TITOLO'];
  $artista=$_REQUEST['ARTISTA'];  
    $settore=$_REQUEST['SETTORE'];
    $supporto=$_REQUEST['SUPPORTO'];
    $formato=$_REQUEST['formato'];
    $confezione=$_REQUEST['confezione'];
        $edizione=$_REQUEST['edizione'];
        $nazione=$_REQUEST['nazione'];
        $stampa=$_REQUEST['stampa'];
        $barcode=$_REQUEST['barcode'];
        $codice=$_REQUEST['codice'];
        $anno_edizione=$_REQUEST['anno_edizione'];
            $anno_disco=$_REQUEST['anno_disco'];
        $etichetta=$_REQUEST['etichetta'];
        $brani=$_REQUEST['brani'];
            $note=$_REQUEST['note'];
        $prezzo=$_REQUEST['prezzo'];
            $condizioni=$_REQUEST['condizioni'];
            $dettagli=$_REQUEST['dettagli'];
                $numerato=$_REQUEST['numerato'];
            $copie=$_REQUEST['copie'];
                        
    $query = "update lp set titolo=\"$titolo\"," . " artista=\"$artista\","
                      . " settore=\"$settore\"," 
                    . " supporto=\"$supporto\","
                         . " formato=\"$formato\","
                     . " confezione=\"$confezione\","
                      . " edizione=\"$edizione\","
                         . " nazione=\"$nazione\","
                            . " stampa=\"$stampa\","
                            . " barcode=\"$barcode\","
                                 . " codice=\"$codice\","
                                . " anno_edizione=\"$anno_edizione\","
                               . " anno_disco=\"$anno_disco\","
                                  . " etichetta=\"$etichetta\","
         . " brani=\"$brani\","
         . " note=\"$note\","
         . " prezzo=\"$prezzo\","
         . " condizioni=\"$condizioni\","
         . " dettagli=\"$dettagli\","
         . " numerato=\"$numerato\","
              . " copie=\"$copie\""
                  . "where id=$id";
           
$dbresult = mysql_query($query, $db);
$AffectedRows = mysql_affected_rows($db);
If ($AffectedRows!=0)
{
print("<h3>Il record è stato aggiornato</h3>");
print("<h3><a href=\"index_evo.php\">Torna alla lista</a></h3>");
}
mysql_close($db);
}

        ?>
           
    </body>
</html>
 
Ultima modifica di un moderatore:

precogcris

Nuovo Utente
7 Gen 2014
10
0
1
ScreenShot001.jpg

Questo è il risultato di ciò che mi viene fuori richiamando i dati dal db e stampandoli in un form per l'eventuale modifica.
Il pulsante CONFERMA MODIFICHE mi esce come campo del form...
Quell'errore in alto, non bloccante è relativo all'array?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
quale è la riga 20?
non usare le maiuscole nelle parole chiave di php if non If....
poi
HTML:
<form ....>
<table>
.....
</table>
</form>
e non
HTML:
<table>
<form ...>
.....
<form>
</table>
 
Ultima modifica:

precogcris

Nuovo Utente
7 Gen 2014
10
0
1
Caro Borgo Italia, ti ringrazio infinitamente. Ho smanettato ieri sera ed ho risolto entrambi i problemi.
Il pulsante conferma modifiche non funzionava per una banalità. uno spazio prima del submit.
Ho risolto anche il problrma dell'errore sulla $_REQUEST. Pubblicandolo online non me lo da più. L'errore era solo in locale.

Una nuova domandina.
Se nel db volessi inserire un campo dove indicare un link ad un sito e che esso sia come si suol dire "cliccabile" cioè nella griglia del mio db o richiamando il record per visualizzarlo su un form, mi servirebbe che il link sia cliccabile e non debba essere costretto a fare copia/incolla del link sul browser per vederlo.

Grazie ancora.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
come hai detto ti fai un campo chiamato es. link qundo lo riempi ci metti es.
www.pinco_pallo.it (nel campo non serve tutto l'ambaradan http://).
poi quando lo estrai (tralascio tutta la connessione e il while di estrazione dati)
PHP:
<?php
//..........
$query="SELECT * FROM nome_tua_tablla WHERE....";
//......
	$link=$riga['link'];
	echo "<a href=\"http://".$link."\" target=\"_blank\">$link</a>";
//........
?>
l'eco ti da il classico link cliccabile
www.pinco_pallo.it
 

precogcris

Nuovo Utente
7 Gen 2014
10
0
1
Ci ho capito poco sai? :)
Non ho ben capito come funziona, permettimi il gioco di parole, la funzione echo...
Se io da un form faccio una ricerca che mi stampa a video un html con tutta la griglia del db che ho estratto con la query, come faccio a rendere cliccabile il contenuto presente nel campo denominato "LINK" ?

Il comando echo che mi hai indicato lo devo mettere nel php che lancio quando faccio la ricerca dal form html, dove ho scritto i criteri di ricerca dei record desiderati?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se guardi questi due link ti accorgi che le differenze tra echo e print non sono molte

http://it2.php.net/manual/en/function.echo.php
http://it2.php.net/manual/en/function.print.php

comunque devi mettere quel pezzetto dove estrai i dati che hai cercato
comunque non in modifica dati, ma dove eventualmente li vuoi vedere (immagino che tu non voglia solo modificarli)
nei campi di input di modifica devi mettere solo il nome del sito es.
www.pinco_pallo.it
che vuoi modificare in
www.pinco_pallo.com
 

precogcris

Nuovo Utente
7 Gen 2014
10
0
1
Non mi funziona. Il campo dove scrivo l'url si chiama LINK
Dove dovrei inserire l'echo nella pagina?
Di seguito la pagina php di estrazione record provenienti dal form html.


PHP:
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title>Tabella Ricerca Dischi</title>
    </head>
    <body>
        <?php
        
        $host = 'localhost';
        $user = 'legalys';
        $password = '';
        $database = 'my_legalys';
        
        $db = mysql_connect($host, $user, $password) or die ("impossibile connettersi al server $host");
        
        mysql_select_db($database, $db) or die ("impossibile connettersi al database $database");
        
        $artista=trim($_POST['artista']);
        $titolo=trim($_POST['titolo']);
        $barcode=trim($_POST['barcode']);
        $cod=trim($_POST['cod']);
$wh="";
if($artista!=""){//hai inputato l'autore
    $wh.=" artista LIKE '%$artista%' AND ";
}
if($titolo!=""){//hai inputato il titolo
    $wh.=" titolo LIKE '%$titolo%' AND ";
}
if($barcode!=""){//hai inputato l'autore
    $wh.=" barcode LIKE '%$barcode%' AND ";
}
if($codice!=""){//hai inputato l'autore
    $wh.=" cod LIKE '%$cod%' AND ";
}

$wh.= " 1=1 ";
/*
se non imputi nulla risulta $wh => 1=1 (estrai tutti i record)
se solo autore $wh =>  autore LIKE '$autore%' AND 1=1
se solo titolo $wh =>  titolo LIKE '$titolo%' AND 1=1
se imputi autore e titolo $wh =>  autore LIKE '$autore%' AND titolo LIKE '$titolo%' AND 1=1
da cui la query
*/
$query="SELECT * FROM lp WHERE $wh"; 
        $dbResult = mysql_query($query, $db);
        $AffectedRows = mysql_affected_rows($db);
        print "<table border=\"1\">\n";
        for ($index=0 ; $index<$AffectedRows ; $index++)
        {
            $row=mysql_fetch_row($dbResult);
            if($index==0)
            {                         
                print "<tr>\n";
                foreach ($row as $k => $v)
                {
                    $myfield = mysql_fetch_field($dbResult,$k);
                    print ("<td><b>" . $myfield->name . "</b></td>");
                }
                print "</tr>\n";
            }
            foreach ($row as $k => $v)
            {
                print ("<td>$v&nbsp;");
                if ($k==0)
                {
                    print "<br>";
                    print "<a href=\"cancella.php?id=$v\">Del</a>";
                    print "<br>";
                    print "<a href=\"modifica.php?id=$v\">Mod</a>";
                }
                print ("</td>");
            }
        print "</tr>\n";
        
        }
        print "</table>\n";
        mysql_free_result($dbResult);
        mysql_close($db);
        
                ?>
    </body>
</html>
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Cercare un file all'interno della directory virtuale IIS PHP 3
A Cercare un carattere uguale in due stringhe Java 5
B Sono qui per cercare partner o collaborazioni tecniche Presentati al Forum 1
M [PHP] Cercare l'ultima immagine caricata in una cartella datata PHP 15
F [PHP] Cercare voci uguali nel db e unire alcune variabili PHP 0
M [Visual Basic] Cercare un file pdf all'interno di una cartella attraverso il valore di una txtbox Visual Basic 1
M come cercare domini occasione Compravendita siti e domini 0
B Cercare il nome più popolare su una tabella PHP 11
E Cercare un valore e scrivere tutta la riga txt che lo contiene PHP 15
max_400 cercare una parola in una stringa PHP 5
T [risolto]Inserire in una variabile del codice HTML e poi cercare in quella variabile con getelements Javascript 8
E come cercare una stringa in un database mySQL PHP 9
D Non so come far cercare un intera stringa in una query specificata! PHP 4
M Cercare stringa in Xml PHP 0
O Cercare file di testo e se esiste stampare il suo contenuto a schermo PHP 3
N cercare in file.xml PHP 8
3 cercare su più tabelle Classic ASP 14
M [Java] Cercare una stringa in un file di testo Java 1
G Dove cercare domini liberi non europei? Domini 0
A dove trovo cartina italia divisa in regioni per cercare nelle province? Webdesign e Grafica 2
F access ricerca record con apostrofo. MS Access 0
T come ordinare dei record recuperati da due tabelle MySQL 0
T vista record tabellare MySQL 0
K form Inserimento record mysql PHP 2
R query DELETE non cancella i record PHP 1
M Accodare record presi da un altra tabella PHP 8
MarcoGrazia Trovare record nel database partendo da id non sequenziali PHP 6
G notifiche dekstop/mobile ogni volta che record è inserito/eliminato/aggiornato PHP 0
P Pagina modifica record che non funziona PHP 0
S Selezionare ultimo record di una sotto query MySQL 27
A Tabella con bottoni per aggiornamento record PHP 6
S Differenza date record successivi MS Access 7
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S Aggiornamento lista record Database 2
M Esportazione in CSV, salta il primo record PHP 4
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
A Raggruppare record con stessa data PHP 13
R Scorporare array e recuperare record tabella PHP 10
Tommy03 Select in ordine per numero di record MySQL 7
L Creazione di 2 o più record PHP 6
mazman mysqli_query() mi ritorna un array vuoto anche se presente un record nella tabella PHP 13
L contare record uguali in file csv PHP 4
M Estrapolare singoli record da intervallo (dal al/inizio fine) MS Access 0
max1974 [MySQL] Estrapolare record finti/inisistenti MySQL 9
G [PHP] Passare dati tra record PHP 4
G Cambiare colore ad un record database mysql MySQL 0
S elimina record sql asp classic Classic ASP 5
S [MS Access] Apertura Maschera su nuov record in base a determinato ID MS Access 0
M leggere con jquery/ajax in una function javascript record di database sql server Javascript 0
P [PHP] Stampare record di diverse tabelle ma con nomi uguali PHP 6

Discussioni simili