Nie działa wyszukiwarka w php wg kryteriów


(Rudzia Justyna) #1

Witam, mam problem z wyszukiwarką wg kilku kryteriów, ale od poczatku

mam tabelę

Id_zwiazku - int911)

Data_aktualizacji - date

Nazwa_IUPAC - varchar(100)

Nr_CAS varchar - (100)

Wzor - text

Masa_molowa - decimal(12,6)

Synonim_ang - text

synonim_pol - text

i jeszcze kilka kolumn, ale wg tych które wypisałam ma być wyszukiwanie:

formularz index.html jest następujący:

Przeszukaj bazę wg:

Nazwy IUPAC

Numeru CAS

Wzoru sumarycznego

Synonimu angielskiego

Wpisz wyszukiwany produkt:

a poniżej kod php search.php :

<?php

// program wyszukiwarki - search.php

// wyświetlenie nagłówka

echo'

Wyniki wyszukiwania

';

// usunięcie niepotrzebnych białych znaków

$_POST['phrase']=trim($_POST['phrase']);

// sprawdzenie, czy użytkownik wpisał dane

if(empty($_POST['phrase']))

// 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

{

// połączenie z bazą danych,

$base=mysqli_connect('localhost','justynaichp','123456','predict_5');

// skonstruowanie zapytania

$query="Select Nazwa_IUPAC From basic_data Where Nazwa_IUPAC Like '%{$_POST['phrase']}%' Or Nr_CAS Like '%{$_POST['phrase']}%' Or Wzor Like '%{$_POST['phrase']}%'";

// wysłanie zapytania do bazy danych

$result=mysqli_query($base,$query);

// ustalenie ilości wyszukanych obiektów

$obAmount=mysqli_num_rows($result);

// wyswietlenie ilości wyszukanych obiektów

echo'Znaleziono: '.$obAmount.'

';

// wyświetlenie wyników w pętli

for($x=0;$x<$obAmount;$x++)

{

// przekształcenie danych na tablicę

$row=mysqli_fetch_assoc($result);

// wyświetlenie numeru identyfikacyjnego zwiazku

echo $x+1;

echo '. ';

// wyświetlenie nazwy związku

echo $row['Nazwa_IUPAC'];

echo'

}

}

// zamknięcie połączenia

mysqli_close($base);

// koniec aplikacji

?

jestem początkująca i nie wiem jak zrobić zeby po wybraniu w liście rozwijalnej np: Nazwy Iupac wpisać np "methanol" i zeby na stronie wyskoczył mi wynik w postaci:

Nr_Id Data aktualizacji Nazwa IUPAC Nr Cas Wzór Masa molowa Synonim angielski Synonim polski

12 2006-02-02 Ethane 74-84-0 C2 H6 30.070000 Refrigerant 170, Dimethyl, Methylmethane Etan

tzn zeby wypisywał na strone wiersz z tabel i żeby Nazwa IUOAC była linkiem

nie działa mi ta wyszukiwarka bo wląsciwie szuka tylko wg tej Nazwy IUPAC, nie wiem jak dopisać zeby wyszukiwał wg nr_CAs (liczba) czy wg Wzoru np C5H6 itd

prosze o pomoc


(kalamita) #2
  1. W opcji SELECT zaznaczasz tylko Nazwa_IUPAC więc tylko ta kolumna jest brana pod uwagę jako opcja wyszukiwania

Zmień na

SELECT * FROM nazwa_twoje_tabeli ....

  1. Nie trzyma się nazwy uzytkownika i hasła logowania do serwera bazdanowego w kodzie.

  2. Przypisz zmienną POST do jakiejś innej zmiennej np.

    $odebrano = trim($_POST['phrase'];

i użyj własnie tej zniennej $odebrano w kwerendzie 4. Ja osobiście preferują takie wyszukiwanie w bazie danych :

sql = "SELECT * data FROM nazwa_tabeli WHERE nazwa_kolumny = '$zmienna'";


            $wynik = mysql_query($sqL) or die (mysql_error());


        	while($row = mysql_fetch_array($wynik))

        	{

        	   echo $zmienna1 = $row['jakas_kolumna'];

        	}

-- Dodane 04.10.2010 (Pn) 18:08 --

P.S. Gwiazdka w kwerendzie (SELECT * FROM) też jest niewłaściwą opcją, ale to inna bajka, niemniej jednak z gwiazdką kod też zadziała ... :slight_smile: