Autor Zpráva
dawe27
Profil
cau, potřeboval bych poradit mám v MYSQL tabulku "zapasy" a tabulku "tymy" v zapasech mam sloupce team_id1 a team_id2 a v tymech pak team_name, udělal jsem si script který by měl vypsat zápasy ale vypíše to uplně jiný název týmu než má (ne podle id)
<?php
require_once("settings.php");
require_once "inc/header.php";
$ligaid = $_GET["ligaid"]; 
ob_start(); 
if($ligaid == 0 ){ 
echo "<table border='0' width='450'>\n";
$data2= mysql_query ("select  * from ligy ");
while ($data3= MySQL_Fetch_Array($data2)) {
echo "<tr>\n"; 
echo "<td>".$data3["nazev_ligy"]."</td>\n";
echo "<td><a href='".$_SERVER["PHP_SELF"]."?ligaid=".$data3["id_ligy"]."'>Zobrazit Zápasy</a></td>\n";  
echo "</tr>\n";
} 
echo "</table>\n";
}

if($ligaid == $ligaid ){ 
$data=mysql_query ("select * from zapasy WHERE liga_id = '".mysql_real_escape_string($ligaid)."' ORDER BY zapas_id ");  
$data4=mysql_query ("select tymy.team_name ,zapasy.team_id1 from tymy,zapasy WHERE tymy.team_id=zapasy.team_id1 ");  
$data6=mysql_query ("select tymy.team_name ,zapasy.team_id1 from tymy,zapasy WHERE tymy.team_id=zapasy.team_id2 "); 
while ($data1= MySQL_Fetch_Array($data) and $data5= MySQL_Fetch_Array($data4) and $data7= MySQL_Fetch_Array($data6)) {
?>
<? echo  $data5["team_name"] ;?>
 <strong><? echo  $data1["skore_1"] ;?> 
<? echo " :" ;?>
<? echo  $data1["skore_2"] ;?></strong>
<? echo  $data7["team_name"] ;?>
<p><? echo  $data1["coment"];?></p>
<?
}
} 
$obsah= ob_get_clean(); 
require_once "inc/theme.php";
require_once "inc/footer.php"; 
?>
tady dávam script
Taps
Profil
dawe27:
můžeš použít join, viz níže
select t.*,z.* from zapasy z 
left join tymy d  on z.team_id1=d.id
left join tymy h on z.team_id2=h.id
dawe27
Profil
neporadil bys mi jak to dosadit di skriptu? jaksika se v tom nevyznam a vypsalo mi to chyby
dawe27
Profil
Skoušel jsem to nastudovat na linuxsoftu, ale pořad nevím co stim, možna by mi pomohlo kdyby mi někdo napsal co znamena co v tom joinu
Taps
Profil
dawe27:
join se používá pro spojování tabulek
dawe27
Profil
to vim, ja myslel jak to přesně funguje
panther
Profil
dawe27:
tabulka1 t1 join tabulka2 t2 on t1.id = t2.nazev_sloupce

Volně přeloženo to znamená:
Spoj tabulky tabulka1 a tabulka2, kde hodnota sloupce id z tabulky1 se rovná hodnotě sloupce nazev_sloupce z tabulky2.

Zrovna na linuxsoftu je toto popsáno poměrně slušně, ono se to moc jinak vysvětlit nedá.
dawe27
Profil
zapsal jsem to takto
<?php
require_once("settings.php");
require_once "inc/header.php";
$ligaid = $_GET["ligaid"]; 
ob_start(); 
if($ligaid == 0 ){ 
echo "<table border='0' width='450'>\n";
$data2= mysql_query ("select  * from ligy ");
while ($data3= MySQL_Fetch_Array($data2)) {
echo "<tr>\n"; 
echo "<td>".$data3["nazev_ligy"]."</td>\n";
echo "<td><a href='".$_SERVER["PHP_SELF"]."?ligaid=".$data3["id_ligy"]."'>Zobrazit Zápasy</a></td>\n";  
echo "</tr>\n";
} 
echo "</table>\n";
}
 
if($ligaid == $ligaid ){ 
$data=mysql_query ("select t.*,z.* from zapasy z left join tymy d  on z.team_id1=d.id left join tymy h on z.team_id2=h.id ORDER BY zapas_id");   
while ($data1= MySQL_Fetch_Array($data)) { 
?> 
<? echo  $data1["team_name"] ;?>
 <strong><? echo  $data1["skore_1"] ;?>  
<? echo " :" ;?>
<? echo  $data1["skore_2"] ;?></strong>
<? echo  $data1["team_name"] ;?>
<p><? echo  $data1["coment"];?></p>
<?
}
} 
$obsah= ob_get_clean(); 
require_once "inc/theme.php";
require_once "inc/footer.php"; 
?> 

a vyhodilo mi to error:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/users/dawe27/db27.hys.cz/web/zapasy.php on line 20
dawe27
Profil
poradil by mi někdo prosimvas? ja si s tim sam nevim rady
Taps
Profil
dawe27:
a co ti zobrazí mysql_error ?

$data=mysql_query ("select t.*,z.* from zapasy z left join tymy d  on z.team_id1=d.id left join tymy h on z.team_id2=h.id ORDER BY zapas_id") or die (mysql_error());
dawe27
Profil
Unknown table 't'
panther
Profil
dawe27:
select d.*,z.* ...
Možná, kdyby sis ten dotaz alespoň prohlédl a ne jen ho zkopíroval, přišel bys na to. Příště se trochu snaž, když už tu řešení (byť s překlepem) máš.

Ten Tapsův dotaz jsem nezkoumal, pouze upravuji jeho překlep.
dawe27
Profil
dotaz jsem prozkoumal ale moc mu nerozumím, ted to piše toto
Unknown column 'd.id' in 'on clause'
nazev tabulky v db je správný
Someone
Profil
Ty máš v Databázi tabulku se jménem "d" ? (Unknown column 'd.id' in 'on clause')
Tori
Profil
dawe27:
V JOIN ON ... je totéž, co máte v [#1] v části WHERE (protože i v [#1] spojujete tabulky, takže podmínka pro spojení bude stejná). S jedním delším dotazem akorát nebudete tahat z DB názvy všech týmů, ale jen přesně ty, které potřebujete (= bude to rychlejší).
Tohle by snad mělo fungovat. Názvy týmů jsou aliasované jako "team_name_1" a "team_name_2", aby se to nepletlo.
mysql_query("select z.skore_1, z.skore_2, z.coment, d.team_name AS 'team_name_1', h.team_name AS 'team_name_2' 
from zapasy z 
left join tymy d on z.team_id1 = d.team_id
left join tymy h on z.team_id2 = h.team_id
where z.liga_id = ".intval($ligaid)." ORDER BY z.zapas_id");
dawe27
Profil
mysql_query("select z.skore_1, z.skore_2, z.coment, d.team_name AS 'team_name_1', h.team_name AS 'team_name_2' 
from zapasy z 
left join tymy d on z.team_id1 = d.team_id
left join tymy h on z.team_id2 = h.team_id
where z.liga_id = ".intval($ligaid)." ORDER BY z.zapas_id");
funguje to diky :)

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: