Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][HTML][PHP]Wyświetlenie bazy i szukanie rekordu
Forum PHP.pl > Forum > Przedszkole
romkli
Witam wszystkich serdecznie. Na tym forum jestem nowy i potrzebuję pomocy w podpowiedzi jak temacie.
Może na początek opiszę założenia: Mam bazę ludzi, wyświetlam ich w tabeli, chciałbym szukać po imieniu i nazwisku (coś w rodzaju find person). W założeniu mam, by szykał nie po naciśnięciu klawisza szukaj, ale po wciśnięciu pierwszej i kolejnych liter, czyli R, wyświetla mi wszystkich (z ograniczenie iliści wyświetlanych rekordów do pięciu) na literę R,. Następnie po naciśnięciu 'o' (suma to 'Ro') wyświetla mi wszystkich zaczynających się na 'Ro' itd
Wiem, że muszę napisać to w JS, ale dopiero raczkuję w nim.
Proszę, podpowiedżcie mi, jak to się fachowo nazywa oraz jak to możliwe jakieś przykłady? W kolejnym wątku dam trochę kodu, jak uporządkuje jego, bo jak narazie jest galimatias.
arturpiotrowski
https://jqueryui.com/autocomplete/ ?
romkli
Podstrona do szukania po imieniu i nazwisku:
search.php:
  1. <!DOCTYPE html>
  2. <html lang="pl">
  3.  
  4. <meta charset="utf-8" />
  5.  
  6. body{
  7. background-color: #222222;
  8. font-size: 24px;
  9. color: white;
  10. }
  11. </style>
  12. <script type="text/javascript">
  13. function read_keyboard_firstname()
  14. {
  15. var firstname = document.getElementById("first_name").value;
  16. document.getElementById("firstn").innerHTML=firstname;
  17. }
  18.  
  19. function read_keyboard_lastname()
  20. {
  21. var lastname = document.getElementById("last_name").value;
  22. document.getElementById("lastn").innerHTML=lastname;
  23. }
  24. </script>
  25. </head>
  26.  
  27. <?php
  28. session_start();
  29. require_once "include/function.php";
  30. require_once "include/function_input.php";
  31. require_once "include/function_people.php";
  32.  
  33. select_people( $first_name, $last_name );
  34. ?>
  35. </body>
  36. </html>


Plik z funkcją do wyświetlania rekordów w tabeli wygląda tak:
  1. <?php
  2. function select_people( $first_name, $last_name ){
  3. require_once "connect.php";
  4. $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
  5. if ($polaczenie->connect_errno != 0) {
  6. throw new Exception(mysqli_connect_errno());
  7. } else {
  8. $rezultat = $polaczenie->query("SELECT * FROM people WHERE first_name LIKE '$first_name%' AND last_name LIKE '$last_name%' LIMIT 5");
  9. $ile = mysqli_num_rows($rezultat);
  10. echo 'Znaleziono: '.$ile.' rekordów</br>';
  11. echo '<table align="center" border="1">';
  12. echo '<tr>';
  13. echo '<th>First name</th>';
  14. echo '<th>Last name</th>';
  15. echo '<th>Option</th>';
  16. echo '</tr>';
  17. echo '<tr>';
  18. echo '<th>'?><input type="text" id="first_name" name="first_name" <?php if (isset($first_name)){ echo 'value = "'.$first_name.'"'; } ?> id="first_name" onkeypress = "read_keyboard_firstname()";/><?php echo '</th>';
  19. echo '<th>'?><input type="text" id="last_name" name="last_name" <?php if (isset($last_name)){ echo 'value = "'.$last_name.'"'; } ?> id="last_name" onkeypress = "read_keyboard_lastname();"/><?php echo '</th>';
  20. echo '<th><a href="kokpit.php?id_people='. $id_people .'">Dodaj</a></th>';
  21. echo '</tr>';
  22. '<tr>';
  23. echo '<th><div id="firstn"></div></th>';
  24. echo '<th><div id="lastn"></div></th>';
  25. echo '<th></th>';
  26. echo '</tr>';
  27. for ($i = 1; $i <= $ile; $i++) {
  28. $row = mysqli_fetch_assoc($rezultat);
  29. $id_people = $row['id_people'];
  30. $first_name = $row['first_name'];
  31. $last_name = $row['last_name'];
  32. echo '<tr>';
  33. echo '<td>' . $first_name . '</td>';
  34. echo '<td>' . $last_name . '</td>';
  35. echo '<td></td>';
  36. echo '</tr>';
  37. }
  38. echo '</table>';
  39. $polaczenie->close();
  40. }
  41. }
  42. ?>


Wada mojej strony jest to, że z opóźnieniem jednej litery wyświetla mi literę, czyli po wciśnięciu 'R' nic nie wyświetla, dopiero po wciśnięciu 'o' wyświetla mi pierwszą literę 'R itd. W tym kodzie jeszcze nie mam napisanego jak przerobić wyświetlane litery by mogły być użyte do szukania jeszcze nie szuka.
Kishin
zamień onkeypress na onKeyUp.
romkli
Cytat(Kishin @ 3.01.2017, 10:22:06 ) *
zamień onkeypress na onKeyUp.

Dzieki, pomogło. Nie ma teraz opóźnienia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.