Autor Zpráva
Milkys
Profil
Dobrý večer vážení,
mám podobný problém jako je popsán zde, jen nechci zasahovat do db a ukládání dat a update ošetřit již předtím. Rád bych si o tom i početl, ale nevím co hledat.
Uvedu př. po rozparsování jednoduchého xml souboru:
   
$XML=simplexml_load_file("soubor.xml");
             
    foreach($XML->zaznam as $z){
    $1_col = $z->1col;
    $2_col = $z->2col;
    $3_col = '0';
      echo $1_col.'  '.$2_col.'  '.$3_col.'<br />';
    }  
      

To vyflusne:
1  aaa   0
2  bbb   0
3  ccc   0
1  aaa  0
1  ccc  0
1  bbb   0
2  aaa  0
1  aaa  0
3  ccc   0


Vypisuje to správně, protože to v xml souboru takto je. Ovšem v db tyto duplicitní hodnoty resp. celé řádky (označeno tučně) zaberou zbytečně místo na víc. Proto bych tyto duplicity nechtěl vypisovat resp. ukládat do Mysql db. Dají se nějak přeskočit? Existuje na to v php nějaká funkce? Nebo něco co přeskočí o řádek dál pokud zjistí, že hodnoty $1_col a $2_col už ve výpise existují.
$1_col se může opakovat, $2_col se může také opakovat a chci, aby již jednou současně uvedená kombinace hodnot na jednom řádku se přeskočily.
Jednoduše: byl bych rád pokud by ve výpise byly hodnoty ty co nejsou strong.
Děkuji za reakce a přeji hezký ničím nerušený večer.
Čest
Tori
Profil
Milkys:
Můžete to řešit až na úrovni databáze: nastavíte unikátní klíč přes sloupce, v nichž se nesmí opakovat stejná kombinace hodnot (asi levý a prostřední sloupeček v tom příkladu). Při ukládání dat použijete příkaz INSERT IGNORE - duplicitní hodnoty se neuloží a navíc místo chyby vyvolají jen varování.
Milkys
Profil
Tori:
děkuji, ale to jsem právě nechtěl Mysql je již nastavená a proto bych nerad do ní zasahoval - přiznám se, že tomu moc nehovím, teprve se učím. Mě zajímá jen pokud se to dá ošetřit už před uložením. Dejme tomu, že to budu chtít vyechovat. Dá se to nějak vyřešit?
Milkys
Profil
Tori:
nedalo mi to, nastudoval jsem to a vyzkoušel. Je to dobrý, v db je to uloženo správně.
Následující související dotaz s mým problémem by měl být asi v sekci o databázi, přesto se zde ještě zeptám. Primární klíče v obou sloupcích nebudou mít špatný vliv na fungování db a pouze pomáhají při importu? Je tak?
Pokud by má doměnka byla false, vytvořím srovnávací tb s primárníim klíči v obou sloupcích tam si data srovnám a pak je nasypu do originál tb. To by mělo fungovat.
Znáte jednodušší řešení?
Ženský a chlapi ještě spát nechoďte, noc je ještě mladá a poraďte začátečníkovi.
Tori je žena a jaká, rozumí mysql.
Díky.
Tori
Profil
Milkys:
Nemusí to být nutně primární klíč, jen musí být unikátní. (Primární je také unikátní, ale záleží na návrhu DB, jestli ho potřebujete na těchto sloupcích.)
Milkys
Profil
Tori:
aha, už to vidím. Dám tam unikátní na oba sloupce a bude to dobrý. Nyní něco počtu o UPDATE Mysql a importech do mysql. Budu rád, když mi zase někdy pomůžeš a bude mi ctí Ti to oplatit, dáš-li mi tuto možnost.
Ještě jednou děkuji.
Michal666
Profil
Jen nezapomeňte, že ten unikátní klíč musí být jeden přes dva sloupce :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0