Să presupunem că dorim să facem o filtrare folosind drept criteriu datele dintr-un combobox (element de tip Option). Pentru a folosi date în timp real, în funcţie de conţinutul din baza de date, se poate utiliza codul.
Populare combobox
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php IF (ISSET($_POST['filtru'])) { $titluJob=$_POST['job_title'];} $sql = " SELECT DISTINCT job_title FROM suppliers ORDER BY job_title "; $result = mysqli_query($con, $sql); ?> <form action='<?php ECHO $_SERVER['PHP_SELF']; ?>' method='POST' name='form_filter' > <table> <tr> <td> <select name="job_title" id="job_title"> <option disabled selected value> -- Alege titlul job-ului -- </option><?php WHILE ($tip_j = mysqli_fetch_array($result, MYSQLI_ASSOC)) { $titlu_job=$tip_j['job_title'];?> <option value="<?php ECHO $titlu_job;?>" <?php IF (ISSET($titluJob) && $titluJob==$titlu_job) ECHO ' selected';?>> <?php ECHO $titlu_job;?> </option><?php } ?> </select> </td> <td style="vertical-align:top;"> <input type='submit' name="filtru" value = 'Filtrare'> </td> </tr> </table> </form> |
Trebuie remarcat IF-ul de la OPTION, care stochează valoarea în combobox la acţionarea butonului de filtrare; altfel, odată apăsat butonul, câmpul va fi golit din OPTION. Alternativa pentru această stocare, în loc de
1 2 3 |
<option value="<?php ECHO $titlu_job;?>" <?php IF (ISSET($titluJob) && $titluJob==$titlu_job) ECHO ' selected';?>> <?php ECHO $titlu_job;?> </option> |
se poate folosi
1 2 3 4 |
IF (ISSET($titluJob) && $titluJob==$titlu_job) {ECHO "<option value='$titlu_job' selected>$titlu_job</option>";} ELSE {ECHO "<option value='$titlu_job' >$titlu_job</option>";} |
Afişare conţinut filtrat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<?php IF(ISSET($_POST['filtru']) && STRLEN($_POST['job_title'])>0) { $job_title = mysqli_real_escape_string($con, $_POST['job_title']); ECHO "<center>Aţi ales să afişaţi furnizorii pentru <strong>$job_title</strong>.</center>"; $sql_l = " SELECT * FROM suppliers WHERE job_title='$job_title' ORDER BY job_title "; ?> <center><table border=1> <thead> <tr> <th>Id</th> <th>Company</th> <th>Last Name</th> <th>First Name</th> </tr> </thead> <tbody> <?php $rez_l = mysqli_query($con, $sql_l);// or die("database error:". mysqli_error($con)); WHILE( $rd_l = mysqli_fetch_assoc($rez_l) ) {?> <tr id="<?php ECHO $rd_l['id']; ?>"> <td><?php ECHO $rd_l['id']; ?></td> <td><?php ECHO $rd_l['company']; ?></td> <td><?php ECHO $rd_l['last_name']; ?></td> <td><?php ECHO $rd_l['first_name']; ?></td> </tr> <?php } ?> </tbody> </table></center><?php } ELSE { ECHO '<center>Trebuie ales un titlu de job</center>'; }?> |
Rezultatul este precum cel prezentat în imaginea de mai sus.
O variantă avansată poate fi consultată în acest articol.