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

Wyszukiwarka sql na stronie

Object Storage Arubacloud
+1 głos
312 wizyt
pytanie zadane 3 kwietnia 2021 w PHP przez mateusz45 Gaduła (3,240 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 (269,590 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,240 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 (25,930 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,240 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 (25,930 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 (252,660 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ź 362 wizyt
0 głosów
1 odpowiedź 233 wizyt
0 głosów
2 odpowiedzi 113 wizyt

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...