« 1 2
Autor Zpráva
Tori
Profil
Tronicken:
v jednom databázovém řádků je více dat i z dalších inputů (které s výslednou vypisovanou php tabulkou nemají nic společného ale vztahují se k obsahu stránky)
celá vypisovaná tabulka (to co se tu snažím vyřešit) MÁ dynamický počet inputů (klidně 200)

A proto by neměly být ve stejné DB.tabulce data z těch nesouvisejících inputů, a zároveň data z těch polí kterých si naklikáte kolik potřebujete. Na první pohled to je vztah 1:N - jeden záznam o něčem (=nesouvisející data) a na něj navázaných hodně záznamů o něčem jiném (=200 inputů).

Jestli se můžu zeptat - s jakými daty přesně pracujete? O čem tu vlastně mluvíme? (Např.: ty dynamické inputy si naklikáváte po trojicích. Budou vždy přesně tři - jako máte teď - anebo se může jejich počet změnit? Alphard vám navrhnul schéma tabulky, které počítá s libovolných počtem záznamů na řádek a s tím, že všechny buňky jsou stejně důležité a máte je teda ve formu po třech na řádek hlavně z důvodu vzhledu/přehlednosti. Pokud by spolu ale významově souvisely hodnoty v rámci jednoho řádku, tak bych je třeba taky ukládala do DB po třech na řádek.) Jde o to, že principielně je chyba ukládat více hodnot do jedné DB buňky - špatně se s nimi pracuje, jak jste sám zjistil. Ale bez znalosti toho, o jaká data jde, vám sice poradíme změny k lepšímu, ale možná ne optimální návrh DB.
Tronicken
Profil *
Tori:
Jestli se můžu zeptat - s jakými daty přesně pracujete?

Text, čísla, libovolné znaky UTF - 8 kódování

O čem tu vlastně mluvíme?

Viz můj příspěvek č. 30 2. část (to je jak to je momentálně provedené a jak by jsem si představoval výsledek). Dynamických inputů (co si naklikám) bude v konečném součtu 6 (se třemi se tu pracovalo jenom pro ukázku). Jinak změnit nepůjdou (uživatelsky).

Pokud by spolu ale významově souvisely hodnoty

Právě že obsak s 99% procentní pravděpodobností spolu souviset nebude v jednotlivých buňkách.

Jde o to, že principielně je chyba ukládat více hodnot do jedné DB buňky - špatně se s nimi pracuje

Možná ano, ale k jednotlivým částem se dá přidat nějaký znak, který se pak rozřeže pomocí explode..

V konečném důsledku to je jako by to byl nějaký dlouhý text, který potřebuju hodit do sloupečků a vypsat vedle sebe (jedna databázová buňka = 1 sloupeček, kdy na sebe obsahově hodnoty z buněk navazují =
1. hodnota v 1. databázové buňce na jednom řádku v databázi se rovná 2. databázové buňce na prvním řádku
2. hodnota v 1. databázové buňce na jednom řádku v databázi se rovná 2. databázové buňce na druhém řádku
x. hodnota v 1. databázové buňce na jednom řádku v databázi se rovná 2. databázové buňce na xtém řádku
) s tím, že jednotlivé řádky u výpisu se budou chovat jako celek..

Jak to mám jinak popsat a vysvětlit?


Dodatek - při rozsekání pomocí explode mi to "vyplivne"

Array ( [0] => 1a [1] => 2a [2] => 3a [3] => 4a ) 

a tento hodnoty tohoto arraye (0,1,2,3) jsou stejné jak pro první databázovou buňku, tak pro druhou, ... , tak pro šestou databázovou buňku na jednom řádku (hodnoty k sobě pasují).. Jak toho využít?


Upřesnění

mám uloženo například

v prvni buňce
anna # anna2 # anna3 #

ve druhe buňce
ota # ota2 # ota3 #

ve třetí buňce
pepa # pepa2 # pepa3 #

A při rozsekání explodem

první buňka
Array ( [0] => anna [1] => anna2 [2] => anna3 ) 

druhá buňka
Array ( [0] => ota [1] => ota2 [2] => ota3 ) 

třetí buňka
Array ( [0] => pepa [1] => pepa2 [2] => pepa3 ) 
Tori
Profil
Tronicken:
„Jestli se můžu zeptat - s jakými daty přesně pracujete?“
Text, čísla, libovolné znaky UTF - 8 kódování
Myslela jsem spíš, jestli to je fórum, databáze filmů/koček/motorek/citátů, ... tak nějak.

„Jde o to, že principielně je chyba...“
Možná ano, ale k jednotlivým částem se dá přidat nějaký znak, který se pak rozřeže pomocí explode..
Koukněte na otočení pole o 90° - řešení v první odpovědi by se dalo použít na to pole rozsekaných (rozřezaných) výsledků, když jinak nedáte.
Tronicken
Profil *
Tori:
když jinak nedáte.

Toto je nejreálnější řešení.. Protože dejme tomu, že si uživatel přidá 200 krát inputy. Jelikož mu to vždycky "vyplivne" najednou 6 inputů a on by si to hodil 200 krát -> vytvářet 1200 buňek do tabulky, pak to po jedné přiřazovat.. Bylo by to ještě více komplikovanější a hlavně časově zdlouhavé a náročné, než ukládat do šesti buněk a z šesti buňek pak zase vytahovat.. Nepotřebuju vytáhnout jenom část, potřebuju vytáhnout vždy všechny buňky a ty buňky k sobě přiřadit.

Tori:
Koukněte na otočení pole o 90°

Mno zajimavé řešení, nicméně funce flipDiagonally?

Call to undefined function flipDiagonally() in ... on line 62 -> zkoušeno na čistý CopyPaste jejich prvního příkladu.


Nešlo by nějak jednoduše upravit to řešení od abc [#8] aby se prostě řádek choval jako celý řádek a né jako jednotlivé buňky (viz [#20] )?


Tu uprávu myslím v podobě například nějakých dalších vložených tabulek apod.
Tori
Profil
Tronicken:
undefined function

Tori:
řešení v první odpovědi
tj. v této, fce transpose.
Tronicken
Profil *
Napadl mě ještě jeden způsob -

do databáze ukládam hodnoty za sebou oddělené ## .

Vytvořil sem na to funkci na vytahování z databáze a přiřazování

$hash = $_GET[hash];      //Získám klíč z adresního pole
$q = "SELECT * FROM tabulka where hash = '$hash'";         //Vyberu si hodnoty
    $r = mysql_query($q) or die("Dotaz nelze provést: " . mysql_error());    //Provedu dotaz

while ($p = mysql_fetch_array($r))
{ 

$d = array_map(null, explode("##",$p['bunka1']), explode("##",$p['bunka2']), explode("##",$p['bunka3']), explode("##",$p['bunka4']));   //Pomocí array_map přiřadím arraye k sobě, které sem získal "rozsekáním" pomocí explode
print_r($d);  //Vypíšu

 }

Výsledek z toho získám jako

Array (
 [0] => Array ( [0] => 1a  [1] => 1b  [2] => 1c  [3] => 1d  ) 
 [1] => Array ( [0] => 2a  [1] => 2b  [2] => 2c  [3] => 2d  ) 
 [2] => Array ( [0] => 3a  [1] => 3b  [2] => 3c  [3] => 3d  ) 
 [3] => Array ( [0] => 4a  [1] => 4b  [2] => 4c  [3] => 4d  )
 [4] => Array ( [0] => 5a  [1] => 5b  [2] => 5c  [3] => 5d  )
 [5] => Array ( [0] => [1] => [2] => [3] => ) ) 
 
 
- ve výpisu to je hozené za sebou, zde jsem to pro lepší přehlednost odřádkoval..

Jak mám z tohoto "arraye" vytvořit tabulku -
<tr><td>1a </td><td> 1b </td><td> 1c </td><td> 1d </td></tr>
<tr><td>2a </td><td> 2b </td><td> 2c </td><td> 2d </td></tr>
<tr><td>3a </td><td> 3b </td><td> 3c </td><td> 3d </td></tr>
<tr><td>4a </td><td> 4b </td><td> 4c </td><td> 4d </td></tr>
<tr><td>5a </td><td> 5b </td><td> 5c </td><td> 5d </td></tr>

?
panther
Profil
Tronicken:
Jak mám z tohoto "arraye" vytvořit tabulku
foreach ($d as $array) {
    echo '<tr>';
    foreach ($array as $item) {
        echo '<td>' . $item;
    }
}
Tronicken
Profil *
Super! Jede to! Dosáhl jsem toho, čeho jsem chtěl! Jupí

Děkuju všem zůčastněným a je mi líto že jste mě prostě nemohli pochopit.
Takže - díky
« 1 2

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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