• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyszukiwarka sql na stronie

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
409 wizyt
pytanie zadane 3 kwietnia 2021 w PHP przez mateusz45 Gaduła (3,280 p.)
cześć . mam stronę z bazą danych i na stronie wyświetla się to co jest w bazie danych a ja chce zrobić prostą zwykłą  wyszukiwarkę która  znajdzie w bezie dany przedmiot tylko że mało co rozumiem strony na  których pisze jak to zrobić więc proszę nie wysyłajcie w odpowiedzi linka do strony (no chyba że faktycznie jest tam fajne rozwiązanie) tylko napiszcie lub naprowadźcie mnie trochę bardziej jak to zrobić

 

ps wiem że można wyszukiwać polecenie sql no ale  przeciętny user na stronie nie ma dostępu do bazy ani wiedzy żeby sobie wyszukać poleceniem sql z góry dzięki za odpowiedzi

3 odpowiedzi

0 głosów
odpowiedź 3 kwietnia 2021 przez Wiciorny Ekspert (278,610 p.)
No powinieneś znać język - któy komunikuje się z bazą danych i za pomocą tego języka komunikować się - tworzyć interakcję z tą bazą, gdzie np. odpowiednim argumentem, parametrem ( szukaną zawartością) będzie to co wybiera np. czy wpisuje użytkownik w wyszukiwanie, na podstawie tej frazy budujesz odpowiednie zapytanie, tzn z wykorzystaniem tej frazy .

Wiec np jesli masz baze przedmiotów to tworzysz odp. zapytanie SQL z argumentem - jaki podaje ten użytkownik, bo nie bardzo rozumiem problem?
Nie wiem czym się łączysz jakiego API używasz pomiedzy wyszukiwarka, a bazą
komentarz 3 kwietnia 2021 przez mateusz45 Gaduła (3,280 p.)
ej a dało by rade zrobić coś takiego że to co wpisze użytkownik  jest np zapisywane w zmiennej w php i stworzyć zapytanie sql żeby wyszukało zawrotnej zmiennej?
0 głosów
odpowiedź 3 kwietnia 2021 przez wizarddos Nałogowiec (26,590 p.)
Ja to zwykle robiłem tak

Tworzymy formularz wyszukiwania. (jeden input i submit)

W skrypcie validujemy dane wpisywane w formie

Potem wykonujemy zapytanie SELECT do bazy

Jeżeli coś dalej wytłumaczyć to pisz tutaj
komentarz 3 kwietnia 2021 przez mateusz45 Gaduła (3,280 p.)
dasz jakiś cały przykład gotowego skryptu bo nie mogę zrozumieć w pełni. Bendę bardzo wdzięczny
komentarz 3 kwietnia 2021 przez wizarddos Nałogowiec (26,590 p.)
                <?php
                    $tresc = $_GET['search'];
                    $kategoria = $_GET['category'];
                    try{
                        require_once "connect.php";
                        $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
                        if ($polaczenie->connect_errno!=0){throw new Exception(mysqli_connect_errno());}
                        else{
                            $tresc = htmlentities($tresc, ENT_QUOTES, "UTF-8");
                            if($rezultat = $polaczenie->query("SELECT * FROM produkty WHERE nazwa = '$tresc' OR  kategorie = '$kategoria' ")){
                                $ile = $rezultat->num_rows;
                                if($ile > 0)
                                {
                                    $wiersz = $rezultat->fetch_assoc();
                                        foreach($rezultat as $wiersz){
                                            $id = $wiersz['idproduktu']; 
                                            $imgname = $wiersz['nazwaobrazka'];
                                            $desc = $wiersz['opis'];
                                            $data = $wiersz['datawys'];
                                            $nazwa = $wiersz['nazwa'];
                                            $cena = $wiersz['cena'];
                                            $kategoria = $wiersz['kategorie']; 
                                            echo<<<END
                                                <form method = "post" action = "produkt.php" target = "_parent">
                                                    <br/>
                                                    <div class = "produkt">
                                                        <div id = "img">
                                                            <img src = "produkty/$imgname"/>
                                                        </div>
                                                        <div id = "reszta">
                                                            <h4>$nazwa</h4>
                                                            <h5>$cena zł</h5>
                                                            <p>$desc</p>
                                                            <input type = "submit" id = "przejdz" value = "zobacz produkt"/>
                                                        </div>
                                                        <input type = "hidden" value = "$id" name = "id"/>
                                                    </div>
                                                </form>
                                            END;
                                        }
                                }else{
                                    echo'<div class = "pustwWynik">Nie zanaleziono żadnych produktów.<br />
                                        <a href = "wyszukaj.php">Wróć do wyszukiwarki</a>
                                    </div> ';
                            }    }
                        }
                    }catch(Exception $e){
                        echo '<span style = "color: aqua">Błąd serwera</span>';
                        echo 'informacja deweloperska'.$e;
                    }
                ?>

To było moje rozwiązanie z starego projektu. Nie polecam kopiować kodu PHP bo jest naprawdę  słabej jakości

0 głosów
odpowiedź 5 kwietnia 2021 przez VBService Ekspert (256,320 p.)
edycja 5 kwietnia 2021 przez VBService

Propozycja  smiley

 

index.php

<?php
  if ($_SERVER["REQUEST_METHOD"] == "POST") { // 1
    if (! empty($_POST['searched_word'])) { // 2
      $searched_word = trim($_POST['searched_word']);
      
      if (strlen($searched_word) >= 3) { // 3
        try { // 4
          require_once('db_functions.php');
          $search = search($searched_word);

          if ($search != null) { // 5
            $search_result = '';
            foreach ($search as $data) { // 6
              $search_result .= '<div class="search-result-row">'
                               .'  <span class="search-result-title">'.$data['nazwa_kolumny_1'].'</span><br>'
                               .'  <span class="search-result-description">'.$data['nazwa_kolumny_2'].'</span>'
                               .'</div>';
            } // 6
          } else { // 5
            $search_result = '<div class="search-result-empty">'
                            ."Dla szukanego słowa: <b>{$searched_word}</b> - nie znaleziono żadnych wyników"
                            .'</div>';
          }
        } catch (Exception $e) { // 4
          $search_result = $e->getMessage();
        }
      } else { // 3
        $search_result = 'Szukane słowo powinno zawierać min. 3 znaki';
      }
    } else { // 2
      $search_result = '';
    }
  } else { // 1
    $search_result = '';
  }
?>
<!DOCTYPE html>
<html lang="pl">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

  <style>
    *, *:before, *:after {
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }
    body {
      margin: 0;
      padding: 0;
      border: 0;
    }

    /* Css do demonstracji */
    .container {
      width: 95vw;
      margin: 0  auto;
      font: 1em/1.4em monospace;
    }
    input, label {
      margin: 0.5em;
    }
    input[type="submit"] {
      cursor: pointer;
    }
    input[type="text"] {
      padding: 0.2em;
    }
    input[type="text"]:focus {
      outline: none;
      box-shadow: 0 0 4px rgba(0,128,0,1);
    }
    input[type="text"]::-webkit-input-placeholder {
      font: 0.8em monospace;
      color: gray;
      transition: all 0.5s;
    }
    input[type="text"]:focus::-webkit-input-placeholder {
      word-spacing: 2em;
      color: rgba(128,128,128,0);
      padding-left: 2em;
    }
    .search-result-container {
      margin-top: 1em;
    }
    .search-result-row {
      /* Twój css */
    }
    .search-result-row .search-result-title {
      /* Twój css */
    }
    .search-result-row .search-result-description {
      /* Twój css */
    }
    .search-result-empty {
      /* Twój css */
      color: red;
    }
  </style>
  </head>
  <body>
    <div class="container">

      <div class="search">
        <form action="" method="post">
          <label for="searched_word">Szukaj</label>
          <input type="text" name="searched_word" id="searched_word" placeholder="Wpisz szukane słowo" required>
          <input type="submit" value="Szukaj">
        </form>
      </div>
      <div class="search-result-container">
        <?php echo $search_result; ?>
      </div>

    </div>
  </body>
</html>

db_functions.php

<?php
  define('HOST','localhost');
  define('USER','root');
  define('PASS','');
  define('DB','nazwa_bazy');

  function connect($conn = null) {
    if ($conn == null) {
      $conn = mysqli_connect(HOST,USER,PASS,DB) or die("Błąd połączenia!");
      return $conn;
    } else {
      $conn->close();
    }
  }

  function search($word) {
    $conn = connect();

    $sql = 'SELECT * FROM nazwa_tabeli WHERE nazwa_kolumny = ?';
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('s', $word);
    $stmt->execute();

    $res = $stmt->get_result();
    $stmt->close();
    connect($conn);

    if ($res->num_rows) {
      return $res->fetch_all(MYSQLI_ASSOC);
    } else {
      return null;
    }
  }
?>

Podobne pytania

–1 głos
1 odpowiedź 466 wizyt
0 głosów
1 odpowiedź 270 wizyt
0 głosów
2 odpowiedzi 138 wizyt

93,164 zapytań

142,176 odpowiedzi

321,938 komentarzy

62,492 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 688p. - dia-Chann
  2. 676p. - CC PL
  3. 675p. - Łukasz Piwowar
  4. 664p. - Marcin Putra
  5. 662p. - Łukasz Eckert
  6. 649p. - Michal Drewniak
  7. 641p. - rafalszastok
  8. 641p. - rucin93
  9. 629p. - Piotr Aleksandrowicz
  10. 621p. - Dawid128
  11. 602p. - Michał Telesz
  12. 597p. - Hubert Chęciński
  13. 572p. - ssynowiec
  14. 500p. - TheLukaszNs
  15. 437p. - nidomika
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...