Autor Zpráva
Networker
Profil
Ahoj,

mám tabulku:

CREATE TABLE IF NOT EXISTS Uzivatel (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    jmeno VARCHAR(40) NOT NULL,
    prijmeni VARCHAR(40) NOT NULL,
    email VARCHAR(250) NOT NULL                     
    )

V tabulkách je jméno1, příjmení1, email1 atd...

Výpis dat:

<?php
$vysledek = mysql_query("select * from Uzivatel");
$pocet=mysql_num_rows($vysledek);
if($pocet > 0)
{
echo "<table border=1px>";
while ($zaznam = mysql_fetch_Array($vysledek)):
echo "<TR>";
echo "<TD ALIGN=LEFT>".$zaznam["jmeno"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["prijmeni"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["email"]."</TD>";
endwhile;
echo "</TR>";
echo "</table>";
}
else echo "Tabulka je prázdná";
?>  

Co bych potřeboval...
Potřeboval bych vytvořit druhou tabulku TEAM (kde bude tým, barva) ... To není problém, jenže...
Jak přiřadit uživateli tým a barvu a pak v php vypsat uživatele s přižazenýma věcma?

Děkuji za pomoc


Našel by se někdo, kdo by mi napsal, jaké parametry má mít tabulka TEAM?

Při vkládání nového záznamu uživatele bych chtěl mít roletku, kde by bylo možné vybrat z týmu ... Při ukládání by se to uložilo :-)

popř. co ještě přidat do tabulky Uzivatel?

Potom ten výpis v PHP :-)

mockrát děkuji


Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
lionel messi
Profil
Networker:
Dotazy cez viac tabuliek zvláda tzv. JOIN. V praxi to pre teba znamená, že by si mal do tabuľky Uzivatel pridať stĺpec pomenovaný napr. id_team a potom by dotaz vyzeral zhruba takto:
SELECT u.*, t.tym, t.barva
FROM Uzivatel u
JOIN Team t
ON u.team_id = t.id

Poznámka: Dobrým programátorským zvykom je držať sa v rámci aplikácie konzistentne jedného jazyka, čo platí aj pre pomenovanie tabuliek.
Networker
Profil
Prosímtě, mohl bys mi to rozepsat více?
Zachránil bys mě, do půlnoci musím úkol odevzdat :-)
lionel messi
Profil
Networker:
Prosímtě, mohl bys mi to rozepsat více?
Čomu konkrétne nerozumieš?

Vytvoríš tabuľku team so stĺpcami trebárs id, team, barva. Do tabuľky Uzivatel pridáš stĺpec id_team, pričom id_team v Uzivatel sa bude zhodovať s id príslušného týmu v tabuľke Team.

Uzivatel
id jmeno prijmeni email                            id_team
1 Lukáš Hvila      mail@example.com      2 
-----------------------------
Team
id team                                          barva
1 HC Slovan Bratislava                 belasá
2 HC Košice                                  ružová
Fisir
Profil
Reaguji na Networkera:
Jak přiřadit uživateli tým a barvu a pak v php vypsat uživatele s přižazenýma věcma?
Jak už říkal [#2] lionel messi, JOIN.

jaké parametry má mít tabulka TEAM?
To je vlastně jedno.
CREATE TABLE IF NOT EXISTS Team (
    id INT UNSIGNED NOT NULL AUTO INCREMENT PRIMARY KEY,
    nazev VARCHAR(100) NOT NULL,
    barva VARCHAR(10) NOT NULL
)

co ještě přidat do tabulky Uzivatel?
ID týmu, který si uživatel zvolil.

Pak už jenom stačí vybírat z obou tabulek současně (pomocí zmíněného JOINu):
SELECT * FROM Uzivatel u JOIN Team t ON u.team = t.id

Následně tato data zapracuješ do tabulky:
echo "<TD ALIGN=LEFT>".$zaznam["u.jmeno"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["u.prijmeni"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["u.email"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["t.nazev"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["t.barva"]."</TD>";

Při vkládání nového záznamu uživatele bych chtěl mít roletku, kde by bylo možné vybrat z týmu
Vyber si všechny týmy a vygeneruj příslušný select.
Networker
Profil
Kde mohu mít chybu? Vypíše to 3 prázdné tabulky... :-(

 
<?php
$vysledek2 = mysql_query("select * from Uzivatel");
$vysledek = mysql_query("SELECT * FROM Uzivatel u JOIN Team t ON u.tym_id = t.id");
$pocet=mysql_num_rows($vysledek2);
if($pocet > 0)
{
echo "<table border=1px>";
while ($zaznam = mysql_fetch_Array($vysledek)):
echo "<TR>";
echo "<TD ALIGN=LEFT>".$zaznam["u.jmeno"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["u.prijmeni"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["u.email"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["t.nazev"]."</TD>";
echo "<TD ALIGN=LEFT>".$zaznam["t.barva"]."</TD>";
endwhile;
echo "</TR>";
echo "</table>";
}
else echo "Databáze je prázdná";
?>  
lionel messi
Profil
Networker:
Podľa mňa by mali byť indexy poľa $zaznam bez tabuľkového aliasu. Teda len $zaznam["jmeno"], $zaznam["barva"] a podobne.
mimochodec
Profil
Networker:
Jakýmsi divokým zpúsobem mícháš dva dotazy a proměnné $vysledek a $vysledek2. Konkrétně toto ti zaručeně fungovat nebude:
$vysledek = mysql_query("SELECT * FROM Uzivatel u JOIN Team t ON u.tym_id = t.id");
$pocet=mysql_num_rows($vysledek2);

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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