dusty
20.12.2007, 11:56:29
Witam, bardzo będę wdzięczny za pomoc, bo juz sam nie wiem w czym jest problem. Mam stronę search.html i stronę results.php, w ramach results pragnę sie połączyc do określonej bazy i nic, wszytsko pada przy połączeniu.
search.html
<html><head>
<title>Book-O-Rama Catalog Search</title>
</head>
<body>
<h1>Book-O-Rama Catalog Search</h1>
<form action="results.php" method="post">
Choose Search Type:<br />
<select name="searchtype">
<option value="author">Author</option>
<option value="title">Title</option>
<option value="isbn">ISBN</option>
</select>
<br />
Enter Search Term:<br />
<input name="searchterm" type="text">
<br />
<input type="submit" value="Search">
</form>
</body>
</html>
Strona results.php
<html>
<head>
<title>Book-O-Rama Search Results</title>
</head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php
// create short variable names
$searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];
$searchterm= trim($searchterm);
if (!$searchtype || !$searchterm)
{
echo 'You have not entered search details. Please go back and try again.';
exit;
}
if (!get_magic_quotes_gpc())
{
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
}
@ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books'); //strona pada w tym miejscu
if (mysqli_connect_errno())
{
echo 'Error: Could not connect to database. Please try again later.';
exit;
}
$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
$result = $db->query($query);
$num_results = $result->num_rows;
echo '<p>Number of books found: '.$num_results.'</p>';
for ($i=0; $i <$num_results; $i++)
{
$row = $result->fetch_assoc();
echo '<p><strong>'.($i+1).'. Title: ';
echo htmlspecialchars(stripslashes($row['title']));
echo '</strong><br />Author: ';
echo stripslashes($row['author']);
echo '<br />ISBN: ';
echo stripslashes($row['isbn']);
echo '<br />Price: ';
echo stripslashes($row['price']);
echo '</p>';
}
$result->free();
$db->close();
?>
</body>
</html>
Próbowałem zmiennic na mysql_connect, usuwać @ i nic, jak baza przejdzie do się zacina na komendzie if, jak ją usunę to się zacina na dalszej części kodu. Dal wyjaśnienia uzywam krasnala - Apache, PHP5 = dodatek Mysql 4.1.11 - dla wersji MySQL 3+ też nic nie chodziło.
Nattfarinn
20.12.2007, 12:07:41
A mógłbyś podać z jakim komunikatem o błędzie Ci się wysypuje na połączeniu do bazy?
A najlepiej na końcu lini dopisać
or die(mysqli_error()); żeby linia wyglądała:
<?php
$db = new mysqli
('localhost', 'bookorama', 'bookorama123', 'books') or
die(mysqli_error
()); ?>
No i Krasnal z tego co wiem nie dodaje bibliotek z PHP5 automatycznie do
%WINDOWS%\System32 i trzeba to zrobić ręcznie. To nie jedyna wada krasnala, więc polecam zmienić pakiet na coś innego. Ja ze swojej strony gorąco polecam XAMPP .
dusty
20.12.2007, 12:16:20
Problem w tym że żaden błąd się nie wyswietla, poza </title> nic nie jest widoczne na stronie, ale zrobiłem mały test:
echo "hallo1";
@ $db = new mysqli('localhost', 'bookorama', 'bookorama123','books')or die(mysqli_error());;
echo "hallo2";
i wynik jest taki że pojawia się tylko:
Book-O-Rama Search Results
hallo1
Nattfarinn
20.12.2007, 12:26:49
Wywal małpę (@) i jeden średnik z końca lini i odpal jeszcze raz. Wklej co się pojawia.
dusty
20.12.2007, 12:39:43
Fatal error: Class 'mysqli' not found in c:\usr\krasnal\www\Learn\results.php on line 28
a jak usunę new to otrzymam
Fatal error: Call to undefined function mysqli() in c:\usr\krasnal\www\Learn\results.php on line 28
Nattfarinn
20.12.2007, 12:44:24
Eeee. A próbowałeś: mysqli_connect()?
dusty
20.12.2007, 12:55:28
Tak, niestety ten sam błąd - a jest inna mozliwośc zeby połączyc się z bazą/ Są jakies dobre kursy na necie? Bo chyba w tym przypadku nic nie wykombinuje.
nospor
20.12.2007, 12:57:56
Po prostu uzywasz modulu
mysqli ktorego nie masz zainstalowanego.
Korzystaj z modulu
mysql (bez "i"), ktory zapewne masz.
http://pl2.php.net/manual/pl/ref.mysql.phpI uzywaj BBCODE!!!
dusty
20.12.2007, 13:00:30
A jak mozna zainstalowac mysqli?
nospor
20.12.2007, 13:05:49
Dostales linka do
manuala to korzystaj z niego
http://pl2.php.net/manual/pl/ref.mysqli.phppozatym na forum byla nie raz o tym mowa:
uzyj szukajki
dusty
20.12.2007, 13:06:28
echo "hallo1";
@ $db = mysql_connect('localhost', 'bookorama', 'bookorama123','books')or die(mysql_error());
echo "hallo2";
if (mysql_connect_errno())
{
echo 'Error: Could not connect to database. Please try again later.';
exit;
}
$query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
$result = $db->query($query);
Nic nie dało więc usunąłem if i wyskoczył błąd:
Fatal error: Call to a member function query() on a non-object in c:\usr\krasnal\www\Learn\results.php on line 35 - dla $result = $db->query($query);
Ale przynajmniej hallo2 się pojawił ;-)
nospor
20.12.2007, 13:13:29
Grzecznie prosilem: uzywaj bbcode. Nie to nie. Zamykam
Podalem ci rowniez linka do manuala. Tam bylo wszystko napisane na temat mysql i funkcji jakich nalezy uzywac. Zajrzyj tam jeszcze raz a dowiesz się czemu masz blad.
ps: jesli chcesz kontynuowac temat, napisz do mnie PW z poprawną trescia posta oraz z oznakami tego, ze zajrzales do manuala
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.