Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tekstitietokantaan kirjoittaminen

Sivun loppuun

Jake [27.01.2006 20:47:06]

#

Käytössäni on .php systeemi, jossa on käytössä tekstitietokanta.

Kannan sisältö on seuraavanlainen:

GROUP;hakemisto1;hakemisto2;hakemisto3
NAME;1;kuvan nimi(ilman tyyppiä);
PIC1;kuvat/hakemisto1/hakemisto2/hakemisto3/kuva.jpg;
END;

Kysymykseni kuuluukin seuraavanlaisesti:

Miten saisin ko. tietokantaan lisättyä hakemistosta1, kaikki alihakemistot ja kuvat
oikeille paikoilleen ko. tietokantaan ?

Käsin syötettynä aikaa menisi useita tunteja. Alihakemistoja on n.30 kpl, ja kuvia
per/hakemisto n. 50 kpl

Vinkkejä otetaan vastaan, kun kuitenkin oppia samalla
halutaan :=)

ajv [27.01.2006 20:50:12]

#

Mikäs tuolla oli vikana?
http://mureakuha.com/keskustelut/2?11174

Jake [28.01.2006 09:51:36]

#

Olenko edes lähelläkään totuutta ? Toki tämäkää ei toimi...

<?php

$filename ="admin/databases/tietokanta.csv";

if (file_exists($filename))
unlink ($filename);

foreach(glob("hakemisto/") as $hakemisto){
foreach(glob($hakemisto."*.jpg") as $kuva){
echo $kuva;
}
}

$content = "GROUP;hakemisto;\"$hakemisto\";\"$hakemisto\";
NAME;1;\"$kuva\";
PIC1;\"$kuva\";
END;
";

$tt = fopen("admin/databases/tietokanta.csv", "a") or exit("Tiedoston avaus ei onnistunut!");
fwrite($tt, $content);
fclose($tt);

?>

ajv [28.01.2006 10:45:33]

#

Sun täytyy hoitaa se kirjoitus teksitiedostoon tuolla silmukassa, missä tuo echo $kuva sijaitsee. Siellä on sen takia tulostus, että sen perusteella näät toimiiko nuo silmukat oikein. Kun saat nuo silmukat toimimaan, niin mieti sitten vasta sitä tiedostoon kirjoittamista.


Ja en voi mitään, mutta nään aina punaista, kun näitä ongelmia ratkotaan kahdessa paikassa. Vähän ajan päästä joku toinen koodari kirjoittaa sinulle samat ohjeet tuonne kuhaan. Ei näin.

Jake [31.01.2006 18:02:19]

#

ok. Onkos tuo foreach- kohta kuitenkin oikein ? Eli suunta
on kohdallaan ?

Jake [04.02.2006 08:56:23]

#

Tällä pääsin taas eteen päin, mutta... Se looppi...

foreach(glob("hakemistonnimi/") as $hakemisto){
$polku = "$hakemisto";
foreach(glob($hakemisto."*.jpg") as $kuva){
$tuote = "$kuva";

}
}

$content = "GROUP;hakemistonnimi;$polku;
NAME;1;$tuote;
PIC1;$tuote;
END;
";

$tt = fopen("admin/databases/tietokanta.csv", "a") or exit("Tiedoston avaus ei onnistunut!");
fwrite($tt, $content);
fclose($tt);

ajv [04.02.2006 09:15:22]

#

Mitä siitä loopista? Toimiiko se jo? Jätin sen tuolla kotitehtäväksi selvittää toimiiko se. Ja suunnasta... Vertauskuvallisesti: jos ajatellaan että olet Helsingistä menossa Turkuun, niin nyt olet kyllä menossa jonnekkin Porin suuntaan aikamoista kärrypolkua pitkin... :)

Jake [04.02.2006 10:33:31]

#

hmmm...

printillä tuo tulosti kaikki kylläkin näytölle:

foreach(glob("hakemistonnimi/") as $hakemisto){
print "$hakemisto\n";
foreach(glob($hakemisto."*.jpg") as $kuva){
print "$kuva\n";

joten looppi lienee toimii, ainakin tuossa kohtaan ?

ajv [04.02.2006 11:04:08]

#

Noniin, eli sitten kannattaisi yrittää vaikka muodostaa noista kuvista ja hakemistoista sellanen rivi, kun haluat sinne tiedostoon kirjoitettavan:

<?php

$hakemistot = NULL;
$kuvat = NULL;

foreach(glob("hakemistonnimi/") as $hakemisto){
   // huomaa .= -operaattori, jolla voi lisätä merkkejä merkkijonon perään
   $hakemistot .= $hakemisto.';';
   foreach(glob($hakemisto."*.jpg") as $kuva){
      $kuvat .= $kuva.';';
   }
}

echo $hakemistot;
echo $kuvat;
?>

Ollaan menossa jo Rauman suuntaan. Tosin tuo tietokantarakenteesi näyttää aika ihmeelliseltä....

Jake [04.02.2006 12:45:04]

#

tämmöstä kokeilin ja taas eteni, toki nyt täytyy lähtee töihin :=(

$hakemistot .= 'GROUP;hakemistonnimi;'.$hakemisto.';';

Jake [05.02.2006 09:28:11]

#

Tällaisella lähti toimimaan, ja joo, enpä sitä itse ratkaissut :=(

<?php

  function rglob( $sDir,  $sPattern,  $nFlags = NULL )
  {
    $sDir = escapeshellcmd($sDir);

    $aFiles = glob("$sDir/$sPattern", $nFlags);

    foreach( glob( "$sDir/*", GLOB_ONLYDIR ) as $sSubDir )
    {
      $aSubFiles = rglob( $sSubDir, $sPattern, $nFlags );
      $aFiles = array_merge( $aFiles, $aSubFiles );

    return $aFiles;
  }

  $tt = fopen( "admin/databases/tietokanta.csv", "a" ) or exit( "Tiedoston avaus ei onnistunut!" );

  foreach( rglob( "*", "*.jpg" ) as $kuva )
  {
    $content = sprintf( "GROUP;%s;\nNAME;1;%s;\nPIC1;%s;\nEND;\n", dirname( $kuva ), basename( $kuva, ".jpg"), $kuva );
    fwrite( $tt, $content );
  }

  fclose($tt);
?>

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta