Autor | Zpráva | ||
---|---|---|---|
Ikki Profil |
#1 · Zasláno: 1. 7. 2018, 00:06:35
Ahoj,
chtěl bych vypsat všechny existující data pro dané ID, jenže potřebuji aby tam byla možnost podmínky pro změnu (stáhnout/překládá se), viz kód. <table class="table table-sm"> <thead> <tr> <th scope="col">Č. Epizody</th> <th scope="col">Název</th> <th scope="col">Možnosti</th> </tr> </thead> <tbody>'; $vyber_epizody = $mysqli->query("SELECT * FROM epizody WHERE id_filmu=".$_GET['id']." ORDER BY cislo_epizody"); while($vypis_epizody = $vyber_epizody->fetch_array()){ $ziskej_preklad = $mysqli->query("SELECT * FROM preklady WHERE id_epizody='".$vypis_epizody['cislo_epizody']."' AND id_anime='".$vypis_epizody['id_filmu']."'"); while($preklad = $ziskej_preklad->fetch_array()){echo ' <tr> <th scope="row"># '.$vypis_epizody['cislo_epizody'].'</th> <td>'.$vypis_epizody['nazev_epizody'].'</td> <td>'; if($preklad['id_epizody'] == $vypis_epizody['cislo_epizody']){echo 'Stáhnout';}else{echo 'Překládá se';}echo'</td> </tr>';}} echo ' </tbody> </table> Jenže při odstranění id_epizody='".$vypis_epizody['cislo_epizody']."' to nefunguje jak má.
|
||
Keeehi Profil |
#2 · Zasláno: 1. 7. 2018, 00:28:25
Musíš přece odstranit i to následující AND, už nemá co spojovat a tak tam nepatří.
|
||
Ikki Profil |
#3 · Zasláno: 1. 7. 2018, 01:16:34
To AND tam samozřejmě nenechávám, jenže pokud ponechám "WHERE id_anime...", tak to právě nefunguje tak jak já chci. Vypíše to dvakrát záznam, jeden špatný a jeden správný. Jenže já potřebuji aby se vypsaly veškeré epizody a pouze u těch, které jsou přeložené se ukázalo "Stáhnout" nebo "Překládá se", v tuto chvíli to funguje jen pokud v databázi mám překlad.
|
||
Keeehi Profil |
#4 · Zasláno: 1. 7. 2018, 07:38:08
Aha, už chápu o co ti jde. Ještě teď potřebuji vědět, zda pro jednu epizodu může být 0-1 překlad nebo 0-n překladů. Jinak řečeno, zda epizoda může mít více než jeden překlad a pokud ano, jak to pak má ve výpisu vypadat.
|
||
Ikki Profil |
#5 · Zasláno: 1. 7. 2018, 18:05:43
Určitě by mělo být možné aby to mělo více překladů, je tam uvedený autor, takže by se to mělo vypsat pod sebe a jen změnit data podle autora překladu. Případně aby se v kolonce "možnosti" vypsalo např. [1] [2] [3] podle překladu. Děkuji ti.
|
||
Keeehi Profil |
#6 · Zasláno: 3. 7. 2018, 08:20:24
Udělal bych to nějak takto. To je ta první varianta, kde se další překlady vypisují pod ty předchozí. Jelikož se ale jedná o překlad stejné epizody, tak se tam vynechává číslo a jméno epizody, jelikož je uvedeno už u prvního překladu. Druhá možnost (1,2,3) je teochu složitější na zápis při tomto způsobu s jedním dotazem ale celkem primitivní v té variantě 1 + N dotazů, kterou jsi uvedl na začátku. Máš to téměř dobře, jen ten druhý while nemá být tam kde je, ale až v buňce tabulky s překladem.
<table class="table table-sm"> <thead> <tr> <th scope="col">Č. Epizody</th> <th scope="col">Název</th> <th scope="col">Možnosti</th> </tr> </thead> <tbody> <?php $lastEpizode = null; $result = $mysqli->query("SELECT * FROM epizody LEFT JOIN preklady ON epizody.cislo_epizody = preklady.id_epizody WHERE id_filmu=".$_GET['id']." ORDER BY cislo_epizody"); while($row = $result->fetch_array()){ if ($row['id_epizody'] === null) { // epizoda nemá překlad echo ' <tr> <th scope="row"># '.$vypis_epizody['cislo_epizody'].'</th> <td>'.$vypis_epizody['nazev_epizody'].'</td> <td>'Překládá se'</td> </tr> '; } elseif ($row['id_epizody'] !== $lastEpizode) { // epizoda má překlad a ve výpisu se objevuje poprvé echo ' <tr> <th scope="row"># '.$vypis_epizody['cislo_epizody'].'</th> <td>'.$vypis_epizody['nazev_epizody'].'</td> <td>Stáhnout</td> </tr> '; } else { // epizoda má překlad ve výpisu se už objevilo a toto je jen další její překlad echo ' <tr> <th scope="row"></th> <td></td> <td>Stáhnout</td> </tr> '; } $lastEpizode = $row['id_epizody']; ?> </tbody> </table> |
||
Ikki Profil |
#7 · Zasláno: 3. 7. 2018, 18:25:30
Keeehi:
Ahoj, zkoušel jsem to, jenže mi to při while vypíše chybu, tedy boolean, ale všechno odpovídá databázi a když jsem se to pokusil opravit a přepsat, tak jsem skončil tam, kde jsem začal. Promiň, že tě s tím tolik otravuju, ale potřebuju to a nemůžu na to přijít, a když tam využiju 2x while, tak jsem opět na začátku.. |
||
Keeehi Profil |
#8 · Zasláno: 3. 7. 2018, 19:46:08
Ikki:
Tak úplně správně ta moje varianta být nemusí. Píšu to rovnou sem. Abych měl jistotu, že to funguje, musel bych si k tomu vyrobit prototyp a vyzkoušet to. To ale udělat teď nemůžu jelikož jsem na delší dovolené a nemám s sebou počítač. |
||
Ikki Profil |
#9 · Zasláno: 3. 7. 2018, 20:06:33
Jasně, chápu. Nic se neděje, hlavně si užívej dovolenou:)
PS: ("SELECT * FROM epizody LEFT JOIN preklady ON epizody.cislo_epizody = preklady.id_epizody WHERE id_filmu=".$_GET['id']." ORDER BY cislo_epizody");
Tohle je správně, nebo tam je někde chyba? Dle mého je to v pořádku, ale prostě to nechce fungovat :( |
||
Časová prodleva: 7 let
|
0