Strona 3 z 6

: 30 lipca 2007, 11:57
autor: Demerzel
PHP o ile wiem jest dość nieczuły na spacje. Pomimo to wprowadziłem zmianę nic to nie dało.

: 30 lipca 2007, 12:09
autor: Ventrue
Demerzel, czuły, czy nieczuły, stosujesz spację, to stosuj ją wszędzie.

: 30 lipca 2007, 12:31
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.

: 30 lipca 2007, 12:56
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.

: 30 lipca 2007, 13:18
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.

: 30 lipca 2007, 13:37
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 ) "

: 30 lipca 2007, 13:47
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.

: 30 lipca 2007, 13:57
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';

: 30 lipca 2007, 14:30
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.

: 30 lipca 2007, 15:08
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="">