Autor Zpráva
S.T.A.L.K.E.R
Profil *
Potreboval bych poradit...

..mam databazi s produktama, na php strance je vypisuju do nejaky struktrury pod sebe ( proste - > vyrobek 1, u toho je obrazek, popis a jedna polozka vypisu z db je i odkaz. A ted problem - jde nejak udelat aby se po kliknuty na odkaz preslo na stranku s obrazkama, ale jen k danemu produktu..Jde mi o to, ze kdyz se nejaky produkt prida, tak kdyby to odkazovalo na normalni html stranku tak ta tam i po vymazu zustane...stejne tak kdyz se prida produkt, tak se ta html stranka musi vytvorit.
Taps
Profil
A co kdyby jsi měl ještě jednu tabulku s názvem obrázek,kde by se ti ukládala cesta obrázků a id_vyrobků, po kliknutí by se pak zobrazil obrázek k danému id.
S.T.A.L.K.E.R
Profil *
takze nejak takhle - jako administracni rozhrani pro nahravani obrazku by se udelala php stranka se selectem, ktery by se naplnoval z tabulky nabidka ze sloupce nazev_vyrobku a input - file pro nahrani cesty..

pak v db vytvoreni tabulky treba se sloupcema id, nazev, img?

posleze by se to melo vypisovat asi nejak takhle?
<table>
<?php

$result = mysql_query("SELECT img FROM img_produkty");

while ($row = mysql_fetch_array($result)) {

printf ("<tr><td>%s</td>", $row['img']);
}
mysql_free_result($result);
?>
S.T.A.L.K.E.R
Profil *
sorry ten vypis treba takhla?

<table>
<?php

$result = mysql_query("SELECT img FROM img_produkty, nabidka WHERE nabidka.nazev_vyrobku=img.nazev");

while ($row = mysql_fetch_array($result)) {

printf ("<tr><td>%s</td></tr>", $row['img']);
}
mysql_free_result($result);
?>
</table>
Taps
Profil
Pokud načítáš cestu obrázků z db tak musíš napsat <img src='$row["img"]'>
S.T.A.L.K.E.R
Profil *
a nebo takhle ne? <td><img src="%s"></td> </tr>", $row['img']

a jeste jedna nejasnost, kdyz teda kliknu na ten odkaz, dejme tomu u vyrokbu jmenem vyrobek_10, tak se to bude odkazovat na jednu jedinou stranku u vsech vyrobku, na ktery bude ten dotaz pro vypis? a jak pozna, ze chci zobrazit na strance, treba img_velke, zrovna obrazky vyrobku_10
Taps
Profil
pomocí id v tabulce, obrázek budeš mít např.v tabulce obrázek-> id_obrazek.Mám takové tušení, že by to mohlo fungovat podobně jako komentáře u článků. Vypíšeš zkrátka z jedné tabulky id a z druhé tabulky id_obrazek. id a id_obrazek budou stejné.
S.T.A.L.K.E.R
Profil *
tak jsem vytvoril novou tabulku img_produkty, do ktere do sloupce id_nazev zapisuju pomoci <selectu> value hodnotu id z tabulky nabidka..tzn vypada to asi takto -> tabulka nabidka tam sloupce id, nazev,.....atd a tabulka img_produkty...ta vypada takto id, id_nazev, img_big...

id z tabulky nabidka a id_nazev souhlasi jen se mi nedari vypsat obrazky urciteho produktu.

odkaz jsem nastavil u jednoho produktu napr. vyrobek_1 na img_velke.php s tim ze chci videt obrazky produktu 1...a nic chyba - Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

dotaz vypada takto - > $result = mysql_query("SELECT img_big FROM img_produkty WHERE img_produkty.id_nazev=nabidka.id");
Taps
Profil
zkus to takto:
SELECT nabidka.id, img_produkty.id_nazev WHERE
img_prodkuty.id_nazev=nabidka.id

Zkus pohledat na netu příkaz join a union.
S.T.A.L.K.E.R
Profil *
tak dotaz už jede, ale chyba je v tom, že to vypisuje obrázky všech produktů
S.T.A.L.K.E.R
Profil *
a jak vlastně správně docílit, aby se ze stránky nabidka převzalo id do stránky img_produtky
Taps
Profil
S.T.A.L.K.E.R
Pomocí metody GET
$id=$_GET['id'];
mělo by to fungovat
S.T.A.L.K.E.R
Profil *
tak zase o krok dale....

kdyz to tam dam na tvrdaka cislo id, tak to facha..

<?php
mysql_connect("localhost", "jmeno", "heslo") or
die("Nelze se spojit");
mysql_select_db("databaze");
mysql_query("set names utf8");
$result = mysql_query("SELECT * FROM img_produkty, nabidka");
while ($row = mysql_fetch_array($result))
?>

<table border="1">
<?php
$id=$_GET['id'];
$result = mysql_query("SELECT img_big FROM img_produkty WHERE id_nazev=23");
while ($row = mysql_fetch_array($result))
{
printf ("<tr><td><img src="%s"></td></tr>", $row['img_big']);
}
mysql_free_result($result);

?>


ale kdyz tam dam ten dotaz na volani id produktu odkazu na ktery jsem kliknul tak to vypisuje vsechny img...

<?php
mysql_connect("localhost", "jmeno", "heslo") or
die("Nelze se spojit");
mysql_select_db("databaze");
mysql_query("set names utf8");
$result = mysql_query("SELECT * FROM img_produkty, nabidka");
while ($row = mysql_fetch_array($result))
?>

<table border="1">
<?php
$id=$_GET['id'];
$result = mysql_query("SELECT img_big FROM img_produkty WHERE id_nazev=nabidka.id GROUP BY nabidka.id");
while ($row = mysql_fetch_array($result))
{
printf ("<tr><td><img src="%s"></td></tr>", $row['img_big']);
}
mysql_free_result($result);

?>


zda se ze to porad nedokaze prevzit id
S.T.A.L.K.E.R
Profil *
uz mi doslo, proc to vypisuje na ten dotaz vsechny obrazky....protoze kdyz ten dotaz napisu takto: ...... WHERE img_produkty.id_nazev=nabidka.id - tak vlastne vsechny obrazky se rovnaji takoveto podmince...
Taps
Profil
S.T.A.L.K.E.R
Musíš to id nějakým způsobem odeslat. Pak by se ti vypsal jen produkt + obrázek
S.T.A.L.K.E.R
Profil *
no a to je prave to co nefunguje....kdyz pridam do nabidka.php radek $id=$_POST['id']; a v img_produkty.php je $id=$_GET['id']; tak to stejne nefunguje...
Taps
Profil
a co třeba ?
$id_nazev=$_POST['id']
S.T.A.L.K.E.R
Profil *
a mám to dávat do img_produkty.php ne?
Taps
Profil
S.T.A.L.K.E.R
jj
S.T.A.L.K.E.R
Profil *
a to bohuzel nejde

<?php
$id_nazev=$_POST['id'];
$result = mysql_query("SELECT img_big FROM img_produkty, nabidka WHERE img_produkty.id_nazev=nabidka.id");
while ($row = mysql_fetch_array($result))
{
printf ("<tr><td><img src="%s"></td></tr>", $row['img_big']);
}
mysql_free_result($result);
?>

vypise to vsehcny obrazky
BetaCam
Profil
Pánové no já mám dost co to tady vymejšlíte za šílený, ale hlavně uplne nesprávný podmínky. Znáte alespon základy SQL??

WHERE img_produkty.id_nazev=nabidka.id

co je to za kravinu?? Takhle to vypíše všechny obrázky ke všem produktům. Proč ... ?? No stačí logicky myslet. nabitka.id je PK a img_produkty.id_nazev je FK. Takže touhle vaší podmínkou vlastne děláte INNER JOIN.

$id=$_GET['id']; tak to stejne nefunguje

SELECT img_big FROM img_produkty, nabidka WHERE img_produkty.id_nazev=nabidka.id

pročpak to asi nefunguje ?? Zahledte se na ten SELECT pořádně ... BINGOOOO ano opravdu tento select neobsahuje proměnou $id tak jak by to asi mohlo fungovat.

SELECT img_big FROM img_produkty, nabidka

Proč ty tabulky vůbec spojujete, když chcete vypsat jenom obrazky produktu??

pouzijte dotaz typu

SELECT img_big FROM img_producty WHERE id_nazev = $id
S.T.A.L.K.E.R
Profil *
tak taky ne..

takhle:

<?php
$id=$_POST['id'];
$result = mysql_query("SELECT img_big FROM img_produkty WHERE id_nazev = $id");
while ($row = mysql_fetch_array($result))
{
printf ("<tr><td><img src="%s"></td></tr>", $row['img_big']);
}
mysql_free_result($result);
?>

to vypisuje chybu

když dám $id do ' ' takhle:

$result = mysql_query("SELECT img_big FROM img_produkty WHERE id_nazev = '$id' ");

tak to bohužel nevypíše nic.....zřejmě to nepřevezme id z daného produktu po kliknutí na daný odkaz..
BetaCam
Profil
tak to bohužel nevypíše nic.....zřejmě to nepřevezme id z daného produktu po kliknutí na daný odkaz..

a opravdu to id tím odkazem posíláte??

$id = $_POST['id'];

to to mate udelane tak ze kdyz kliknete na odkaz tak se to posila metodou post??

pokud chcete posílat ID pomocí odkazu musí odkaz být ve tvaru napřiklad

example.com/img_produkty.php?id=22

kde 22 je číslo produktu

v img_produkty.php pak máte přístupnou proměnou $_GET['id'] s kterou pak můžete pracovat tedy ji i vložit do vašeho SQL dotazu. Pokud, ale zavoláte pouze odkaz

example.com/img_produkty.php

tak proměná $_GET['id'] vůbec neexistuje takže sní logicky nemůžete pracovat!!
S.T.A.L.K.E.R
Profil *
BetaCam

ano, ano, ano....toto img_produkty.php?id=22 mi tam chybělo !

včera jsem si říkal, že to dnes tímto způsobem zkusím....ale nakonec jsem na to v zápalu práce nad jiným problémem úplně zapomněl....děkuji za "nakopnutí" správným směrem, jak v tomto problému, tak i s těma přepínačema....opravdu dokážete člověku poradit...ještě jednou děkuji.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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