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 |
#3 · Zasláno: 7. 1. 2015, 19:25:47
Prosímtě, mohl bys mi to rozepsat více?
Zachránil bys mě, do půlnoci musím úkol odevzdat :-) |
||
lionel messi Profil |
#4 · Zasláno: 7. 1. 2015, 19:30:13
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 |
#5 · Zasláno: 7. 1. 2015, 19:34:09
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 JOIN u):
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 |
#6 · Zasláno: 7. 1. 2015, 21:04:26
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 |
#7 · Zasláno: 7. 1. 2015, 21:08:59
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 |
#8 · Zasláno: 8. 1. 2015, 00:19:23
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); |
||
Časová prodleva: 10 let
|
0