Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z wyszukiwanie w bazie [php]
Forum PHP.pl > Forum > Przedszkole
gallardo83
Witam serdecznie
Mam oto taki problem - mam baze danych i chciałbym w niej wyszukać informacje po dowolnym polu - mój skrypt jest juz prawie - gotowy ale cos w nim jest źle - bardzo prosze o pomoc

Oto mój formularz wyszukiwania:
Kod
<html>
<head>
<title> Wyszukaj </title>
</head>

<body>
<h1> Wyszukiwanie Samochodów </h1>
<form id="form1" name="form1" method="post" action="index.php?page=rezultat_wyszukania_po_polu">
Wybierz metodę wyszukiwania:<br />
<select name="metoda szukania">
<option value="id">ID
<option value="nazwa">Nazwa
<option value="cena">Cena
</select>
<br />
Wprowadz poszukiwane wyrażenie:<br />
<input name="wyrazenie" type="text">
<br />
<input type="submit" value="Szukaj">
</form>
</body>
</html>


i plik rezultat_wyszukania_po_polu.php
Kod
<body>
Rezultaty wyszukiwania po zadanym polu:

<?php
// utworzenie krótkich nazw zmiennych
$metoda_szukania=$_POST['metoda szukania'];
$wyrazenie=$_POST['wyrazenie'];

$wyrazenie=trim($wyrazenie);

if (!$metoda_szukania || !$wyrazenie)
{
   echo 'Brak parametrów wyszukiwania';
   exit;
   }
  
if (!get_magic_quotes_gpc())
{
   $metoda_szukania=addslashes($metoda_szukania);
   $wyrazenie=addslashes($wyrazenie);
   }
  
@ $db=new mysqli('stud.........'. 'użytkownik '. 'tu jest hasło '. 'baza danych');

if(mysqli_connect_errno())
{
   echo 'Połączenie z bazą danych nie powiodło się - spróbój jeszcze raz';
   exit;
   }
  
$zapytanie= "select * from samochody where ".$metoda_szukania." like '%".$wyrazenie."%'";
$wynik=$db->query($zapytanie);
$ile_znalezionych=$wynik->num_rows;
echo '<p> Ilość znalezionych pozycji: '.$ile_znalezionych.'</p>';

for ($i=0; $1<$ile_znalezionych; $i++)
{
   $wiersz=$wynik->fetch_assoc();
   echo '<p><strong>'.($i+1).'.ID: ';
   echo stripslashes($wiersz['id']);
   echo '<p><strong>'.($i+1).'.Nazwa: ';
   echo stripslashes($wiersz['nazwa']);
   echo '<p><strong>'.($i+1).'.Cena: ';
   echo stripslashes($wiersz['cena']);
}

$wynik->free();
$db->close();

?>

</body>
Darti
może to ? :
  1. <?php
  2. for ($i=0; $i<$ile_znalezionych; $i++)
  3. ?>
DawidF
We wszystkich miejscach, w których masz "metoda szukania" - zmień to na "metoda_szukania".

I znacznie ładniej wyglądałyby domknięte optiony...
gallardo83
Jeśli chodzi o metody szukania to wszędzie sa dobrze wpisane i nic nie poprawiałem - no chyba że cos przoczyłem ?
Poprawiłem tą pętlę for ale nadal jest gdzieś błąd bo jak podaje metodę szukania (to czy ma szukać po id, nazwie czy cenie) i jak wspisuje np nazwę to wyskakuje ze brak parametrów wyszukiwania - pomimo ze taka nazwa jest w mojej tabeli .
Co może być przyczyną ?
Pozdrawiam i z góry dziękuję za wskazówki
Darti
Tak jak pisał DawidF - nazwy zmiennych nie lubią mieć spacji ...
gallardo83
Ok - wszędzie poprawiłem na metoda_szukania i nadal nic - teraz nic nie pokazuje z skryptu
DawidF
To przedstaw nam kody tych stron w obecnej postaci.
gallardo83
ok
Kod
<html>
<head>
  <title> Wyszukaj </title>
  </head>
  
<body>
<h1> Wyszukiwanie Samochodów </h1>
<form id="form1" name="form1" method="post" action="index.php?page=rezultat_wyszukania_po_polu">
Wybierz metode wyszukiwania:<br />
<select name="metoda_szukania">
<option value="id">ID</option>
<option value="nazwa">Nazwa</option>
<option value="cena">Cena</option>
</select>
<br />
Wprowadz poszukiwane wyrazenie:<br />
<input name="wyrazenie" type="text">
<br />
<input type="submit" value="Szukaj">
</form>
</body>
</html>


i
Kod
<?php session_start();
if(isset($_SESSION['rights']) && $_SESSION['rights']=='user')
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Wyszukanie po polu</title>
</head>

<body>
Rezultaty wyszukiwania po zadanym polu:
<?php
// utworzenie krótkich nazw zmiennych
$metoda_szukania=$_POST['metoda_szukania'];
$wyrazenie=$_POST['wyrazenie'];

$wyrazenie=trim($wyrazenie);

if (!$metoda_szukania || !$wyrazenie)
{
    echo 'Brak parametrów wyszukiwania';
    exit;
    }
    
if (!get_magic_quotes_gpc())
{
    $metoda_szukania=addslashes($metoda_szukania);
    $wyrazenie=addslashes($wyrazenie);
    }
    
  $db=new mysqli(''. ''. ''. 'audi');

if(mysqli_connect_errno())
{
    echo 'Polaczenie z baza danych nie powiodlo sie - spróbój jeszcze raz';
    exit;
    }
    
$zapytanie= "select * from samochody where ".$metoda_szukania." like '%".$wyrazenie."%'";
$wynik=$db->query($zapytanie);
$ile_znalezionych=$wynik->num_rows;
echo '<p> Ilosc znalezionych pozycji: '.$ile_znalezionych.'</p>';

for ($i=0; $i<$ile_znalezionych; $i++)
{
    $wiersz=$wynik->fetch_assoc();
    echo '<p><strong>'.($i+1).'.ID: ';
    echo stripslashes($wiersz['id']);
    echo '<p><strong>'.($i+1).'.Nazwa: ';
    echo stripslashes($wiersz['nazwa']);
    echo '<p><strong>'.($i+1).'.Cena: ';
    echo stripslashes($wiersz['cena']);
  }
  
  $wynik->free();
  $db->close();

?>
  

</body>
</html>
<?}?>
Darti
Jak na moje oko formularz i kod php są OK , coś może być z prawami dostępu (na początku masz $_SESSION) i może dlatego nic nie wyświetla...
włącz sobie wyświetlanie błędów, może coś php pokaże
gallardo83
Bez sesji działa podobnie

Zatrzymuj sie na Brak parametrów wyszukiwania - nawet nie wchodzi do bazy - prawa dostepu sa na bank ok
DawidF
I zobacz, czy wyświetlane są zmienne, które przesyłasz: $_POST['metoda_szukania'], $_POST['wyrazenie']...

Wyświetl wszystko, co się da po drodze...

Może ja gupi jestem, ale ten fragment mi się nie podoba...

  1. <?php
  2.  {
  3. $metoda_szukania=addslashes($metoda_szukania);
  4. $wyrazenie=addslashes($wyrazenie);
  5. }
  6. ?>

smile.gif
gallardo83
Zmienne się wyświetlaja - a ten kawałek co Tobie się nie podoba to chyba jest ok ? smile.gif
Darti
a moze tak?:
  1. <?php
  2. if ($metoda_szukania == "" || $wyrazenie == "")
  3. ?>
gallardo83
Niestety nie zadziałało
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.