« 1 2 3 »
Autor Zpráva
zdenek
Profil
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
zdenek:
$retez='A|B';
$data=explode('|',$retez);
print_r($data);
zdenek
Profil
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
foreach ($data as $hodnota){
//uložení $hodnoty
}
zdenek
Profil
jenikkozak:

a jak by to bylo pro tento případ?
jenikkozak
Profil
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
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
zdenek:
To print_r klidně vyhoď a pracuj s hodnotou $hodnota. Tam máš vždy ten kousek.
dan55
Profil
<?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
Radek9:

dobře, ale to mi pak jen vyhodí souvislej text ( myslím foreach), a to jsem zase na začátku.
Radek9
Profil
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
...a nebo ulož do té tajemné databáze.
foreach ($data as $hodnota){
mysql_query ("INSERT INTO tabulka (nazev_sloupce) VALUES ('$hodnota')");
}
zdenek
Profil
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
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
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
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
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
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
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
jenikkozak:

myslím celkově těch lomítek bude 150.
chtěl bych aby to bylo oddělené
<br>
, aby to bylo přehlednější.
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
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
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
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
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
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
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
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
Taps:

a jak by tedy měla vypadat struktura?
zdenek
Profil
Radek9:

máš pravdu. promiň
jenikkozak
Profil
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í.
« 1 2 3 »

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:

0