Autor | Zpráva | ||
---|---|---|---|
zdenek Profil |
#1 · Zasláno: 10. 2. 2011, 20:33:14
ahoj, potřeboval bych rozkouskovat soubor. asi takhle nějak.
Mám soubor a v něm oddělovače, třeba | a |.chtěl bych abymi to oddělilo ty části oddělené oddělovačem a zapsalo do db typu mysql. chtěl bych se zeptat jak na to, protože si vůbec nevím rady. předem děkuji. |
||
Taps Profil |
#2 · Zasláno: 10. 2. 2011, 20:37:11 · Upravil/a: Taps
zdenek:
$retez='A|B'; $data=explode('|',$retez); print_r($data); |
||
zdenek Profil |
#3 · Zasláno: 10. 2. 2011, 20:41:28
Taps:
díky. a jak se teď dostanu k těm datům?? zobrazí mi to totiž: Array ( [0] => A [1] => B ) díky |
||
jenikkozak Profil |
#4 · Zasláno: 10. 2. 2011, 20:45:43
foreach ($data as $hodnota){ //uložení $hodnoty } |
||
zdenek Profil |
#5 · Zasláno: 10. 2. 2011, 20:48:28
jenikkozak:
a jak by to bylo pro tento případ? |
||
jenikkozak Profil |
#6 · Zasláno: 10. 2. 2011, 20:52:10
zdenek:
Tak, jak jsem to napsal. Nevím, v jakém formátu to chceš do jaké tabulky ukládat, ale to zvládneš dopsat sám. ;-) |
||
zdenek Profil |
#7 · Zasláno: 10. 2. 2011, 20:54:27
jenikkozak:
„Nevím, v jakém formátu to chceš do jaké tabulky ukládat“ asi v normálním, jakože text. jenom jsem nikdy nepracoval s foreach, takže nevím jak na to. dal jsem <?php $retez='abce|dsasd|asd'; $data=explode('|',$retez); print_r($data); foreach ($data as $hodnota){ //uložení $hodnoty echo $hodnota; } ?> a zobrazí se mi: Array ( [0] => abce [1] => dsasd [2] => asd ) abcedsasdasd tak nevím. |
||
Radek9 Profil |
#8 · Zasláno: 10. 2. 2011, 20:56:45
zdenek:
To print_r klidně vyhoď a pracuj s hodnotou $hodnota. Tam máš vždy ten kousek. |
||
dan55 Profil |
#9 · Zasláno: 10. 2. 2011, 20:58:42
<?php $retez='abce|dsasd|asd'; $data=explode('|',$retez); foreach ($data as $hodnota){ echo $hodnota."<br>"; } ?> Teď je ti to jasné? Prostě místo echo $hodnota použiješ mysql dotaz a vložíš de něj $hodnotu. Ale lepší by to bylo vložit hromadně, ne po jednom, ale myslím, že tobě to vystačí takto. |
||
zdenek Profil |
#10 · Zasláno: 10. 2. 2011, 20:59:19
Radek9:
dobře, ale to mi pak jen vyhodí souvislej text ( myslím foreach), a to jsem zase na začátku. |
||
Radek9 Profil |
#11 · Zasláno: 10. 2. 2011, 21:01:08
zdenek:
Říkám, abys s tou hodnotou pracoval. Něco k ní přidej (třeba to <br>, což psal dan55) nebo to obal <div>em atp. |
||
jenikkozak Profil |
#12 · Zasláno: 10. 2. 2011, 21:02:31 · Upravil/a: jenikkozak
...a nebo ulož do té tajemné databáze.
foreach ($data as $hodnota){ mysql_query ("INSERT INTO tabulka (nazev_sloupce) VALUES ('$hodnota')"); } |
||
zdenek Profil |
#13 · Zasláno: 10. 2. 2011, 21:15:00
jakto že mi nefunguje toto?
<?php $retez='dgdfgdf|dfgd|dfgdfgdfg'; $data=explode('|',$retez); foreach ($data as $hodnota){ mysql_connect("localhost", "root", "******") mysql_query ("INSERT INTO ostatni_odkazy (položka 1) VALUES ('$hodnota')") or die(mysql_error()); } ?> |
||
Radek9 Profil |
#14 · Zasláno: 10. 2. 2011, 21:17:36
zdenek:
1) mysql_connect dej na začátek (nebo někam před ten cyklus) 2) není úplně nejlepší používat v názvu sloupců diakritiku a mezery |
||
xmark Profil |
#15 · Zasláno: 10. 2. 2011, 21:19:07
zdenek:
Jestli máš v tabulce sloupec s názvem "položka 1", tak nevím jak to slušně nazvat. Používej výstižné názvy, nepoužívej diakritiku a mezery. Nicméně i tato *** ti bude fungovat, když to dáš do apostrofů. Chce se dodat - bohužel. |
||
zdenek Profil |
#16 · Zasláno: 10. 2. 2011, 21:22:38
Radek9:
díky už to funguje. šlo by ale, že by jeden záznam se zapsal do jednoho slopce, další do dalšího atd? |
||
jenikkozak Profil |
#17 · Zasláno: 10. 2. 2011, 21:28:35 · Upravil/a: jenikkozak
zdenek:
Jo, to by se dalo, ale to bys musel vědět, kolik máš sloupců v tabulce a kolik je těch svislítek v souboru. (Pro upřesnění, aby mě někdo nemusel opravovat: vědět bys to nemusel, ale vypadá to na špatně navrženou tabulku.) Když tak na to koukám, neuvedeš nám tu, jakou máš strukturu tabulek v databázi? Vypadá to totiž podivně. ;-) Foreach je cyklus, který se provede tolikrát, kolik dané pole obsahuje položek. Připojování k databázi ti stačí jednou, proto jej proveď před cyklem. |
||
zdenek Profil |
#18 · Zasláno: 10. 2. 2011, 21:40:03
jenikkozak:
já vím jakou strukturu má ta tabulka a nejspíš budu vědět, kolik lomítek v tom soubou je. jen bych chtěl vidět, jak by vypadal kód, abych si ho pak mohl upravit. struktura tabulky(prozatím): Tabulka:ostatni_odkazy Sloupce: polozka1, polozka2, polozka3 a dejme tomu, že těch lomítek je tam : 150. jak by vypadal kód? |
||
jenikkozak Profil |
#19 · Zasláno: 10. 2. 2011, 21:45:13
Až to doděláš, tak ta tabulka bude mít 150 sloupců?
Nevím, co si mám pod názvy polozka1, polozka2 a polozka3 představit. |
||
zdenek Profil |
#20 · Zasláno: 10. 2. 2011, 21:49:46
jenikkozak:
myslím celkově těch lomítek bude 150. chtěl bych aby to bylo oddělené <br> takže to bude: text|text|text|text|text| text|text|text|text|text| a každý "text" by se zapsal do jednoho slopce a po <br> by to bylo zase od začátku. a místo polozka1 by bylo třeba JMÉNO atd. |
||
Radek9 Profil |
#21 · Zasláno: 10. 2. 2011, 21:51:26 · Upravil/a: Radek9
zdenek:
Nepotřebuješ vědět, kolik ji tem lomítek. Ten cyklus (foreach) projede automaticky všechny, s tím si starost nedělej. Prostě tu hodnotu vem, kdyžtak nějak uprav a zapiš do tabulky. Edit: Můžeš sem picnout kus toho souboru? |
||
petr 6 Profil |
#22 · Zasláno: 10. 2. 2011, 21:59:09
Pokud máš 150 hodnot, 3 sloupce, a chceš každou hodnotu do jiného sloupce, tak ti jaksi bude přebývat 147 hodnot...
Nevím, na co to potřebuješ, ale pravděpodobně by ti na to vystačily dva sloupce: jeden sloupec na hodnoty a jeden sloupec, do kterého zapíšeš číslo té tvé položky, které přísluší daná hodnota. |
||
zdenek Profil |
#23 · Zasláno: 10. 2. 2011, 22:00:21
Radek9:
já ještě nevím, jak ten soubor bude vypadat. jenom, jak by vypadal kód na to zapisování do jednoho sloupce?? |
||
zdenek Profil |
#24 · Zasláno: 10. 2. 2011, 22:01:49
petr 6:
ne, jde mi o to, aby když mám 150 hodnot a 3 slopce, tak aby v každém sloupci bylo 50 hodnot. chápeš? |
||
jenikkozak Profil |
#25 · Zasláno: 10. 2. 2011, 22:02:10 · Upravil/a: jenikkozak
zdenek:
Vždyť to už jsem psal: foreach ($data as $hodnota){ mysql_query ("INSERT INTO tabulka (nazev_sloupce) VALUES ('$hodnota')"); } Edit: Aha, tak ten tvůj poslední příspěvek měl být někde nahoře, protože to docela mění naše představy o tvém souboru. |
||
Taps Profil |
#26 · Zasláno: 10. 2. 2011, 22:04:48
zdenek:
to vypadá spíše na špatnou strukturu databáze jenikkozak: napsal si příkaz pro relaci 1:1, což v tomto příípadě asi nebude to pravé |
||
Radek9 Profil |
#27 · Zasláno: 10. 2. 2011, 22:06:41
zdenek:
„jak by vypadal kód na to zapisování do jednoho sloupce??“ Tenhle kód už jsi měl. To problém není. Ale jestli chceš hodnoty zapisovat do třech sloupců a máš je oddělené po jednom, tak to bude složitější. |
||
zdenek Profil |
#28 · Zasláno: 10. 2. 2011, 22:07:19
Taps:
a jak by tedy měla vypadat struktura? |
||
zdenek Profil |
#29 · Zasláno: 10. 2. 2011, 22:07:55
Radek9:
máš pravdu. promiň |
||
jenikkozak Profil |
#30 · Zasláno: 10. 2. 2011, 22:09:29
Taps:
„napsal si příkaz pro relaci 1:1, což v tomto příípadě asi nebude to pravé“ Omlouvám se, ale příspěvek o 150 hodnotách ve 3 sloupcích se mi zobrazil až po odeslání mého příspěvku. Zatím to tu jsou jen dohady. Celou dobu mi jde o to, že databáze není správně navržená. Bohužel nám zdenek tají, o jaká data mu jde, tudíž mu může někdo jen těžko navrhnout lepší řešení. |
||
Téma pokračuje na další straně.
|
0