Autor Zpráva
Apacuka
Profil
Zdravím,
prosím o radu.
Zkouším db v souborech, ale nemůžu přijít jak propojit 2 tabulky.

table1: lide.txt
id|jmeno
--+-----
1 |Pepa
2 |Karel
3 |Jan

table2 mesta.txt
id|lide.id|jmeno
--+-------+-----
1 |3      |Brno
2 |1      |Mikulov
3 |3      |Ostrava

Požadovaný výsledek výpisu tabulky mesta:
id|lide.id|jmeno
--+-------+-----
1 |Jan    |Brno
2 |Pepa   |Mikulov
3 |Jan    |Ostrava

Města vypíši takto, jen už nevím jak to spárovat, aby se za lide.id dosadilo správné jméno.
function zobrazmesta() 
{ 
  $filenamem = 'mesta.txt';
  if (file_exists($filenamem)) {
    $filem = file($filenamem); 
    foreach ($filem as $single_line) {    
      $mesta = explode('|', $single_line);             
echo "id: $mesta [0]<br> jmeno: $mesta [1]<br> mesto: $mesta [2]";         
}}}

V mysql by to bylo jednodušší, ale o to tu nejde.
SELECT * FROM $mesta m LEFT JOIN $lide u ON  m.user_id = u.id

Děkuji za odpověď.
Tori
Profil
Pro každý řádek ze souboru s městy se musí projít všechny řádky v souboru s lidmi (resp. vše o začátku do první shody).
Aby dávalo smysl vůbec pojmenovávat sloupce v "tabulce", tak by se spíš měly z prvního řádku načíst názvy sloupců, a pak u každého dalšího řádku nejdřív vytvořit asoc.pole (podobné tomu, co vrací mysql_fetch_array) a pak teprv porovnávat už pojmenované sloupce. Vzhledem k možnému výskytu svislítka v řetězci bych asi radši použila jiný oddělovač (např. Record separator, 0x1E) anebo jiný formát (např. CSV), pokud byste chtěl ukládat víceřádkové texty tak by musel řádek končit ještě nějakým jiným spec. znakem kromě LF (např. Group separator, 0x0D).
Apacuka
Profil
Sloupce nepojmenovávám, tu je to jen jako příklad.

Obsah souborů je v tomto tvaru.
1|3|Brno
2|1|Mikulov
3|3|Ostrava

S tím svislítkem nebude problém, ale ten trojůhelník taky nevypadá špatně :)
Apacuka
Profil
Škoda že pracování se souborama je těžší než s sql :(
Tori
Profil
Jestli to zkoušíte kvůli tomu, že na serveru nemůžete použít MySQL, tak existuje i SQLite, která ukládá data do souborů, ale normálně se jí můžete ptát SQL jazykem. (Ale jsou tam nějaké odlišnosti od MySQL)
Apacuka
Profil
Moc díky za info.
Už jsem se na to koukal, a vypadá to celkem slibně.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0