ugrás a tartalomhoz

"PHP, SQL és az Apache használata" könyv SQL lekérdező példája nem megy

mikieger · 2007. Már. 3. (Szo), 19.13
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:
<?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>
 
1

<?php

hpista · 2007. Már. 4. (V), 16.10
<?php print $kimenet; ?>
Talán így menni fog.
2

lista

mikieger · 2007. Már. 4. (V), 17.50
Sajnos még mindig nem megy. Nem lehet hogy mysql-ben, vagy php-ban elfelejtettem valamit egymásra hangolni?
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
3

A nem végzett programozó is gondolkozhat logikusan!

s_volenszki · 2007. Már. 5. (H), 16.14
Szia!

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
4

sql lekérdezés próba

mikieger · 2007. Már. 6. (K), 14.29
Szia.

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);
?>
5

telepítsd

gex · 2007. Már. 6. (K), 15.07
Vagyis nem ismeri a mysql-connectet vagy hasonló.

Ez ellen mit tudnék tenni?

valószínűleg php5-öt használsz, a dokumentáció segít...
6

Telepítsd....

s_volenszki · 2007. Már. 6. (K), 15.58
Szia!

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