For(if), mint menü...
Megpróbáltam azt megcsinálni, hogy ami az amúgy másnál is szükséges kategoria táblában van, azt menüvé tegyem. Hogy mindig a db-ből olvassa ki, így ha megváltozik valaminek a neve, akkor nem kell a menu.php-t is átírnom.
a connect.php csatlakozik a dbhez.
A kategoria a tábla.
sor lenne a menük közti címekre egy példa.
maga a menü sora ez lenne:
Ez pedig a teljes forráskód. Szerintem teljesen elrontottam, de nincs rá semmi ötletem, hogy hogyan tudnám megoldani.
Ha tudtok segíteni, azt megköszönöm.
M.Szilveszter - www.netnap.hu
■ a connect.php csatlakozik a dbhez.
A kategoria a tábla.
print("<tr><td class=\"menu1\">Mindig Jóóó</td></tr>
sor lenne a menük közti címekre egy példa.
maga a menü sora ez lenne:
<a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>
Ez pedig a teljes forráskód. Szerintem teljesen elrontottam, de nincs rá semmi ötletem, hogy hogyan tudnám megoldani.
<?php
require_once("connect.php");
print("<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"><body bgcolor=\"BFFFD3\">");
print ("<table width=\"100\" border=\"0\" align=\"center\">");
$keres = mysql_query("SELECT * FROM kategoria ORDER by id desc");
for($i = 1; $kateg = mysql_fetch_row($keres); $i++); {
if ($i <= 8); {
print("<tr><td class=\"menu1\">Írásaink</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
if ($i > 8 AND $i <== 15) {
print("<tr><td class=\"menu1\">Mindig Jóóó</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
if ($i > 15 AND $i <== 17) {
print("<tr><td class=\"menu1\">Letöltések</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
if ($i > 17 AND $i <== 19) {
print("<tr><td class=\"menu1\">Fan Clubbok</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
if ($i > 19 AND $i <== 22) {
print("<tr><td class=\"menu1\">Egyéb</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
}
?>
require_once("connect.php");
print("<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"><body bgcolor=\"BFFFD3\">");
print ("<table width=\"100\" border=\"0\" align=\"center\">");
$keres = mysql_query("SELECT * FROM kategoria ORDER by id desc");
for($i = 1; $kateg = mysql_fetch_row($keres); $i++); {
if ($i <= 8); {
print("<tr><td class=\"menu1\">Írásaink</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
if ($i > 8 AND $i <== 15) {
print("<tr><td class=\"menu1\">Mindig Jóóó</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
if ($i > 15 AND $i <== 17) {
print("<tr><td class=\"menu1\">Letöltések</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
if ($i > 17 AND $i <== 19) {
print("<tr><td class=\"menu1\">Fan Clubbok</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
if ($i > 19 AND $i <== 22) {
print("<tr><td class=\"menu1\">Egyéb</td></tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg(id) . "\">" . $kateg(nev) . "</td></tr>");
}
}
?>
Ha tudtok segíteni, azt megköszönöm.
M.Szilveszter - www.netnap.hu
For helyett használj
$kateg(id)
helyett$kateg[id]
, mert ez tömbelem-hivatkozás és nem függvényhívás.if ($i <= 8); {
Ez az if semmit nem fog csinálni, mert a "then" ágban üres utasítás áll;
, viszont amit - szerintem -szerettél volna feltételessé tenni, az mindig le fog futni, mert már nem az if-en belüli blokknak minősül, hanem egy teljesen önálló feltétel nélkül futó blokknak.ui.: célszerűbb lenne a DB-ben tárolni azt is, h. egyes menüpontok milyen kategória alatt jelenlenek meg, és azt sem a PHP fájlban bedrótozva megadni. Ekkor ez a reménytelenül sok és zavaró if sem kellene.
than ág, de csak kötekedni
Mr.Tiny
Ne kötekedj, hanem nézd
then : akkor, aztán, azután, majd
than : mint, (jobb |több) mint ...
;-) bocs
Kipróbáltam
Mi ez a then, meg hova kellene írni...? Sajnálom tudatlanságom, de legalább a jelentésést ismertem :D
Köszi előre:
MSzilveszter - http://www.netnap.hu
Semmi gond, én turbo
Mr.Tiny
na jól ezt zárjuk
Szerintem is
Üdv.:
MSzilveszter - http://www.netnap.hu
A pascalt is tanuld még egy kicsit!
;-)
http://zeus.nyf.hu/~akos/pascal/pascal.htm
http://digo.inf.elte.hu/~iszcs/segedany/pascal.htm
http://www.ank.sulinet.hu/tantargy/szamtech/tetelek/szt27.html
http://staff.kzs.hu/tamas/programozas/pascal.htm
http://erettsegi.ircnet.hu/e3/szt19.html
http://www.pollak.sulinet.hu/~faur/pascal3.htm
http://www.pollak.sulinet.hu/~faur/pascal5.htm
http://indy.poliod.hu/program/Pascal/Tankonyv/Tankonyv.htm
http://indy.poliod.hu/program/Pascal/Munkafuz/Munkafuz.htm
http://www.iit.bme.hu/education/mume/bevi1.htm
http://www.geocities.com/hotdogcom/ptutor/chap04.html
http://goforit.unk.edu/pascal/pas017.htm
http://www.pcengines.ch/tp3.htm
http://shop.store.yahoo.com/onecentcomputer/tupa15prtrcd.html
--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
MEGOLDVA!
Az eredmény a http://www.netnap.hu odldalon már látszik is. Köszi a segítséget!
print("<tr><td class=\"menu1\">Írásaink</td></tr>");
$i = 1;
while ( $i <= 8 ){
$kateg = mysql_fetch_row($keres);
print("</tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg[0] . "\">" . $kateg[1] . "</td></tr>");
$i++; }
print("<tr><td class=\"menu1\">Mindig Jóóó</td></tr>");
while ($i > 8 AND $i <= 15) {
$kateg = mysql_fetch_row($keres);
print("</tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg[0] . "\">" . $kateg[1] . "</td></tr>");
$i++; }
print("<tr><td class=\"menu1\">Letöltések</td></tr>");
while ($i > 15 AND $i <= 17) {
$kateg = mysql_fetch_row($keres);
print("</tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg[0] . "\">" . $kateg[1] . "</td></tr>");
$i++; }
print("<tr><td class=\"menu1\">Fan Clubbok</td></tr>");
while($i > 17 AND $i <=19) {
$kateg = mysql_fetch_row($keres);
print("</tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg[0] . "\">" . $kateg[1] . "</td></tr>");
$i++; }
print("<tr><td class=\"menu1\">Minden más</td></tr>");
while($i > 19 AND $i <= 22) {
$kateg = mysql_fetch_row($keres);
print("</tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg[0] . "\">" . $kateg[1] . "</td></tr>");
$i++; }
?>
Amúgy meg: Pascalhoz értek annyit, hogy ne kellje törni a fejem than és then közötti különbségen :)
MSzilveszter - http://www.netnap.hu
amúgy
P][G
Jowanna, én voltam a
Mr.Tiny
Remélem, megtaláltad az
Most elkezdheted
Egyébként szerintem érdemesebb mysql_fetch_assoc-t használni, mert a $kateg[1]-ról te magad sem fogod megmondani egy hónap múlva, hogy mi az, de pl a $kateg['kategoria_nev']-ről talán igen. Arról nem is szólva, hogy esetleg módosítasz az adatbázistábla szerkezetén (mondjuk létrehozol vagy eltávolítasz egy új mezőt az elején - elő szokott fordulni), így a $kateg[1] már lehet, hogy egy tök másik mezőt fog jelenteni aztán cseszheted, keresgélheted a kódban, hogy mit javítsál.
Persze nem kötelező...
P][G
PiG
Üdv.:
MSzilveszter - http://www.netnap.hu
smg & ÚJ alakon a menüm :)
A menümre, meg amivel indult ez a téma annyit, hogy mostmár teljesen új alapokra fektetetett... Bár ennek meg annyi a hibája jelenleg, hogy megállás nélkül generálja az egyik sort, és nem fejezi be... :)
Íme:
require_once("connect.php");
$i=1;
while(empty($i)=FALSE)
{
$kerfokateg = mysql_query("SELECT fokateg FROM fokategoria where (id = " . $i . ")");
$fokateg = mysql_fetch_row("$kerfokateg");
print("<tr><td class=\"menu1\">" . $fokateg[1] . "</td></tr>");
$kerkateg = mysql_query("SELECT * FROM kategoria where (fokateg = " . $i . ")");
while(empty($kerkateg)=FALSE)
{
$kateg = mysql_fetch_row("$kerkateg");
print("</tr><td class=\"menu2\"><a href=\"index.php?page=cikkek.php&kat_id=" . $kateg[0] . "\">" . $kateg[1] . "</td></tr>");
}
$i++;
}
?>
Nah. Jó than-elést :D
MSzilveszter - http://www.netnap.hu
Ez egyszerűbb
Amennyire kisilabizáltam a kódodból, nagyjából vmi hasonló lekérdezés kell neked. A többi cuccost dl-el csináltam, de ízlés szerint átalakítható. Lehet, hogy vannak hibák, nem próbáltam ki, csak ide pötyögtem, de az elve azért stimmel:
Nem nagyon értem, hogy a
Mr.Tiny
nem te vagy...
Tényleg nem fog üres lenni az érték, bár.... ha minden olyat felhasznált a táblából, aminél a főkategória 1, akkor elvileg nincs mit adni neki értéket, azaz a mysql_fetch_row false értékkel (0) tér vissza. Azt hittem legaláb is
Aztán mint a tapasztalat mutatja, nincs igazam, mert a végtelenségig írja a sorokat az első táblánál.
:)
Megpróbálom a másik ötletet, amit az elötted szóló mondot. :)
MSzilveszter - http://www.netnap.hu
Használj
mysql_fetch_array()
-tmysql_fetch_row
helyett!Ajánlom, h. ismerkedj meg a nyelv alapjaival is a PHP kézikönyv Vezérlési szerkezetek c. fejezet elolvasásával! A misztikus then-ről nem itt fogsz a legjobb leírást találni, ahhoz inkább egy átfogóbb, alapozó programozási könyvet ajánlok: kaphatók szakmai könyvesboltokban.
A then azt a programblokkot jelöli, ami akkor fog lefutni ha az if-ben megadott feltétel igaz lesz. Ellenkező esetben az else után megadott blokk fut le, ha van ilyen megadva. Röviden ennyi.