Php e Mysql In quest'articolo vedremo come il php interagisce con il database Mysql. Supponiamo di aver già creato in Mysql un database di nome 'db_names' e una tabella di nome 'tab_names' in cui vogliamo memorizzare nome, cognome ed età di alcune persone. I campi della tabella li chiamiamo 'name' , 'surname' ,'age'. Per creare un database e una tabella possiamo ad esempio servirci di PhpMyAdmin. Ora andiamo a vedere le azioni principali che si possono compiere in un databse e cioè l' inserimento dati, la cancellazione dati e la lettura dei dati. INSERIMENTO DATI Per l'inserimento dei dati andiamo a creare una pagina di nome insert.php. Questa pagina conterrà innanzitutto il codice di connessione al database: $host="my_host"; $user="my_user"; $password="my_password"; $myconn=mysql_connect($host,$user,$password) or die("Connection error"); $db_name="db_names"; mysql_select_db($db_name,$myconn); mysql_connect serve a connettersi al database e prende come argomenti $host,$user e $password dove dovete salvare i parametri di connessione al vostro database Mysql. mysql_select_db seleziona invece il database con il quale volete operare e prende come argomenti il nome del database e il nome della connessione. Ora andiamo a scrivere inserire il codice per inserire i dati del signor Tizio Caio nella tabella: $query_sql="INSERT INTO tab_names VALUES('Tizio','Caio','30');"; $result=mysql_query($query_sql,$myconn); Nella variabile $query_sql è stata memorizzata l'istruzione che inserisce i dati nel database mentre mysql_query esegue l'istruzione. LETTURA DATI Ora supponiamo di voler leggere i dati scritti nella tabella tab_names. Andremo perciò a costruirci la pagina read.php contenente il codice per leggere la tabella. $myconn=mysql_connect($host,$user,$password) or die("Connection error"); $db_name="db_names"; mysql_select_db($db_name,$myconn); $query_read="SELECT * FROM tab_names"; $result=mysql_query($query_read,$myconn); $row_number=mysql_num_rows($result); for ($i=0;$i<$row_number;$i++) { $array_result=mysql_fetch_row($result); $name=$array_result[0]; $surname=$array_result[1]; $age=$array_result[2]; echo $name."|".$surname."|".$age; } Andiamo a commentare il codice. Inizialmente ho la connessione al database, che abbiamo visto in precedenza, poi assegno a $query_read l'istruzione sql per leggere tutti i record nel database. I risultati della query li memorizzo nella variabile $result. Successivamente tramite l'istruzione mysql_num_rows si va a trovare quanti record sono stati letti e il numero viene memorizzato nella variabile $row_number. A questo punto, tramite un ciclo for, si va a leggere ogni record memorizzato in tabella e i singoli campi della tabella vengono memorizzati nell'array $array_result. Infine tramite l'istruzione echo, stampiamo il contenuto dei record nella tabella. CANCELLAZIONE DATI Analizziamo ora l'operazione riguardante la cancellazione dei dati dalla tabella.Andiamo a costruirci la pagina delete.php contenente le seguenti istruzioni. $myconn=mysql_connect($host,$user,$password) or die("Connection error"); $db_name="db_names"; mysql_select_db($db_name,$myconn); $query_delete="DELETE * FROM tab_names WHERE name='Tizio'"; $result=mysql_query($query_delete,$myconn); Come sempre ci connettiamo al database e assegniamo l'istruzione per la cancellazione del signor Tizio a $query_delete. L'istruzione mysq_qyery provvede ad eseguire l'istruzione e a cancellare il signor Tizio dalla tabella tab_names. RIEPILOGO Riepilogo il l'intero codice delle tre pagine in php costruite per l'inserimento dati, la lettura dati e la ncellazione. INSERT.PHP $ host="my_host"; $user="my_user"; $password="my_password"; $myconn=mysql_connect($host,$user,$password) or die("Connection error"); $db_name="db_names"; mysql_select_db($db_name,$myconn); $query_sql="INSERT INTO tab_names VALUES('Tizio','Caio','30');"; $result=mysql_query($query_sql,$myconn); READ.PHP $myconn=mysql_connect($host,$user,$password) or die("Connection error"); $db_name="db_names"; mysql_select_db($db_name,$myconn); $query_read="SELECT * FROM tab_names"; $result=mysql_query($query_read,$myconn); $row_number=mysql_num_rows($result); for ($i=0;$i<$row_number;$i++) { $array_result=mysql_fetch_row($result); $name=$array_result[0]; $surname=$array_result[1]; $age=$array_result[2]; echo $name."|".$surname."|".$age; } DELETE.PHP $myconn=mysql_connect($host,$user,$password) or die("Connection error"); $db_name="db_names"; mysql_select_db($db_name,$myconn); $query_delete="DELETE * FROM tab_names WHERE name='Tizio'"; $result=mysql_query($query_delete,$myconn); DELETING RECORDS The query form used to access this script would be similar to the one used for editing a record. A list of existing data would be displayed and below it a form to choose a line for removal. The script is identical to the update form but calls the script birthdays_delete_record.php. birthdays_delete_form.php <html><head><title>Birthdays Update Form</title> </head> <body> <? /* Change next two lines if using online */ $db="newdb"; $link = mysql_connect('localhost', '', ''); if (! $link) die(mysql_error()); mysql_select_db($db , $link) or die("Couldn't open $db: ".mysql_error()); $result = mysql_query( "SELECT * FROM birthdays" ) or die("SELECT Error: ".mysql_error()); $num_rows = mysql_num_rows($result); print "There are $num_rows records.<P>"; print "<table width=600 border=1>\n"; while ($get_info = mysql_fetch_row($result)){ print "<tr>\n"; foreach ($get_info as $field) print "\t<td>$field</td>\n"; print "</tr>\n"; } print "</table>\n"; mysql_close($link); ?> <br> <form method="POST" action="birthdays_delet_record.php"> <pre> Enter Id Number to Edit: <input type="text" name="id" size="5"> <input type="submit" value="Submit"><input type="reset"> </pre> </form> </body> </html> birthdays_delete_record.php <? $id=$_POST['id']; $db="newdb"; $link = mysql_connect("localhost", "root", ""); if (! $link) die("Couldn't connect to MySQL"); mysql_select_db($db , $link) or die("Couldn't open $db: ".mysql_error()); mysql_query("DELETE FROM birthdays WHERE id=$id"); mysql_close($link); ?> La cancellazione di record presenti in una tabella è un'operazione che richiede l'esecuzione di una semplice query. Ad esempio per cancellare dalla tabella utenti il record con id pari a 5 basta lanciare la seguente query. DELETE FROM utenti WHERE id = 5 Per eseguire questa cancellazione in PHP è sufficiente quindi il seguente script: <?php // richiamo il file di configurazione require 'config.php'; // richiamo lo script responsabile della connessione a MySQL require 'connect.php'; // preparo la query $query = "DELETE FROM utenti WHERE id = 5"; // invio la query $result = mysql_query($query); // controllo l'esito if (!$result) { die("Errore nella query $query: " . mysql_error()); } // chiudo la connessione a MySQL mysql_close(); echo 'Query eseguita correttamente'; ?> Di solito però lo script che deve cancellare dei dati non sa a priori quale record eliminare. In un contesto interattivo è l'utente ad indicare cosa cancellare, e lo fa cliccando su di un link o selezionando in altro modo i record da eliminare. Lo script quindi dovrebbe occuparsi di mostrare i dati all'utente, permettergli di selezionare quelli da cancellare, ed infine effettuare l'operazione. Vediamo quindi come realizzare uno script che mostra l'elenco dei record presenti nella tabella "utenti", associando a ciascuno di essi un link e una checkbox attraverso cui selezionare quelli da eliminare. Lo script verrà suddiviso in due pari, la prima adibita alla creazione dell'elenco di record disponibili, con relativi link e checkbox, la seconda per l'eliminazione del record identificato dall'id passato via $_GET o via $_POST. <?php // richiamo il file di configurazione require 'config.php'; // richiamo lo script responsabile della connessione a MySQL require 'connect.php'; if($_POST) { $ids = isset($_POST['id']) ? $_POST['id'] : array(); elimina_record($ids); } elseif(isset($_GET['id'])) { elimina_record(array($_GET['id'])); } else mostra_lista(); function mostra_lista() { // mostro un eventuale messaggio if(isset($_GET['msg'])) echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />'; // preparo la query $query = "SELECT id,nome FROM utenti"; // invio la query $result = mysql_query($query); // controllo l'esito if (!$result) { die("Errore nella query $query: " . mysql_error()); } echo ' <form name="form1" method="post" action=""> <table border="1"> <tr> <th>&nbsp;</th> <th>Nome</th> <th>&nbsp;</th> </tr>'; while ($row = mysql_fetch_assoc($result)) { $nome = htmlentities($row['nome']); // preparo il link per la modifica dei dati del record $link = $_SERVER['PHP_SELF'].'?id=' . $row['id']; echo "<tr> <td><input name=\"id[]\" type=\"checkbox\" value=\"$row[id]\" /></td> <td>$nome</td> <td><a href=\"$link\">elimina</a></td> </tr>"; } echo '</table> <br /> <input type="submit" name="Submit" value="Elimina record selezionati" /> </form>'; // libero la memoria di PHP occupata dai record estratti con la SELECT mysql_free_result($result); // chiudo la connessione a MySQL mysql_close(); } function elimina_record($ids) { // verifico che almeno un id sia stato selezionato if(count($ids) < 1) { $messaggio = urlencode("Nessun record selezionato!"); header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio); exit; } // per precauzione converto gli ID in interi $ids = array_map('intval',$ids); // creo una lista di ID per la query $ids = implode(',',$ids); // preparo la query $query = "DELETE FROM utenti WHERE id IN ($ids)"; // invio la query $result = mysql_query($query); // controllo l'esito if (!$result) { die("Errore nella query $query: " . mysql_error()); } // conto il numero di record cancellati $num_record = mysql_affected_rows(); // chiudo la connessione a MySQL mysql_close(); $messaggio = urlencode("Numero record cancellati: $num_record"); header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio); } ?> La funzione mostra_lista() si occupa di creare l'elenco dei record all'interno di un form. Per ciascuno di essi viene mostrato il nome, a cui viene applicata la funzione htmlentities() per la conversione dei caratteri nelle relative entità HTML, il link per la cancellazione diretta e la checkbox di selezione. La funzione elimina_record() invece provvede alla cancellazione dei record selezionati. Gli id dei record vengono passati all'interno dell'array $ids (riga 10,11,15). Questi vengono prima convertiti in numeri interi per precauzione (riga 83), trasformati in una stringa di id separai da virgola (riga 86) ed infine inseriti nella query (riga 89). Eseguita la query vengono contati i record effettivamente interessati da questa operazione attraverso la funzione mysql_affected_rows() (riga 100) e viene effettuato un redirect all'URL corrente per evitare possibili problemi legati al refresh della pagina, come visto nella Lezione 5. Anche in questo caso un messaggio viene accodato all'URL che verrà visualizzato all'inizio della funzione mostra_lista(). Un punto debole dello script presentato risiede nel passaggio degli id dei record da cancellare attraverso un link ($_GET) o una checkbox ($_POST), elementi comunque accessibili all'utente e pertanto soggetti a manomissione. Supponiamo ad esempio che un utente abbia i permessi sufficienti per poter cancellare solo i record con id compreso tra 1 e 10. La funzione mostra_lista() deve quindi mostrare solo questi record ma nulla vieta all'utente di manomettere un link per la cancellazione inserendo un id superiore a 10. Senza nessun controllo quindi l'utente potrebbe eliminare record su cui non ha i permessi. Diverse le possibili soluzioni al problema. Prima di effettuare la DELETE si potrebbe verificare che l'id passato sia tra quelli accessibili all'utente impiegando la stessa logica usata da mostra_lista() per la loro individuazione. Se tale procedimento risulta oneroso mostra_lista() potrebbe salvare in sessione gli id dei record accessibili all'utente. Contro la manomissione dei link esiste anche una particolare tecnica denominata HMAC implementata nel package PEAR::Crypt_HMAC Inserire e Cancellare un Record da un Database MySQL Dopo aver visto come effettuare una ricerca all’interno di un database mysql, oggi vediamo nel dettaglio come inserire ed eliminare un record da una determinata tabella. Per fare ciò andremo ad utilizzare alcune semplici pagine php e due form html, all’interno dei quali inseriremo il nome da aggiungere ed eventualmente quello da cancellare. Per prima cosa andiamo a creare una pagina php o html in cui inserire i form per l’eliminazione e l’inserimento di un nuovo record. A seguito il codice da inserire in una pagina php e successivamente quello per una pagina html. Da ricordare che il form per l’inserimento dovrà agire su inserisci.php mentre quello relativo all’eliminazione su elimina.php come nell’esempio. echo" <form action=\"elimina.php\" method=\"post\"> <input type=\"text\" name=\"oggetto\" /> <input type=\"submit\" name=\"submit\" value=\"Elimina\" /> </form>"; <form action="elimina.php" method="post"> <input type="text" name="oggetto" /> <input type="submit" name="submit" value="Elimina" /> </form> Dopo aver creato la pagina con i due form andremo a realizzare le due pagine in php, le quali ci permetteranno di inserire o rimuovere un record dal nostro database. Quella relativa alla rimozione prenderà il nome “elimina.php” mentre l’altra si andrà a chiamare “inserisci.php”. <?php include_once("config.php"); $oggetto = $_POST['oggetto']; mysql_query("DELETE FROM Tabella WHERE record=".$oggetto); ?> Il codice per l’inserimento è molto base e fa riferimento ad una banale tabella con un solo parametro, in questo caso chiamato oggetto. Per inserire record con più parametri è sufficiente creare più form ed elencare nel codice sottostante tutte le variabili aggiuntive, ovviamente separando i loro nomi con una virgola. <?php include_once("config.php"); $sql="INSERT INTO Tab (oggetto) VALUES ('$_POST[oggetto]')"; //esempio con più parametri $sql="INSERT INTO Tab (oggetto,oggetto2,oggetto3) VALUES ('$_POST[oggetto]','$_POST[oggetto2]','$_POST[oggetto3]' )"; $result = mysql_query($sql) or die ("ERRORE"); ?php> Delete records from MySQL database is an easily SQL command. You need to put the key value just as id, name or others into this command. This tutorial use the file select.php from Update Record tutorial and make a new file delete.php. Syntax : delete from table_name where column_name='value' This tutorail need 2 files. 1. select.php from Update Record tutorial. 2. delete.php • select.php In this file, you have to put some codes for a new link. This link will send GET method parameter to delete.php. select.php <? // Connect database include("connectdb.php"); // Get all records in all columns from table and put it in $result. $result=mysql_query("select * from phonebook"); /*Split records in $result by table rows and put them in $row. Make it looping by while statement. */ while($row=mysql_fetch_assoc($result)){ // Output echo "ID : $row['id'] <br/>"; echo "Name : $row['name'] <br/>"; echo "Email : $row['email'] <br/>"; echo "Tel : $row['tel'] <hr>"; // Add a link with a parameter(id) and it's value. This for update record at update.php echo '<a href="update.php?id='.$row['id'].'">Update</a>'; // Add a link with a parameter(id) and it's value. This for delete record at delete.php echo '<a href="delete.php?id='.$row['id'].'">Delete</a>'; } mysql_close(); ?> Browse "select.php" by go to http://localhost/select.php. Result : (Links below are NOT real on this page) ID : 1 Name : Jack Email : [email protected] Tel : 12345678 Update Delete <- when you mouse over this. It will show "http://localhost/delete.php?id=1"in your browser's status bar. ID : 2 Name : Joe Email : [email protected] Tel : 87654321 Update Delete <- when you mouse over this. It will show "http://localhost/delete.php?id=2" in your browser's status bar. ... The values are the same as ID parameters. When you click on these links, the page will change to delete.php. • delete.php This file will get parameter($id) from select.php and delete the record where id column equal in $id . insert.php <? // Connect database. include("connectdb.php"); // Get values from form. $id=$_GET['id']; // Do delete statement. mysql_query("delete from phonebook where id='$id'"); // Close database connection mysql_close(); // Redirect to select.php. header("location:select.php"); ?> Test Browse select.php on your web browser as http://localhost/select.php and click on "Delete" link. This page will go to delete.php with id record and delete.php will delete this record and re-direct back to select.php immediately. LEZIONE 12: MYSQL In questa lezione conclusiva vedremo insieme come è possibile far interagire le nostre pagine .php con i database MySql. Per dovere di completezza non possiamo non ricordare che PHP è in grado di connettersi a diversi database server (MySql, MS Access, PostgreSql, Oracle, Microsoft Sql Server, Sybase,...) tuttavia noi ci limiteremo a vedere l'interazione con MySql che è senza dubbio la soluzione più comune e diffusa. MySql è un database veloce e potentissimo in grado di gestire applicazioni con un elvato grado di criticità e, cosa non secondaria, è un software open source, liberamente scaricabile dal sito www.mysql.com. Come abbiamo accennato nella lezione precedente PHP mette a disposizione dello sviluppatore diverse funzioni per interagire con i db MySql. Vediamo insieme le più importanti. Per prima cosa vediamo come fa PHP a connetersi al MySql Server. Allo scopo soccorre la funzione mysql_connect() che si utilizza con la seguente sintassi: mysql_connect(server, utente, password); Ad esempio: $myconn = mysql_connect('localhost', 'pippo', 'xxxxxx') or die("Errore...); Una volta stabilita la connessione è necessario selezionare uno specifico db sul quale lavorare. A questo scopo PHP ci fornisce la funzione mysql_select_db() da utilizzarsi con la seguente sintasi: mysql_select_db(database, connessione); Ad esempio: mysql_select_db('mio_database', $myconn) or die("Errore..."); Per prima cosa vediamo come è possibile recuperare dei dati presenti nel nostro database. Per fare questo dobbiamo formulare ed eseguire una query, la quale consiste in una interrogazione che lo sviluppatore rivolge al database. Per fare ciò si fa ricorso alla funzione mysql_query() con la seguente sintassi: mysql_query(query, connessione); Ad esempio: $query = "SELECT * FROM tabella"; $result = mysql_query($query, $myconn) or die("Errore..."); Facciamo ora un esempio completo. Poniamo di voler recuperare dalla tabella "amici" una serie di dati (nome, cognome e telefono) e di volerli stampare a video per ogni occorrenza trovata nel nostro database. Ecco il codice completo opportunamente commentato: <? //Mi connetto al MySql Server $myconn = mysql_connect('localhost', 'pippo', 'xxxxxx') or die("Errore...); //Mi connetto al database degli amici mysql_select_db('database_degli_amici', $myconn) or die("Errore..."); //Imposto ed eseguo la query $query = "SELECT nome, cognome, telefono FROM amici"; $result = mysql_query($query, $myconn) or die("Errore..."); //conto il numero di occorrenze trovate nel db $numrows = mysql_num_rows($result); //se il database è vuoto lo stampo a video if ($numrows==0){ echo "Database vuoto!"; } //Se invece trovo delle occorrenze... else { //Avvio un ciclo for che si ripete per il numero di occorrenze trovate for($x=0; $x<$numrows; $x++){ //Recupero il contenuto di ogni record rovato $resrow = mysql_fetch_row($result); $nome = $resrow[0]; $cofgnome = $resrow[1]; $telefono = $resrow[2]; //Stampo il risultato echo "nome: <b>" . $nome . "</b><br/>"; echo "cognome: <b>" . $cognome . "</b><br/>"; echo "telefono: <b>" . $telefono . "</b>"; } } ?> Quello che abbiamo fatto qui sopra dovrebbe eservi abbastanza chiaro (ricordate la lezione sui cicli?)... Resta pertanto da chiarire solo il significato di due funzioni specifiche che abbiamo utilizzato: mysql_num_rows() Serve per conteggiare il numero di records trovati all'interno del nostro db sulla base di una data query; mysql_fetch_row() Recupera il contenuto dei records trovati. Più precisamente restituisce una array contenente i valori di ogni campo riscontrato nel recordset. Cenni di SQL: INSERT INTO, UPDATE e DELETE Per finire vediamo brevemente come eseguire altre importanti operazioni con i database attraverso i più comuni comandi del linguaggio SQL. Con INSERT INTO si inseriscono nuovi dati nel db, con UPDATE si aggiornano dei dati già presenti, con DELETE si cancellano dei dati. Dal punto di vista di PHP queste operazioni non differiscono tra loro, l'unica cosa che cambia è la query che viene eseguita, ma questo discorso attine al linguaggio SQL. Facciamo degli esempi: Per INSERT INTO useremo: $query = "INSERT INTO tabella VALUES('valore1','valore2','valore3')"; Per UPDATE useremo: $query = "UPDATE tabella SET campo1='valore1', campo2='valore2', campo3='valore3' WHERE id = 1"; Per DELETE useremo: $query = "DELETE FROM tabella WHERE id = 1"; Attenzione! Se nelle query di UPDATE e DELETE non usiamo la clausola "WHERE" verranno aggiornati/eliminati tutti i record del db! Facciamo un esempio di utilizzo di queste query; vediamo come cancellare con PHP un record dal nostro database MySQL: <? //Mi connetto al MySql Server $myconn = mysql_connect('localhost', 'pippo', 'xxxxxx') or die("Errore...); //Mi connetto al database degli amici mysql_select_db('database', $myconn) or die("Errore..."); //Imposto ed eseguo la query $query = "DELETE FROM tabella WHERE id = 1"; $result = mysql_query($query, $myconn) or die("Errore..."); ?> Per le altre operazioni basterà sostituire la query mantenendo inalterata la struttura del PHP. Delete Multiple Rows Record Using Checkbox php_access_checkbox1.php 1. <html> 2. <head> 3. <title>ShotDev.Com Tutorial</title> 4. </head> 5. <body> 6. <script language="JavaScript"> 7. function onDelete() 8. { 9. if(confirm('Do you want to delete ?')==true) 10. { 11. return true; 12. } 13. else 14. { 15. return false; 16. } 17. } 18. </script> 19. <form name="frmMain" action="php_access_checkbox2.php" method="post" OnSubmit="return onDelete();"> 20. <? 21. $objConnect = odbc_connect("mydatabase","",""); 22. $strSQL = "SELECT * FROM customer"; 23. $objExec = odbc_exec($objConnect, $strSQL) or die ("Error Execute [".$strSQL."]"); 24. ?> 25. <table width="600" border="1"> 26. <tr> 27. <th width="91"> <div align="center">CustomerID </div></th> 28. <th width="98"> <div align="center">Name </div></th> 29. <th width="198"> <div align="center">Email </div></th> 30. <th width="97"> <div align="center">CountryCode </div></th> 31. <th width="59"> <div align="center">Budget </div></th> 32. <th width="71"> <div align="center">Used </div></th> 33. <th width="30"> <div align="center">Delete </div></th> 34. </tr> 35. <? 36. while($objResult = odbc_fetch_array($objExec)) 37. { 38. ?> 39. <tr> 40. <td><div align="center"><?=$objResult["CustomerID"];?></div></td> 41. <td><?=$objResult["Name"];?></td> 42. <td><?=$objResult["Email"];?></td> 43. <td><div align="center"><?=$objResult["CountryCode"];?></div></td> 44. <td align="right"><?=$objResult["Budget"];?></td> 45. <td align="right"><?=$objResult["Used"];?></td> 46. <td align="center"><input type="checkbox" name="chkDel[]" value="<?=$objResult["CustomerID"];?>"></td> 47. </tr> 48. <? 49. } 50. ?> 51. </table> 52. <? 53. odbc_close($objConnect); 54. ?> 55. <input type="submit" name="btnDelete" value="Delete"> 56. </form> 57. </body> 58. </html> php_access_checkbox2.php view plaincopy to clipboardprint? 1. <html> 2. <head> 3. <title>ShotDev.Com Tutorial</title> 4. </head> 5. <body> 6. <? 7. $objConnect = odbc_connect("mydatabase","",""); 8. 9. for($i=0;$i<count($_POST["chkDel"]);$i++) 10. { 11. if($_POST["chkDel"][$i] != "") 12. { 13. $strSQL = "DELETE FROM customer "; 14. $strSQL .="WHERE CustomerID = '".$_POST["chkDel"][$i]."' "; 15. $objQuery = odbc_exec($objConnect, $strSQL); 16. } 17. } 18. 19. echo "Record Deleted."; 20. odbc_close($objConnect); 21. ?> 22. </body> 23. </html> Create a php file and save to path root-path/myphp/ Run http://localhost/myphp/php_access_delete1.php Screenshot . . Example 2 (Check All Button) php_access_checkbox3.php view plaincopy to clipboardprint? 1. <html> 2. <head> 3. <title>ShotDev.Com Tutorial</title> 4. </head> 5. <body> 6. <script language="JavaScript"> 7. function ClickCheckAll(vol) 8. { 9. 10. var i=1; 11. for(i=1;i<=document.frmMain.hdnCount.value;i++) 12. { 13. if(vol.checked == true) 14. { 15. eval("document.frmMain.chkDel"+i+".checked=true"); 16. } 17. else 18. { 19. eval("document.frmMain.chkDel"+i+".checked=false"); 20. } 21. } 22. } 23. 24. function onDelete() 25. { 26. if(confirm('Do you want to delete ?')==true) 27. { 28. return true; 29. } 30. else 31. { 32. return false; 33. } 34. } 35. </script> 36. <form name="frmMain" action="php_access_checkbox2.php" method="post" OnSubmit="return onDelete();"> 37. <? 38. $objConnect = odbc_connect("mydatabase","",""); 39. $strSQL = "SELECT * FROM customer"; 40. $objExec = odbc_exec($objConnect, $strSQL) or die ("Error Execute [".$strSQL."]"); 41. ?> 42. <table width="600" border="1"> 43. <tr> 44. <th width="91"> <div align="center">CustomerID </div></th> 45. <th width="98"> <div align="center">Name </div></th> 46. <th width="198"> <div align="center">Email </div></th> 47. <th width="97"> <div align="center">CountryCode </div></th> 48. <th width="59"> <div align="center">Budget </div></th> 49. <th width="71"> <div align="center">Used </div></th> 50. <th width="30"> <div align="center"> 51. <input name="CheckAll" type="checkbox" id="CheckAll" value="Y" onClick="ClickCheckAll(this);"> 52. </div></th> 53. </tr> 54. <? 55. $i = 0; 56. while($objResult = odbc_fetch_array($objExec)) 57. { 58. $i++; 59. ?> 60. <tr> 61. <td><div align="center"><?=$objResult["CustomerID"];?></div></td> 62. <td><?=$objResult["Name"];?></td> 63. <td><?=$objResult["Email"];?></td> 64. <td><div align="center"><?=$objResult["CountryCode"];?></div></td> 65. <td align="right"><?=$objResult["Budget"];?></td> 66. <td align="right"><?=$objResult["Used"];?></td> 67. <td align="center"><input type="checkbox" name="chkDel[]" id="chkDel<?=$i;?>" value="<?=$objResult["CustomerID"];?>"></td> 68. </tr> 69. <? 70. } 71. ?> 72. </table> 73. <? 74. odbc_close($objConnect); 75. ?> 76. <input type="submit" name="btnDelete" value="Delete"> 77. <input type="hidden" name="hdnCount" value="<?=$i;?>"> 78. </form> 79. </body> 80. </html> Create a php file and save to path root-path/myphp/ Run http://localhost/myphp/php_access_delete3.php Screenshot . . .