Autor Zpráva
slowk
Profil *
ahoj, měl bych otázku vím že se to tu už řešilo, ale moc jsem z toho nezískal. Mno jde o to na webu mám tři kategorie(odkazy v menu) zapsané v DB a ty tahám do odkazu, aby když kategorii zruším tak abych nemusel do kódu. Jde mi o to že nevím jak mam předat ID, že když kliknu např na srandovní tak aby se zobrazili jenom srandovní. Mám na to 2 php soubory "kategorie.php" a "masterPage.php" na masterPage mám tento kód :
<?php         
    $str_sql=mysql_query("SELECT a04nazev, a04id FROM a04kategorie;");
    while($zaznamy = mysql_fetch_array($str_sql)): 
?> 

    <a href="kategorie.php?a04id" ><?php echo $zaznamy["a04nazev"] ?></a><br/>

<?php endwhile; ?>

a na kategorie.php toto:
<?php while($zbozi = mysql_fetch_array($sql)): ?>


    <center><table border="2" cellpadding="5" cellspacing="4">
    <form method="post" action="">
    
    <td width="150"><?php echo $zbozi["05nazev"] ?></td>
    <td width="150"><?php echo $zbozi["a05popis"] ?></td>
    <td width="150"><?php echo $zbozi["a05cena"] ?></td>      
    </form>
    <br /></td></table></center>   
<?php endwhile; ?>
neporadil by mi někdo ? Dost jsem se na tom zasekl :-(
juriad
Profil
V kategorie.php máš jistě nějaký $sql, který nám zatajuješ :) Do toho dotazu stačí přidat podmínku WHERE:
$sql = "SELECT * FROM tabulka WHERE kategorie = '" . mysql_real_escape_string($_GET['kategorie'] . "'";

A generování odkazů na kategorie změň na:
<?php         
    $str_sql=mysql_query("SELECT a04nazev, a04id FROM a04kategorie;");
    while($zaznamy = mysql_fetch_array($str_sql)):
        echo "<a href=\"kategorie.php?kategorie=$zaznamy[a04id]\" >$zaznamy[a04nazev]</a><br/>";
    endwhile; ?>

Zvýrazněné části si musí odpovídat, jde o ten parametr GET.
slowk
Profil *
Jo to se omlouvám to sem zatajil neuvědomil jsem si to . Ten kód co jsem sem dával kategorie.php tak se tomu nelíbí tento řádek:
<?php while($zbozi = mysql_fetch_array($sql)): ?>
píše mi to že to očekává parametr 1 takže někde nějaký problém v sql :-( Nikde to ale nevidím..
juriad
Profil
Tak nám ten SQL dotaz ukaž.
slowk
Profil *
Tak chybu sem vyřešil :-), ale stále se mi položky v kategorii nezobrazí, ale v URL se mi ID mění což je pozitivní :-) někdo ještě nějaký nápad proč to nevidím ?


jo a pokud jde o to SQL tak to to jsem nahradil za to co jsi mi tu dal :-) akorát jsem si přepsal názvy a doplnil msql_query .. nebo tento select nestačí ?


fakt nevím proč, ale položky na stránce nevidím aktuální kód na stránce kategorie.php? Je tam snad někde chyba ? Prosím proďte někdo :)

$sql = mysql_query("SELECT * FROM a05zbozi WHERE a05kategorie = '" . mysql_real_escape_string($_GET['kategorie']) . "';");
?>
<html>
<div class="complete">
<?php while($zbozi = mysql_fetch_array($sql)): ?>



    <center><table border="2" cellpadding="5" cellspacing="4">
    <form method="post" action="">
    
    <td width="150"><?php echo $zbozi["05nazev"] ?></td>
    <td width="150"><?php echo $zbozi["a05popis"] ?></td>
    <td width="150"><?php echo $zbozi["a05cena"] ?></td>      
    </form>
    <br /></td></table></center>   
<?php endwhile; ?>
juriad
Profil
Jak se chyba projevuje?
Je na stránce kategorie.php alespoň něco? Obsahuje stránka alespoň <div class="complete">?

Pokud ano, tak zkontroluj, že sloupce a05kategorie a a04id obsahují stejná data.
Mimochodem, co je to zač to id, je to řetězec, číslo (ukaž příklad).
Zkus ještě přidat na začátek kategorie.php výpis echo $_GET['kategorie']; pro kontrolu, zda se id správně předává.

Pokud ne, tak je chyba někde v PHP.
slowk
Profil *
Na stránce se class="complete" vypisuje. Id by to mělo vypisovat OK. Id je číslo. Chyba se žádná neprojevuje jenom to že mi to neukazuje položky na dané stránce.


Jo tak když to dám ten GET přes to echo tak mi to píše že to nezná 'kategorie'
juriad
Profil
slowk:
Pokud je to číslo, tak nepatří apostrofy do toho dotazu:
$sql = mysql_query("SELECT * FROM a05zbozi WHERE a05kategorie = " . intval($_GET['kategorie']) );
Pokud to nepomůže, zkus jestli je v $_GET['kategorie'] opravdu id kategorie.

Mimochodem, dotaz do databáze položený prostřednictvím mysql_query by neměl končit středníkem. (The query string should not end with a semicolon.)


Tak špatně generuješ odkazy na stránce masterPage.php.
Musí být tvaru kategorie.php?kategorie=123.
slowk
Profil *
mno nepomohlo to. Zřejmě kategorie neobsahuje ID, ale v url se nachází správné ID. Jinak děkuji za informaci s tím středníkem.
peta
Profil
Pak si aktivuj error_reporting (vypise chyby php), pridej or die a prepis to tak, aby to nejak vypadalo... test dotazu je mozne udelat takto:
$query = "SELECT * FROM a05zbozi WHERE a05kategorie = " . intval($_GET['kategorie']);
echo sprintf("<pre>%s</pre>",$query); // vypise dotaz, muzes tento kod pak pouzit pro phpmyadmina a testnout si, zda dava dotaz stejny vysledek jako v php
$res = mysql_query($query) or die(mysql_error()); // vypise mysql chybu, pokud je dotaz spatne
"Zřejmě kategorie neobsahuje ID, ale v url se nachází správné ID."
To prav zjistis tim mysql_error, kdyz to nenapise chybu, dotaz sql umi zpracovat, ale bud je spatne sestaveny nebo tam fakt neni takovy radek v tabulce.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: