ugrás a tartalomhoz

MySQL alap-Gond

ark · 2007. Már. 6. (K), 13.00
Üdv.

Azt szeretném kérni/kérdezni, én mint aki csak egy hete kezdte a PHP-zést és MySQL-ezést, hogy segítsetek megoldani a számomra nagy rejtélyt, ami valószínüleg annyira nem nehéz dolog, csak a tudásom hiányos.

A családi videotéka honlapján dolgozom. És minden működik is.
Nagyon jól meg, egy apró problémám van.

Egy kis kódrészlet sehogy sem akar összejönni.

Azt szeretném, hogyha a MySQL query sorai nullát hoznak ki, azaz az adatbázisban nincs sor (bizonyos kereséseknél, stb), akkor a kódban fellelhető táblázat ne üresen álljon, hanem írja ki, hogy "Nincs Találat". Persze ellenkeő esetben, ha talál sort, akkor listázza úgy ahogy most is van a kódban.

A segítséget előre is köszönöm.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>videOázis</title>
<script type="text/javascript" src="swfobject.js"></script>
<style type="text/css">
body,td,th {
font-family: Tahoma;
font-size: 11px;
color: #3F3F8C;
}
a:link {
color: #7979C4;
}
a:visited {
color: #3F3F8C;
}
</style>
<SCRIPT LANGUAGE="JavaScript">
function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=300,height=300,left = 200,top = 200');");
}
</script>
<meta name="description" content="A ceglédi videotéka honlapja, mely belopja magát szívedbe!">
<meta name="keywords" content="dvd,vhs,cegléd,video,kölcsönzés,videoázis,videotéka,videótéka,film,mozi,horror,sci-fi,thriller,vígjáték,akció,kaland,mese,rajzfilm,animációs,háborús,romantikus,internet,playstation,nyomtatás,szkennelés,scannelés,fénymásolás">
</head>
<body style="margin:0; background-image:url(back.jpg); background-position: 100% 100%;">
<table width="800" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="3">
<div id="header">
<font size="-1">A tartalom megjelenítéséhez Flash szükséges! Ha nem rendelkezel Flash-el, ingyenesen letöltheted az <a href="http://adobe.com/go/getflash/" target="_blank">Adobe</a> honlapjáról!</font></div>
<script type="text/javascript">
var so = new SWFObject("filmbazisheader.swf", "header", "800", "120", "0");
so.addParam("quality", "best");
so.addParam("wmode", "transparent");
so.write("header");
</script>
</td>
  </tr>
  <tr>
  <td>
<?php
$filmmenu = 'filmmenu.php';
include($filmmenu);
?>
<?php
$connect = 'connect.php';
include($connect);
?>
<?
$query = 'SELECT * FROM `filmek` WHERE `tipus` LIKE (\'%premier%\') ORDER BY `cim` ASC';
$result=mysql_query($query);
$num=mysql_numrows($result);

mysql_close();
?>
<table align="center" width="600" cellpadding="5" cellspacing="5">
<tr>
<td bgcolor="#A9A9D8" width="180" align="center">
cím
</td>
<td bgcolor="#A9A9D8" width="80" align="center">
típus
</td>
<td bgcolor="#A9A9D8" width="90" align="center">
rendező
</td>
<td bgcolor="#A9A9D8" width="200" align="center">
színész
</td>
<td bgcolor="#A9A9D8" width="25" align="center">
kölcs.
</td>
</tr>
<?
$i=0;
while ($i < $num) {
$id=mysql_result($result,$i,"id");
$cim=mysql_result($result,$i,"cim");
$fajta=mysql_result($result,$i,"tipus");
$leiras=mysql_result($result,$i,"leiras");
$rendezo=mysql_result($result,$i,"rendezo");
$szinesz=mysql_result($result,$i,"szinesz");
$bentkint=mysql_result($result,$i,"bentkint");
?>
<tr>
<td width="180" align="center">
<a href="filmbazis.php?id='. $id .'">
<font style="font-size:12px;">'.$cim.'</font>
</a>
</td>
<td width="80" align="center">
<font style="font-size:10px;">'.$fajta.'</font>
</td>
<td width="90" align="center">
'.$rendezo.'
</td>
<td width="200" align="center">
'.$szinesz.'
</td>
<td width="25" align="center">
if ($bentkint=="kint")
echo '<img src="kint.gif" alt="a film jelenleg nem kölcsönözhető">';
if ($bentkint=="bent")
echo '<img src="bent.gif" alt="a film kölcsönözhető">';
if ($bentkint=="jön")
echo '<img src="jon.gif" alt="a film még nem jelent meg">';
</td>
</tr>
<?
$i++;
}
?>
</table>
</td>
  </tr>
  <tr>
    <td colspan="3">
<div id="footer">
<font size="-1">A tartalom megjelenítéséhez Flash szükséges! Ha nem rendelkezel Flash-el, ingyenesen letöltheted az <a href="http://adobe.com/go/getflash/" target="_blank">Adobe</a> honlapjáról!</font></div>
<script type="text/javascript">
var so = new SWFObject("footer.swf", "footer", "800", "28", "0");
so.addParam("quality", "best");
so.addParam("wmode", "transparent");
so.write("footer");
</script>
</td>
  </tr>
</table>
</body>
</html>
 
1

Néhány jó tanács

szotsaki · 2007. Már. 6. (K), 16.33
Elsőként hadd ajánljam a kettős "-t a mysql_query-hez. Így nem kell escape-elned, és később a PHP változók is behelyettesítésre kerülnek.

Az egész $query részt pedig így írnám át:

$query=mysql_query("SELECT * FROM filmek WHERE tipus LIKE '%premier%' ORDER BY cim ASC") or die(mysql_error()); //kijelzi a hibát

if (mysql_num_rows($query)){ //Így csak akkor fut a kód, ha van visszaadott sor
 while ($sor = mysql_fetch_assoc($query)){ //Ezzel a $sor tömbbe kerül visszaadott érték minden egyes while hívásnál, egy-egy sor
  //És így lehet kiírni például:
  echo "A filmem: $sor[film]";
 }
}
A $sor[] tömbben benne van az aktuális sor minden fejléce, mint tömbkulcs ($sor['kulcs'] => érték párral). Tehát, ha a rendező oszlop értékét szeretnéd megkapni, akkor: echo $sor['rendezo'];
2

escape

gex · 2007. Már. 6. (K), 16.54
Elsőként hadd ajánljam a kettős "-t a mysql_query-hez. Így nem kell escape-elned, és később a PHP változók is behelyettesítésre kerülnek.

mivel a php változókat úgysem írjuk csak úgy be egy sql kérésbe mysql_real_escape_string() nélkül, ezért mindegy, hogy aposztrófot vagy idézőjelet használ.
3

...de attól még lehet változó

szotsaki · 2007. Már. 6. (K), 17.45
Ez így igaz, de szerintem egyáltalán nem zárja ki a két állítás egymást.
A következőben van változó-behelyettesítés + védelem:
$escapelt = mysql_real_escape_string(strip_tags($_POST['valami']));
mysql_query("SELECT * FROM valami WHERE sor='$escapelt'") or die(mysql_error());
Tökéletes arra az esetre is, ha átláthatóbbá akarod tenni a kódod vagy tovább akarsz dolgozni az $escapelt változóval.
4

szia

DsA · 2007. Már. 6. (K), 22.23
hát őszinte leszek, nem néztem meg a kódodat, meg a többiek hozzászólását sem olvastam el, de itt a kérdésedre a válasz:

$query = mysql_query("SELECT * FROM `táblád` WHERE `meződ`='keresnivaló'");
if (mysql_num_rows($query) == 0) {
 print("Nincs találat!");
} else {
 print("Találatok száma: ".mysql_num_rows($query));
}
vagy ha Keresőben van ez akkor

...WHERE `meződ` LIKE '%keresnivaló%'...
remélem tudtam segíteni
és bocsi ha bunkó voltam