Witam serdecznie.
Od dłuższego czasu głowie się stworzeniem wyszukiwarki.
Problem - który próbowałem ugryźć na kilkanaście sposobów - wygląda następująco:
Posiadam dwie bazy danych MySQL 'mieszkaniac5' i 'mieszkaniac6'.
W bazach interesują nas kolumny:
'bud' - przybiera wartości dla mieszkaniac5 1-2, dla mieszkaniac6 3-5;
'nr';
'pietro';
'pow_uzyt';
'taras';
'ogródek';
'ilosc_pokoi';
'price'
podejście numer 1:
index.html
<link href="grid.css" type="text/css" rel="sytlesheet"/> <align="center">
<form action="grid.php" method="post"> Od:
<input type="text" name="AA" /> do
<input type="text" name="AB" />Od:
<input type="text" name="BA" /> do
<input type="text" name="BB" />Od:
<input type="text" name="CA" /> do
<input type="text" name="CB" />Od:
<input type="text" name="EA" /> do
<input type="text" name="EB" />Nr. mieszkania:
<input type="text" name="FA" /> <input type="submit" value="Szukaj!" /> </align>
?>
grid.php
CODE
<?php
// program wyszukiwarki - grid.php
// wyświetlenie nagłówka
echo'<h2>Wyniki wyszukiwania</h2>'; // usunięcie niepotrzebnych białych znaków
$_post['AA']=trim($_post['AA']); $_post['AB']=trim($_post['AB']); $_post['BA']=trim($_post['BA']); $_post['BB']=trim($_post['BB']); $_post['CA']=trim($_post['CA']); $_post['CB']=trim($_post['CB']); $_post['EA']=trim($_post['EA']); $_post['EB']=trim($_post['EB']); $_post['F']=trim($_post['F']);
$AA = $_post['AA'];
$AB = $_post['AB'];
$BA = $_post['BA'];
$BB = $_post['BB'];
$CA = $_post['CA'];
$CB = $_post['CB'];
$EA = $_post['EA'];
$EB = $_post['EB'];
$F = $_post['F'];
require_once ('error_handler.php');
require_once ('config.php');
$mysqli=mysqli_connect ('xxx', 'xxx', 'xxx', 'xxx');
$query="SELECT 'bud', 'nr', 'pietro', 'pow_uzyt', 'taras', 'ogrodek', 'ilosc_pokoi', 'price' FROM mieszkaniac5 WHERE pietro BETWEEN '{$EA}' AND '{$EB}' OR pow_uzyt BETWEEN '{$BA}' AND '{$BB}' OR ilosc_pokoi BETWEEN '{$CA}' AND '{$CB}' OR price BETWEEN '{$AA}' AND '{$AB}' OR nr='{$F}'" ;
// ustalenie ilości wyszukanych obiektów
// jeśli nie, to wyświetl komunikat i zakończ działanie skryptu
{
die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!'); }
// jeśli jednak dane są wpisane poprawnie
else
{
// wyswietlenie iloœci wyszukanych obiektów
echo'Znaleziono: '.$obAmount.'<br /><br />';
for($x=0;$x<$obAmount;$x++)
{
// przekształcenie danych na tablicę
// wyœwietlenie numeru identyfikacyjnego
// wyœwietlenie nazwy produktu
}
}
// zamknięcie połączenia
mysqli_close($mysqli);
// koniec aplikacji
?>
Niestety występuję błąd - jakby zmienne były permanentnie puste...
Pomijam w tym momencie problem dwóch tabel w bazie...
Podejście numer dwa:
index wygląda tak samo
za to w grid:
CODE
<?php
// program wyszukiwarki - grid.php
// wyświetlenie nagłówka
echo'<h2>Wyniki wyszukiwania</h2>'; // usunięcie niepotrzebnych białych znaków
$_post['AA']=trim($_post['AA']); $_post['AB']=trim($_post['AB']); $_post['BA']=trim($_post['BA']); $_post['BB']=trim($_post['BB']); $_post['CA']=trim($_post['CA']); $_post['CB']=trim($_post['CB']); $_post['EA']=trim($_post['EA']); $_post['EB']=trim($_post['EB']); $_post['F']=trim($_post['F']);
$AA = $_post['AA'];
$AB = $_post['AB'];
$BA = $_post['BA'];
$BB = $_post['BB'];
$CA = $_post['CA'];
$CB = $_post['CB'];
$EA = $_post['EA'];
$EB = $_post['EB'];
$F = $_post['F'];
require_once ('error_handler.php');
require_once ('config.php');
$mysqli=mysqli_connect ('xxx', 'xxx', 'xxx', 'xxx');
$query="SELECT 'bud', 'nr', 'pietro', 'pow_uzyt', 'taras', 'ogrodek', 'ilosc_pokoi', 'price' FROM mieszkaniac5 WHERE pietro BETWEEN '$EA' AND '$EB' OR pow_uzyt BETWEEN '$BA' AND '$BB' OR ilosc_pokoi BETWEEN '$CA' AND '$CB' OR price BETWEEN '$AA' AND '$AB' OR nr='$F'" ;
// ustalenie ilości wyszukanych obiektów
// jeśli nie, to wyświetl komunikat i zakończ działanie skryptu
{
die('Formularz wypełniony niepoprawnie! Nie można wyświetlić wyników wyszukiwania!'); }
// jeśli jednak dane są wpisane poprawnie
else
{
// wyswietlenie iloœci wyszukanych obiektów
echo'Znaleziono: '.$obAmount.'<br /><br />';
for($x=0;$x<$obAmount;$x++)
{
// przekształcenie danych na tablicę
// wyœwietlenie numeru identyfikacyjnego
// wyœwietlenie nazwy produktu
}
}
// zamknięcie połączenia
mysqli_close($mysqli);
// koniec aplikacji
?>
Błąd ten sam
Następnie zamiast zmiennych próbowałem dać zmienne $post_('wartość') - również nici.
Następnie umieściłem wszystko w jednym pliku 'index.php'
błąd dalej się powtarzał.
Zastanawiałem się nad rozwiązaniem pobrania całych tabel i rozwiazania tego na zasdzie:
if (empty('AA'))
{ if (empty('AB'))
i tak dalej...
else
{ sprawdzenie pozostałych zmiennych
$zmienna_tablicy_mieszkaniac5 = $zmienna_tablicy_mieszkaniac5 - wszystkie pozycje, gdzie 'price' < wartości podanej w 'AA', ale szczerze przyznam, że po pierwsze wydaje mi się to strasznie pracochłonne, a po drugie nie wiem jak zmienić zawartość tej zmiennej...
Za szybką pomoc dziękuję. Na pytania chętnie odpowiem, choć mam nadzieję, że dość obrazowo opisałem problem...
Edit:
Zmiana quote na CODEBOX
Ten post edytował Gallar 9.03.2009, 10:43:36