Autor Zpráva
Anonymní
Profil *
Ahoj, celý dopoeldne si lámu hlavu jak spojit tři tabulky do požadovaného výsledku.

Mám tabulku user a v ní mimo jiné

userid
loginname

Dál tabulku teams a v ní mimo jiné

userid
teamname

a třetí a nejdůležitější tabulku posta a v ní

id
odid
proid
text
....

A ted,lidi si posílají zprávy, můžou v doručených odpovídat kliknutím na odpověz, nebo mazat kliknutím na smaž, vcelku jednoduchý operace.

Jak ale udělat položku vzájemné vzkazy?

To je vezmi id jednoho id druhého (obě id předávám v $_GET) a zobraz jen jejich vzájemné zprávy podle data od nejstaršího.

Zkoušel jsem to tímhle příkazem, ale ukáže to jen odeslané, tak nevím:(


if ($_GET['oduid'] && $_GET['prouid'])

{
$proid = $_GET['prouid'];
$odid = $_GET['oduid'];
$vzajemne = mysql_query("select p.id as id, p.proid as proid, p.odid as odid, p.odeslano as cas, p.text as text, a.loginname as uzivatel, b.loginname as uzivatel, c.teamname as tym, d.teamname as tym from posta p, user a, user b, teams c, teams d where (a.userid = '$proid') and (b.userid = '$odid') and (c.userid = '$proid') and (d.userid = '$odid') and (p.smazalod = 'n') and (p.smazalpro = 'n') order by cas ASC") or die ("Nelze vypsat vzájemné ".mysql_error());
while ($vz = mysql_fetch_array($vzajemne)):
$postid = $vz["id"];
$kdy = date('d.m.Y, H:i', $vz["cas"]);
$autor = stripslashes($vz["uzivatel"]);
$text = stripslashes($vz["text"]);
$odtym = stripslashes($vz["tym"]);
echo '<table cellpadding="4" cellspacing="0" id="zprava" align="left">';
echo '<thead><tr><th colspan="2" align="center" style="border-bottom:1px solid #0066cc;;background-image: url(../img/tab.png);color:#ffffcc;">pro: '.$autor.'&nbsp;('.$odtym.')</th></tr></thead>';
echo '<tbody>';
echo '<tr bgcolor="#E9E9E9"><td style="color:#000000;" colspan="2">'.$text.'</td></tr>';
echo '<tfoot><tr bgcolor="#dadada"><td align="left" style="width:70%;"><a href="./zpravy.php?id=1&smaz='.md5($postid).'">Smaž</a>&nbsp;&nbsp;&nb sp;<a href="./zpravy.php?odpovez='.$postid.'&komu='.md5($odid).'">Odpověz</a ></td><td align="right" style="width:30%;">'.$kdy.'</td></tr></tfoot>';
echo '</tbody></table><br />';
endwhile;
}


Díky za případnou pomoc.
Kajman_
Profil *
select ...
if(a.userid = '$proid','odeslaná','přijatá') as smer,
...
...where (((a.userid = '$proid') and (b.userid = '$odid') and (c.userid = '$proid') and (d.userid = '$odid'))
or
((a.userid = '$odid') and (b.userid = '$proid') and (c.userid = '$odid') and (d.userid = '$proid')))
and (p.smazalod = 'n') and (p.smazalpro = 'n')
Anonymní
Profil *
if(a.userid = '$proid','odeslaná','přijatá') as smer,

Díky moc. Akorát tomuto trošku nerozumím - "odeslaná, přijatá" za to mám dosadit proměnné odid a proid?
Kajman_
Profil *
Díky moc. Akorát tomuto trošku nerozumím - "odeslaná, přijatá" za to mám dosadit proměnné odid a proid?

ne, to tam být nemusí... jen pak ve výsledku dotazu je sloupeček smer, který určuje jestli to první odeslal nebo poslal.
Anonymní
Profil *
Píše mi to:
Nelze vypsat vzájemné You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') as smer, from posta p, user a, user b, teams c, teams d where (((a.userid = '2' at line 1

query vypadá takto:

$vzajemne = mysql_query("select p.id as id, p.proid as proid, p.odid as odid, p.odeslano as cas, p.text as text, a.loginname as uzivatel, b.loginname as uzivatel, c.teamname as tym, d.teamname as tym, if(a.userid = '$proid') as smer, from posta p, user a, user b, teams c, teams d where (((a.userid = '$proid') and (b.userid = '$odid') and (c.userid = '$proid') and (d.userid = '$odid')) or
((a.userid = '$odid') and (b.userid = '$proid') and (c.userid = '$odid') and (d.userid = '$proid')))
and (p.smazalod = 'n') and (p.smazalpro = 'n') order by cas ASC") or die ("Nelze vypsat vzájemné ".mysql_error());
Anonymní
Profil *
Dnes tu Kajman_e už asi nebudeš, tak si s tím zkusím pohrát, jestli na to nepřijdu sám, mám celou noc co dělat.:)
Anonymní
Profil *
Tak jsem na to přišel, stačilo odstranit to if... Ale další zádrhel je v tom, že mi to sice do hlavičky správně vypíše od koho, čili na přeskáčku od toho, pak od druhýho, ale text je ve všech stejný, tedy ne stejný, ale vždy jen od toho jednoho userid. Takže i text se musí rozlišit, že je to od něj a pak zas od něj.
Kajman_
Profil *
Zkuste ještě přidat

and p.proid=a.userid and p.odid=b.userid
Anonymní
Profil *
Ano to pomohlo, díky za pomoc.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0