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:
  1. <?php  
  2. session_start();  
  3.   
  4. //Kapcsolódunk az adatbázishoz  
  5. $ossz = mysql_connect("localhost""csaba""csaba"or die(mysql_error());  
  6. mysql_select_db("kocsi",$ossz)  or die(mysql_error());  
  7.   
  8. $kimenet = "<h1>Az Ön bevásárlókocsija</h1>";  
  9.   
  10. //Lekérdezzük a kocsi tartalmát a munkamenet-azonosító alapján  
  11. $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'";  
  12. $kocsi_tart = mysql_query($kocsi_tart_sqlor die(mysql_error());  
  13.   
  14. if (mysql_num_rows($kocsi_tart) < 1) {  
  15.     //Üzenet a felhasználónak  
  16.     $kimenet .= "<P>Az Ön bevásárlókocsija üres.  
  17.     A vásárlást <a href=\"katalogus.php\"> itt folytathatja</a>!</p>";  
  18.   
  19. else {  
  20.     //Kiolvassuk és kiíratjuk az adatokat  
  21.     $kimenet .= "  
  22.     <table celpadding=3 cellspacing=2 border=1 width=98%>  
  23.     <tr>  
  24.     <th>Név</th>  
  25.     <th>Méret</th>  
  26.     <th>Szín</th>  
  27.     <th>Ár</th>  
  28.     <th>Menny.</th>  
  29.     <th>Összesen</th>  
  30.     <th>Törlés</th>  
  31.     </tr>";  
  32.   
  33.     while ($kocsi = mysql_fetch_array($kocsi_tart)) {  
  34.         $azon = $kocsi['azon'];  
  35.         $nev = stripslashes($kocsi['nev']);  
  36.         $ar = $kocsi['ar'];  
  37.         $termek_menny = $kocsi['termek_menny'];  
  38.         $termek_szin = $kocsi['termek_szin'];  
  39.         $termek_meret = $kocsi['termek_meret'];  
  40.         $osszeg = sprintf("%.02f"$ar * $termek_menny);  
  41.   
  42.         $kimenet .= "<tr>  
  43.         <td align=center>$nev <br></td>  
  44.         <td align=center>$termek_meret <br></td>  
  45.         <td align=center>$termek_szin <br></td>  
  46.         <td align=center>$ar Ft<br></td>  
  47.         <td align=center>$termek_menny <br></td>  
  48.         <td align=center>$osszeg Ft</td>  
  49.         <td align=center><a href=\"kocsibol_kivesz.php?azon=$azon\">mégsem</a></td>  
  50.         </tr>";  
  51.     }  
  52.   
  53.     $kimenet .= "</table>";  
  54. }  
  55. ?>  
  56. <HTML>  
  57. <HEAD>  
  58. <TITLE>Bevásárlókocsi</TITLE>  
  59. </HEAD>  
  60. <BODY>  
  61. <? print $kimenet; ?>  
  62. </BODY>  
  63. </HTML>  
 
1

<?php

hpista · 2007. Már. 4. (V), 16.10
  1. <?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