Alternatywna wyszukiwarka internetowa PHP + MySQL

Potrzebujesz pomocy z C, C++, perl, python, itp.
Demerzel
Beginner
Posty: 187
Rejestracja: 06 czerwca 2007, 14:44

Post autor: Demerzel »

PHP o ile wiem jest dość nieczuły na spacje. Pomimo to wprowadziłem zmianę nic to nie dało.
Ventrue
Junior Member
Posty: 532
Rejestracja: 06 lipca 2007, 12:10
Lokalizacja: Lubin

Post autor: Ventrue »

Demerzel, czuły, czy nieczuły, stosujesz spację, to stosuj ją wszędzie.
jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang »

Kod: Zaznacz cały

$zapytanie=mysql_query($sql);
Tak też pokazuje błąd ?

Co pokazuje

Kod: Zaznacz cały

echo $sql;
i jaki błąd.
Demerzel
Beginner
Posty: 187
Rejestracja: 06 czerwca 2007, 14:44

Post autor: Demerzel »

Kod: Zaznacz cały

$zapytanie=mysql_query($sql);
To czy jest cudzysłów czy nie nic nie zmienia, od razu próbowałem tak i tak.
Demerzel
Beginner
Posty: 187
Rejestracja: 06 czerwca 2007, 14:44

Post autor: Demerzel »

Po podaniu w formularzu słowa "nauk"a echo pokazuje:

Kod: Zaznacz cały

SELECT adres, count(*) as hits FROM adres WHERE (0) OR (slowo LIKE '%nauka%')GROUP BY adres ORDER BY hits DESC, adres ASC
Linijke niżej wyskakuje błąd

Kod: Zaznacz cały

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sp/lib.php on line 19
Plik lib.php zawiera ten kod jest to funkcja. Plik jest załączony w pliku z formularzem przez include.
jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang »

linia 19 to jest to ?

Kod: Zaznacz cały

$tab=mysql_fetch_array($zapytanie);

Kod: Zaznacz cały

'%nauka%')GROUP
nie wiem czy to może być bez spacji ?

stawi napisał :

Kod: Zaznacz cały

  $sql .= " OR (slowa LIKE '%{$slowo}%') ";
spacja pomiędzy ) "
Demerzel
Beginner
Posty: 187
Rejestracja: 06 czerwca 2007, 14:44

Post autor: Demerzel »

linia 19 to jest to ?
Tak to jest to

Kod: Zaznacz cały

mysql_fetch_array
Wprowadziłem spacje echo wyświetliło:

Kod: Zaznacz cały

SELECT adres, count(*) as hits FROM adres WHERE (0) OR (slowo LIKE '%nauka%') GROUP BY adres ORDER BY hits DESC, adres ASC
Poniżej błąd jak był tak jest. Podejrzewam że potrzebny jest odpowiednio wstawiony cudzysłów ale albo zamieniam całość w ciąg słów branych dosłownie litera po literze albo nie dostaje żadnej zmiany.
jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang »

1. ¦ciągnąłem załącznik - nie wiem czy to ma jakieś znaczenie bo nigdy nie nazywałem pola tabeli tak jak nazywa się tabela, więc to z mojej strony taka sobie teoria.
2. W kolejnym załączniku myślę że dobrze by było abyś pokazał całość, obydwa pliki o których wspominałeś, może nie dostaje ta funkcja wszystkich danych, oprócz $_POST oczywiście, bo ta tablica jest widziana w całym skrypcie.

--------------------------------------
Spróbuj przerobić aby Ci wyszło takie coś:

Kod: Zaznacz cały

$sql = 'SELECT adres, count(*) AS hits FROM adres WHERE (0) OR (slowo LIKE '."%{$slowo}%".') GROUP BY adres ORDER BY hits DESC, adres ASC';
Demerzel
Beginner
Posty: 187
Rejestracja: 06 czerwca 2007, 14:44

Post autor: Demerzel »

jang napisał:

Kod: Zaznacz cały

1. ¦ciągnąłem załącznik - nie wiem czy to ma jakieś znaczenie bo nigdy nie nazywałem pola tabeli tak jak nazywa się tabela, więc to z mojej strony taka sobie teoria. 
Robiłem już tak i wtedy nie było z tym problemu.

Załączę oba pliki taka jak teraz wyglądają.Plik lib.php nieco się zmienił ale problem jest jaki był. Kiedy funkcja zacznie pracować jak trzeba sam formularz zrobię inaczej, niema za bardzo co przy tym majstrować o ile nie ma to wpływu na działanie funkcji.

[ Dodano: 2007-07-30, 14:45 ]
Echo wyżuciło mi tak:

Kod: Zaznacz cały

SELECT adres, count(*) as hits FROM adres WHERE (0) OR (slowo LIKE '."%nauka%".') GROUP BY adres ORDER BY hits DESC, adres ASC
Chyba to miałeś na myśli? Nic błąd jak był tak jest. Wypróbowałem kilka innych zapisów wszystko to samo. Jak przez pomyłkę podałem slowo zamiast $slowo pokazało to samo więc chyba tu jest problem.
jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang »

Kod: Zaznacz cały

Robiłem już tak i wtedy nie było z tym problemu.
No to może o to w tym wszystkim chodzi ?

Kod: Zaznacz cały

<?php
function szukanie()
{
	if(isset($_POST['szukane']))//warunek wykonania
	{
		$szukane=trim($_POST['szukane']);//obcięcie spacji
		$szukane=explode(" ", $szukane);//rozbicie zapytaniana słowa
		$sql_conn=mysql_connect('localhost','root','');//łączenie z MySQ
		mysql_select_db('nauka',$sql_conn);//wybranie bazy danych;
		$sql = 'SELECT adres, count(*) as hits FROM adres WHERE (0) ';
		foreach($szukane as $slowo)
		{
			$sql .=' OR (slowo LIKE %{'."$slowo".'}%) ';
		}
		$sql .=' GROUP BY adres ORDER BY hits DESC, adres ASC';
		echo $sql;
		$zapytanie=mysql_query($sql);
		$tab=mysql_fetch_array($zapytanie);
		echo $tab['adres'];
	}
//mysql_close($sql_conn);
}
?>

Kod: Zaznacz cały

<input type="text" size="50" name="szukane" value="">
ODPOWIEDZ