Autor Zpráva
Haďas
Profil
Ještě jednou zdravím,

mám ještě takový problém ale ten už je celý nad moje chápání. Měl jsem za úkol vytvořit stránky s registraci, loginem, uživatelským a administrátorským rozhraním apod. To vše se mi povedlo ale nastala chyba kdy po mě vyučující chtěl vypsat hodnoty ze dvou sql tabulek, tak aby se data propojila.

1. tabulka obsahuje: | ID_uzivatele | username | password | spravce |
2. tabulka obsahuje: | ID_dochazky | ID_uzivatele | datum | den | cas |

jde mi o vypsání dat, kde pomocí ID_uzivatel se data propojí a vypíše se ID_uzivatel | username | ID_dochazky | datum | den | cas | ale tak aby se ke každému uživateli vypsala všechna jeho uložená docházka.

Vyučující mi na to ukazoval jeden příkaz, co je také nad moje chápání že to jde jedním příkazem, ale v tom překvapení se mi to nezapsalo ho hlavy.

Opravdu budu velmi vděčný za jakékoliv nakopnutí.
lionel messi
Profil
Haďas:
Vyučující mi na to ukazoval jeden příkaz, co je také nad moje chápání že to jde jedním příkazem, ale v tom překvapení se mi to nezapsalo ho hlavy.

Zrejme mal na mysli JOIN.

Konkrétne v tvojom prípade bude vyzerať takto (samozrejme, s tvojimi názvami tabuliek):
SELECT u.ID_uzivatele, u.username, d.ID_dochazky, d.datum, d.den, d.cas
FROM uzivatele u
JOIN dochazka d
ON u.ID_uzivatele = d.ID_uzivatele
Taps
Profil
Select t1.*,t2.* from tab1 as t1 inner join tab2 as t2 on t1.ID_uzivatele = t2.ID_uzivatele
Tab1 = tabulka1
Tab2 = tabulka2
Haďas
Profil
Super, díky za pomoc.
Mrknu na to zítra a ozvu se s novými poznatky ��
Ještě jednou děkuji.
Haďas
Profil
zdravim vás pánové,

tak jsem v phpmyadminovi v SQL zkusil oba příkazy a oba fungují ;) teď se s tim zkusim poprat tak aby se mi to vypisovalo na stránce :)
Keeehi
Profil
Haďas:
Ač ty dotazy vypadají podobně, drobný rozdíl v nich je. A tím je to INNER.
Druhý dotaz vypíše jen uživatele, kteří mají alespoň jednu docházku. Ti co nemají ani jediný záznam o docházce se ve výsledků neobjeví.
První dotaz však zahrne do výsledku i uživatele bez docházky. Ve výsledků budou každý jako jeden řádek s tím, že slupce username, password a správce budou vyplněné ale sloupce ID docházky, darum, den a čas budou prázdné (null).
pcmanik
Profil
Keeehi:
Prázdne by boli len v tom prípade ak by sa použil LEFT JOIN. Pri klasickom JOINE sa riadky z užívateľov, ktorí nemajú záznam v dochádzke vôbec nezobrazia.
Keeehi
Profil
pcmanik:
Jo, jsem to ale popleta. JOIN je vlastně alias INNER JOINu.
Haďas
Profil
Keeehi: jj, všiml jsem si toho, u prvního kodu se mi zobrazi pouze to co si nadefinuju a při druhém se mi vypíše vše.

nevěděli byste jak to teď vypsat na stránce? zkoušel jsem to na hulváta přes echo ale to vypíše pouze Resource id #4
lionel messi
Profil
Haďas:
nevěděli byste jak to teď vypsat na stránce? zkoušel jsem to na hulváta přes echo ale to vypíše pouze Resource id #4

Samotná funkcia mysql_query nevracia dáta, ale iba resource (alebo false v prípade neúspechu). Pomôže mysql_fetch_assoc.

$sql = "SELECT u.ID_uzivatele, u.username, d.ID_dochazky, d.datum, d.den, d.cas FROM uzivatele u JOIN dochazka d ON u.ID_uzivatele = d.ID_uzivatele";
$query = mysql_query($sql);

while($row = mysql_fetch_assoc($query)) {
  echo $row["ID_uzivatele"]. " ". $row["username"]. " ". $row["ID_dochazky"]. " ". $row["datum"]. " ". $row["den"]. " ". $row["cas"];
}
Haďas
Profil
tak jsem to sesmolil nakoenc sám a docela to i funguje ;)

<?php
session_start();

$uzit_jmeno="root";         //jmeno admina php 
$hesloo="abcd1234";        //heslo admina php 
$server_jmeno="localhost"; //server kde je admina php 

$databaze=mysql_connect($server_jmeno, $uzit_jmeno, $hesloo) or die("Nemůžu se připojit k databázi!");
$vyber_databze=mysql_select_db("stranky_1", $databaze);

$vypis=mysql_query
("SELECT u.ID_uzivatel, u.uzivatelske_jmeno, d.ID_dochazka, d.datum, d.den, d.cas
FROM uzivatele u
JOIN dochazka d
ON u.ID_uzivatel = d.ID_uzivatel") 

or die (mysql_error());

?>

<html>

<head>
<title></title>
</head>

<body>

<table border="1">
<tr>
<th>ID uživatele</th>
<th>Uživatelské jméno</th>
<th>ID docházky</th>
<th>Datum</th>
<th>Den</th>
<th>Čas</th>
</tr>

<?php
  while($uzivateleee=mysql_fetch_assoc($vypis)){
      echo"<tr>";
      
      echo"<td>".$uzivateleee['ID_uzivatel']."</td>";
      echo"<td>".$uzivateleee['uzivatelske_jmeno']."</td>";
      echo"<td>".$uzivateleee['ID_dochazka']."</td>";
      echo"<td>".$uzivateleee['datum']."</td>";
      echo"<td>".$uzivateleee['den']."</td>";
      echo"<td>".$uzivateleee['cas']."</td>";
      
      echo"</tr>";
}
?>
</table>

</body>

</html>
Haďas
Profil
moc vám všem děkuju za pomoc ;)

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: