"PHP, SQL és az Apache használata" könyv SQL lekérdező példája nem megy
Tisztel tudósok!
Készítettem egy lekérdező php-t, mely a php, sql és az apache használata című könyvben szerepel. Megcsináltam a hozzá való adatbázist, de amikor meghívom az oldalt, akkor semmi sem jelenik meg a képernyőn.
Milyen beállítást halaszthattam el az sql, vagy apache konfigurációjában?
Vagy miket kell tennem?
De itt a forráskód, amivel elvileg nincs gond, mivel könyvből van:
■ Készítettem egy lekérdező php-t, mely a php, sql és az apache használata című könyvben szerepel. Megcsináltam a hozzá való adatbázist, de amikor meghívom az oldalt, akkor semmi sem jelenik meg a képernyőn.
Milyen beállítást halaszthattam el az sql, vagy apache konfigurációjában?
Vagy miket kell tennem?
De itt a forráskód, amivel elvileg nincs gond, mivel könyvből van:
<?php
session_start();
//Kapcsolódunk az adatbázishoz
$ossz = mysql_connect("localhost", "csaba", "csaba") or die(mysql_error());
mysql_select_db("kocsi",$ossz) or die(mysql_error());
$kimenet = "<h1>Az Ön bevásárlókocsija</h1>";
//Lekérdezzük a kocsi tartalmát a munkamenet-azonosító alapján
$kocsi_tart_sql = "select k.azon, t.nev, t.ar, k.termek_menny, k.termek_meret, k.termek_szin from kocsi as k left join termekek as t on t.azon = k.termek_azon where munkamenet_azon = '$PHPSESSID'";
$kocsi_tart = mysql_query($kocsi_tart_sql) or die(mysql_error());
if (mysql_num_rows($kocsi_tart) < 1) {
//Üzenet a felhasználónak
$kimenet .= "<P>Az Ön bevásárlókocsija üres.
A vásárlást <a href=\"katalogus.php\"> itt folytathatja</a>!</p>";
} else {
//Kiolvassuk és kiíratjuk az adatokat
$kimenet .= "
<table celpadding=3 cellspacing=2 border=1 width=98%>
<tr>
<th>Név</th>
<th>Méret</th>
<th>Szín</th>
<th>Ár</th>
<th>Menny.</th>
<th>Összesen</th>
<th>Törlés</th>
</tr>";
while ($kocsi = mysql_fetch_array($kocsi_tart)) {
$azon = $kocsi['azon'];
$nev = stripslashes($kocsi['nev']);
$ar = $kocsi['ar'];
$termek_menny = $kocsi['termek_menny'];
$termek_szin = $kocsi['termek_szin'];
$termek_meret = $kocsi['termek_meret'];
$osszeg = sprintf("%.02f", $ar * $termek_menny);
$kimenet .= "<tr>
<td align=center>$nev <br></td>
<td align=center>$termek_meret <br></td>
<td align=center>$termek_szin <br></td>
<td align=center>$ar Ft<br></td>
<td align=center>$termek_menny <br></td>
<td align=center>$osszeg Ft</td>
<td align=center><a href=\"kocsibol_kivesz.php?azon=$azon\">mégsem</a></td>
</tr>";
}
$kimenet .= "</table>";
}
?>
<HTML>
<HEAD>
<TITLE>Bevásárlókocsi</TITLE>
</HEAD>
<BODY>
<? print $kimenet; ?>
</BODY>
</HTML>
<?php
lista
Mert az a baj, hogy egyik php állományom sem megy ebből a példából és semmi nem jelenik meg a képernyőmön.
A választ előre is köszi
A nem végzett programozó is gondolkozhat logikusan!
A problémád elég sok kérdést vet fel, amelyeket tisztán logikai alapon, programozási tudás nélkül is meg lehet válaszolni. Ha
nyomod a tv távirányítóját és a tv nem kapcsol be, hívod a tv szerelőt? Hát nem! Ugye?
1.Tv standby-on van-e?
2.Elem a távirányítóban?
3.Tv konnektorba csatlakoztatva és áram is van?
4.Biztos ez a tv távirányítója?
5.Biztos ez a tv?
Meglepő, de itt sem más a helyzet!
1. Azt láttam, hogy az adatbázis műveletek után mindenhol figyeled az adatbázis hibaüzeneteket.
Ezen a szerveren, ahol ezt a kódot futtatod, más kód ad hibaüzenetet? Nem? ini_set('display_errors', '1');
2. Ha direkt elrontod a jelszót ez a kód is ad hibaüzenetet?
Ha van hibaüzi, akkor legalább már azt jó eséllyel feltételezhetjük, hogy amikor süket a képernyő, csatlakozol az
adatbázishoz.
3. Csinálj egy teszt lekérdezést kimenettel együtt!
$teszt_lekerdezes = mysql_query("SELECT * FROM kocsi");
print "Tesztlekérdezés eredménye: ".mysql_num_rows($teszt_lekerdezes);
Ha most is süket és még a "Tesztlekérdezés eredménye:" szöveg sem jelenik meg, akkor nézzél error logot. Nekem már
előfordult, hogy a hibaüzi bemászott egy div alá, vagy fekete volt a body háttérszín, és ugye azon a fekete szöveg...
Ha van kimenet, rágjuk tovább a csontot!
4. Teszteljük a lekérdezést! Mivel fel van építve egy if szerkezet arra az esetre ha a lekérdezés eredménye 0, biggyesszünk
egy print "A lekérdezés eredménye: 0 rekord"; tesztrutint az if első ágába. Ha ez megjelenik, akkor célszerű a lekérdezést körbejárni, illetve valamilyen mysql monitorral (pl.: phpMyAdmin) célszerű leellenőrizni, hogy valóban van-e rekord a kosár táblában az adott sessid-vel.
5. Ha ez is süket, nézzük meg futás időben be megy-e a rutin az if else ágába. Ehhez a print "A lekérdezésnek ".mysql_num_rows($kocsi_tart)."rekord felelt meg."; teszturint használjuk. Ha van kimenet, akkor nézd meg, hogy a while
ciklus valóban addig megy mint a talált sorok száma.
$i++; print $i."<br>";
Ha ez sem vezet eredményre, de tudsz válaszokat adni a fent leírt kérdésekre, akkor jöhet a tv szerelő!
s_volenszki
sql lekérdezés próba
Csináltam egy egyszerűbb lekérdezést magam számára a jobb megérthetőség kedvéért, egy egyszerűbb adatbázissal, neve proba, mely mindössze egy keresztnevet és egy vezetéknevet tartalmaz. Ezt fel is töltöttem egy névvel.
A gond viszont ugyanaz, süket az egész, vagyis nem ír ki semmit a fehér képernyőre. Megnéztem az error.log-ot és a hibaüzenet:
[error] [client 127.0.0.1] PHP Fatal error: Call to undefined function mysql_connect() in C:\web\sqlproba.php on line 2
Vagyis nem ismeri a mysql-connectet vagy hasonló.
Ez ellen mit tudnék tenni?
Az egyszerűbb forráskódom, amit írtam(a te kiegészítéseddel):
<?php
$kapcsolat = mysql_connect("localhost", "csaba", "csaba");
if (!$kapcsolat) die("Nem lehet csatlakozni");
$adatbazis="proba";
mysql_select_db($adatbazis) or die ("Nem lehet megnyitni a következő adatbázist: $adatbazis");
$teszt_lekerdezes=mysql_query("SELECT * FROM proba");
print "A tesztlekérdezés eredménye: ".mysql_num_rows($teszt_lekerdezes);
mysql_close($kapcsolat);
?>
telepítsd
Ez ellen mit tudnék tenni?
valószínűleg php5-öt használsz, a dokumentáció segít...
Telepítsd....
Osztom gex véleményét. Ha jól látom a C:\web\sqlproba.php útvonalból következtetve kindózon törekszel. Én amikor kezdtem php+mysql-t EasyPhp-t használtam sokáig, majd wamp-ot (http://www.php.lap.hu). Szerintem tegyél fel egy ilyet, és akkor az alapvető konfigurálással nem kell bajlódnod!
s_volenszki