Autor Zpráva
pito
Profil
Zdravím,
Mám v databazi 2 tabulky a potřeboval bych udělat společný výpis.
V jedné tabulce mám uložené odkazy na videa z youtube a v druhé tabulce mám fotky které mám ulože ve složkách a cesty k ním jsou v té tabulce podle kategorie.
Díval jsem se na nějaké postupy dvou tabulek a více,ale nějak jsem tomu neporozuměl.

Vytvořil jsem něco takového,ale výsledek je že se mi to zobrazí několika násobně. Tedy když mám 5 fotek tak výsledek mi najede s 10 fotkami.Nevím kde mám chybku.

$kat=$_GET['kat'];

require "../config.php";
$max = "12"; // prispevku na stranku                            
$pocet=MySQL_Query("SELECT count(id) FROM ".$kat." ORDER BY id DESC"); // spocitam ID
$ukaz_pocet=mysql_fetch_array($pocet); 
$str=Ceil($ukaz_pocet[0]/$max); //ziskam pocet stranek
$strana2 = $_GET['strana'];
$strana = $strana2*$max;


$vysledek=mysql_query("SELECT * FROM ".$_GET['kat']." ORDER BY id DESC LIMIT $strana, $max")
or die(mysql_error());  

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

$dotaz=mysql_query("SELECT * FROM videa WHERE kategorie='".$kat."'")
or die(mysql_error());  

while($data = mysql_fetch_array( $dotaz )) {


$id= $row['id'];
$f = ereg_replace(".jpg","mini.jpg",$row['obrazek']);
$g = ereg_replace(".jpg","big.jpg",$row['obrazek']);
echo "<div style='text-align: left; float: left; PADDING-BOTTOM: 6px;'>";
 
echo "<div class='nadfoto'>$row[nadpis]</div><div class='karticka'><a href=\"../images/".$kat."big/$g\" class='normal' title='$row[nadpis]' rel=\"example2\"><img src=\"../images/".$kat."mini/".$f."\" height='98' width='139'></a>";
require_once('votesCore.php');
$vote = new voteClass;
$vote->load_template($row['id']);
echo "</div></div>";

echo "<div class='karticka'><a href=\."?rel=0&amp;wmode=transparent]http://www.youtube.com/embed/".$data['obrazekv']."?rel=0&amp;wmode=transparent\" class=\"normal\" rel=\"example6\">
<img src=\"."/default.jpg]."/default.jpg]http://i.ytimg.com/vi/".$data['obrazekv']."/default.jpg\" border=\"1\" height=\"98\" width=\"139\"></a><br>
<img src='../design/youtube.jpg'>";

echo "</div>";
} 

}
Oli
Profil *
Myslim, ze potrebujes neco jako:
$vysledek = mysql_query('SELECT * FROM videa JOIN kat ON videa.id = kat.id_videa WHERE kat.id="'.$kat.'" ORDER BY kat.id DESC LIMIT '.$strana.', '.$max);

Jsi si jisty, ze mas dobre navr databaze? Moc se me nelibi dynamicky vyber tabulky na 12. radku. Kolik mas tech tabulek?
pito
Profil
No ono je jich víc. To záleží podle kategorie.
Again
Profil
Nechci se dotknout autora, ale právě předvedl, jak se to nemá dělat.

Spojování tabulek se výhradně ponechává databázovému serveru, jak již naznačil Oli, je nutno tedy použít klauzuli JOIN. Přečti si článek o spojování tabulek.

Ještě dodatek k tvému kódu: Proč při každé smyčce načítáš soubor votesCore.php? Stačí ho načíst jenom jednou, stejně jako vytvořit instanci třídy voteClass. Kromě toho není pěkné kombinovat OOP s procedurálním programováním ...
pito
Profil
už jsem to upravil. Teď se ale dívám, že tam mám problém s tým hodnocením.
Protože se mi může stát že v tabulce votes_new kde se zaznamenavají id fotografie narazí stejné id od každé jine kategorie.
Rfilip
Profil
nebyloby lepsi mit fotogrfie v jedne tabulce-jistota odlisneho id?
//mobil
Oli
Profil *
Tvuj problem není PHP, ale databáze. Jestli chceš mít 2 tabulky, řekněme obrázky a kategorie, tak aby mohl být jeden obrázek ve více kategoriích a jedna kategorie aby mohla mít víc obrázků, tak to musíš spojit přes spojovací tabulku. Tohle by ti mohlo pomoct.

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: