Toon posts:

Vullen van db en controle routine..

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb nu een db voor mijn ruim 40.000 plaatjes, dit alles werkt ook het invoeren van bestanden/gallery's gaat goed... nu zit ik alleen met het volgende..

Ik ben bezig met een instal script, die scant de directory's en voegt in de db (indien nodig) de gallery name (*tabel*) en files/foto's (*ander tabel*)

Maar nu wil ik het script ook gaan gebruiken voor een update routine, zodat ik gemakkelijk nieuwere foto's kan adden ;)... want nu maak ik gewoon een test db maar wil straks mischien de gehele db updaten en 40.000 files invoeren is nix :D

Dus hoe kan ik dit het beste uitvoeren?

routine scandirs --> dir found?... save dir in variable and scan files, check if gallery/dir exist in db anders maak aan, do een loopje met de array van de files en check eerst of bestanden al bestaan in phototabel + gallery die aan het tabel gekoppeld is (dir). ifnot add file else, check if file should be updated?..

zoiets?...

Verwijderd

Topicstarter
indien mensen graag de code willen zien en mischien willen meehelpen met het ontwerpen... np... just gimme icq/msn call :P

Verwijderd

Nog nooit van de edit knop gehoord?

  • Sn3akz
  • Registratie: November 2000
  • Laatst online: 31-01 20:37
Op zaterdag 19 januari 2002 20:07 schreef GDOG het volgende:
Nog nooit van de edit knop gehoord?
Vandaar die 2100 posts van um ;)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Als je het geheel van dir en bestandsnaam uniek maakt, voorkom je dat 1 foto 2x in je db komt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • HGM
  • Registratie: April 2000
  • Niet online

HGM

Wat is je vraag nu eigenlijk?? Het lijkt verdacht op een 'scriptrequest' ofzo.

Probeer gewoon hoe jij denkt dat t moet, gaat het fout kom dan eens terug :)

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08:26

mulder

ik spuug op het trottoir

Ik heb nu zo'n 5 keer je post gelezen, maar begrijp er geen reet van. Je zegt ik heb een script dat directories langs fietst en dat in een db plaatst, nu wil ik dat script dat directories langs fietst en in een db plaatst.

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Ik wil weten hoe ik dit moet aanpakken..

ik kan dirs uitlezen including files, heightXwidth van foto's etc... dat is niet het probleem maar wil aleen weten hoe ik moet/kan controlleren of items in de db bestaan :)

en jah wederom moet ik bekennen!! MET BLIJDSCHAP Dat ik vaag ben *D vind me meisie ook liev ;)

Verwijderd

Op zaterdag 19 januari 2002 20:31 schreef Sn3akz het volgende:

[..]

Vandaar die 2100 posts van um ;)
Juist en dat is trouwens bij iedere post van hem, binnen de minuut kicken of reageren met alleen een smilie om zen # posts op te krikken >:)

Verwijderd

Topicstarter
Op zondag 20 januari 2002 18:11 schreef GDOG het volgende:

[..]

Juist en dat is trouwens bij iedere post van hem, binnen de minuut kicken of reageren met alleen een smilie om zen # posts op te krikken >:)
>:) ah?... en deze ezel stoot zich netzoals /me aan de zelfde steen ;) onzin past best buiten HK :)

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 08:26

mulder

ik spuug op het trottoir

Op zondag 20 januari 2002 18:09 schreef Xtentic het volgende:
ik kan dirs uitlezen including files, heightXwidth van foto's etc... dat is niet het probleem maar wil aleen weten hoe ik moet/kan controlleren of items in de db bestaan :)
Wat sla je op in de database?
Kan mij voorstellen dan
ID
Name
Path (misschien alleen het relatieve path)
Height
Width
FileSize

Dan kun je toch voordat je toevoegt een query uitvoeren die kijkt er al records zijn met een file op die plek met die parameters?

oogjes open, snaveltjes dicht


  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
Wil je de paden hebben of blobben?

Two advices for network troubleshooting.. learn to draw diagrams in Visio, and THINK IN LAYERS!


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

bedoel je zoiets:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?
function Fill_Dir() {
        global  $Dir_ID,
                $maxindex,
                $Dir_Name;

        $directory=opendir("/var/www/htdocs/$Dir_Name"); 
        while ($entry=readdir($directory)){ 
                $isphp= substr_count($entry, ".php");
                $ishtml= substr_count($entry, ".html");
                $ishta= substr_count($entry, ".htacc");
                $istxt= substr_count($entry, ".txt");
                $isdir = is_dir("/var/www/htdocs/$Dir_Name/$entry");
                if( $isdir==0 &amp;amp;&amp;amp; $isphp == 0 &amp;amp;&amp;amp; $ishtml == 0 &amp;amp;&amp;amp; $ishta == 0 &amp;amp;&amp;amp; $istxt == 0){ 
                        $i++;
                        $array[$i]=$entry;
                } 
        } 
        closedir($directory);
        $maxindex=@count($array);
        IsDebug("Fill_Dir: MaxIndex = $maxindex<BR>\n");
        $NumAdded=0;
        for ($j=1;$j<=$maxindex;$j++){
                $Picture_Name=$array[$j];
                $query="SELECT * FROM Pictures WHERE Directory_ID=\"$Dir_ID\" AND Filename=\"$Picture_Name\"";
                $result = mysql_query ($query)
                        or die ("Query failed: Fill Dir - $query");
                $Total=mysql_num_rows($result);
                If ($Total == 0) {
                        $NumAdded++;
                        $Picture_Size=GetImageSize("/var/www/htdocs/$Dir_Name/$array[$j]");
                        $Picture_Width=$Picture_Size[0];
                        $Picture_Heigth=$Picture_Size[1];
                        $Picture_TimeStamp=filectime("/var/www/htdocs/$Dir_Name/$array[$j]");
                        $Picture_Added_Timestamp=time();
                        $Picture_Date_Added=date("Y-m-d", "$Picture_TimeStamp");
                        IsDebug("Picture_Date_Added: $Picture_Date_Added");
                                                IsDebug("Picture_Date_Added: $Picture_Date_Added");
                        $query  = "INSERT INTO Pictures SET ";
                        $query .= "Directory_ID=\"$Dir_ID\", ";
                        $query .= "Filename=\"$Picture_Name\", ";
                        $query .= "Picture_Width=\"$Picture_Width\", ";
                        $query .= "Picture_Heigth=\"$Picture_Heigth\", ";
                        $query .= "Picture_Stamp=\"$Picture_Stamp\", ";
                        $query .= "Picture_Added_Stamp=\"$Picture_Added_Timestamp\", ";
                        $query .= "Picture_Date_Added=\"$Picture_Date_Added\", ";
                        $query .= "Times_Viewed=\"0\"";
                        $result = mysql_query ($query)
                                or die ("Query failed: Fill_Dir - $query");
                }
        }
        Print("Number Added:$NumAdded");
}
?>

Al een tijd geleden gemaakt en niet (helemaal) geoptimaliseerd :P :D

Verwijderd

Topicstarter
Op zondag 20 januari 2002 19:38 schreef El_Mundo het volgende:

[..]

Wat sla je op in de database?
Kan mij voorstellen dan
ID
Name
Path (misschien alleen het relatieve path)
Height
Width
FileSize

Dan kun je toch voordat je toevoegt een query uitvoeren die kijkt er al records zijn met een file op die plek met die parameters?
ok verdere info! :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE galleryid (
   id int(4) NOT NULL auto_increment,
   adddate timestamp(14),
   sex varchar(1) NOT NULL,
   gallery varchar(75),
   path varchar(75) NOT NULL,
   views int(4) DEFAULT '0' NOT NULL,
   UNIQUE id (id)
);

CREATE TABLE galleryphoto (
   id int(4) NOT NULL auto_increment,
   gid int(4) DEFAULT '0' NOT NULL,
   photo varchar(75),
   photoSize varchar(75),
   photoX int(4) DEFAULT '0' NOT NULL,
   photoY int(4) DEFAULT '0' NOT NULL,
   comment varchar(250) NOT NULL,
   views int(4) DEFAULT '0' NOT NULL,
   UNIQUE id (id)
);

ik heb nu de volgende code bedacht ;)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
// SQL-query:
// INSERT INTO galleryid (id, adddate, gallery, path, sex, views) VALUES ('', '', '100', 'Bla', '', '/female/gallery/bla', 'F', '', '', '', '*', '0') LIMIT 0, 30
// zoek eerst of gallery id al bestaat?
        
if (!galleryfound) { //notfound
    $fileid = $count;
    //$sql = "INSERT INTO galleryid (id, gallery, path, sex) VALUES ('', 'Bla', '/female/gallery/bla', 'F')";
    //mysql_query($sql);
}else{
    $fileid = $sqlID;
}

for ($i = 1; $i <= $dat[count]; $i++) {

// SQL-query:
// INSERT INTO galleryphoto (id, gid, photo, photoSize, photoX, photoY, comment, views) VALUES ('', '12', 'filename.gif', '0000', '1280', '1024', 'nocomment', '0') LIMIT 0, 30
// check if file exist in db
if (!filefound) {  // not found
    // $sql = "INSERT INTO galleryphoto (gid, photo, photoSize, photoX, photoY) VALUES ('12', 'filename.gif', '0000', '1280', '1024')";
    // mysql_query($sql);
}else{
}
?>

Dit heb ik uit mijn hoofd gemaakt de stukjes om te controlleren wil ik nu mee bezig gaan ;)...

Als iemand suggesties heeft om de db beter te maken please let it hear :)
Op zondag 20 januari 2002 20:35 schreef TheRookie het volgende:
bedoel je zoiets:
Al een tijd geleden gemaakt en niet (helemaal) geoptimaliseerd :P :D
Tnx ik heb er weinig aan denk ik maar toch bedankt, ik zal het eens grondig gaan doornemen :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op zondag 20 januari 2002 23:16 schreef Xtentic o.a. zijn db-ontwerp
t-t-t-t *zwaait corrigerend met wijsvinger*
nog steeds je tabelnamen niet aangepast, hm? ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op zondag 20 januari 2002 23:16 schreef Xtentic het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE galleryid (
   id int(4) NOT NULL auto_increment,
   adddate timestamp(14),
   sex varchar(1) NOT NULL,
   gallery varchar(75),
   path varchar(75) NOT NULL,
   views int(4) DEFAULT '0' NOT NULL,
   UNIQUE id (id)
);

CREATE TABLE galleryphoto (
   id int(4) NOT NULL auto_increment,
   gid int(4) DEFAULT '0' NOT NULL,
   photo varchar(75),
   photoSize varchar(75),
   photoX int(4) DEFAULT '0' NOT NULL,
   photoY int(4) DEFAULT '0' NOT NULL,
   comment varchar(250) NOT NULL,
   views int(4) DEFAULT '0' NOT NULL,
   UNIQUE id (id)
);
Waarom is photoSize een varchar, als dit het aantal bytes is kan het ook een integer zijn. Ook het 'views' veld in je gallerij tabel is evt. redundant. Dit kan je ook doen met een SUM en GROUP BY op je 2e tabel. Voor performance kan je ook overwegen het er echter ook in laten.
En net als drm zegt, je namen zijn een beetje dubieus, maargoed zolang wij het maar niet hoeven te veranderen he >:) ;)

En over dat updaten. Ik zou gewoon alle bestanden langsgaan en daarop checken. Dus niet alleen de dirs. Op deze manier kan je later wat makkelijker plaatjes toevoegen (als je dat zou willen). Maar hoe wil je eruit halen of het een vrouw is of een man?

of is dit voor een pr0n site en zijn er alleen maar females :P ;)

Verwijderd

Topicstarter
Op maandag 21 januari 2002 01:19 schreef drm het volgende:

[..]

t-t-t-t *zwaait corrigerend met wijsvinger*
nog steeds je tabelnamen niet aangepast, hm? ;)
Nee :D dis gemakkelijk voor moi :)
Op maandag 21 januari 2002 02:52 schreef Orphix het volgende:

[..]

Waarom is photoSize een varchar, als dit het aantal bytes is kan het ook een integer zijn. Ook het 'views' veld in je gallerij tabel is evt. redundant. Dit kan je ook doen met een SUM en GROUP BY op je 2e tabel. Voor performance kan je ook overwegen het er echter ook in laten.
En net als drm zegt, je namen zijn een beetje dubieus, maargoed zolang wij het maar niet hoeven te veranderen he >:) ;)

En over dat updaten. Ik zou gewoon alle bestanden langsgaan en daarop checken. Dus niet alleen de dirs. Op deze manier kan je later wat makkelijker plaatjes toevoegen (als je dat zou willen). Maar hoe wil je eruit halen of het een vrouw is of een man?

of is dit voor een pr0n site en zijn er alleen maar females :P ;)
:D Nu zie ik ook het foutje van Size ;) das idd lange niet goed ;) en zal vanmiddag als ik weer thuis ben me scrippie weer controlleren en verder experimenteren :)

Orpix may i contact u then :? :D *D en drm, welke tabel namen zouden volgens jou beter dan? :D

Verwijderd

Topicstarter
Ik heb wat vragen

Ik wil checken of de met bv de naam en path bestaat in de db?... zo jah dan wil ik dat het id van die gallery wordt gebruikt voor de files zo niet dat ie het veld aanmaakt de nieuwe id bewaard.

Hoe doe je dat met MySQL? (db connectie is included ;))
PHP:
1
2
3
4
5
6
7
<?
$query  = "SELECT * FROM galleryid WHERE path = '$lastDirStyle' AND gallery = '$lastDir'";
$result = mysql_query($query) or die ("Query niet goed uit kunnen voeren");
$hoogte = mysql_result($result, 0);
echo $hoogte[gallery]; // gallery name
exit();
?>

$lastDir = bv /gallery/female/NameVanDeDir
$LastDirStyle = bv Name Van De Dir

:)

dit werkt jammer genoeg niet, als iemand een oplossing heeft fijn :)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Bekijk eerst eens de
mysql_result functie.

Deze doet namelijk wat anders dan jij verwacht.

Verwijderd

Topicstarter
Op maandag 21 januari 2002 22:57 schreef Orphix het volgende:
Bekijk eerst eens de
mysql_result functie.

Deze doet namelijk wat anders dan jij verwacht.
:D ik heb het gezien, welke moet ik dan hebben?...

mysql_fetch_array
mysql_fetch_field
mysql_fetch_object
mysql_fetch_row

?

/me niet meer vatten :) maar moet nu echt :z anders wordt het niets... Orphix tnx m8t!...

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op maandag 21 januari 2002 23:01 schreef Xtentic het volgende:
mysql_fetch_array
mysql_fetch_field
mysql_fetch_object
mysql_fetch_row
eigenlijk geen van allen :P
ze kunnen allemaal, maar ik gebruik het liefst mysql_fetch_assoc

Verwijderd

Topicstarter
Op maandag 21 januari 2002 23:03 schreef Orphix het volgende:

[..]

eigenlijk geen van allen :P
ze kunnen allemaal, maar ik gebruik het liefst mysql_fetch_assoc
PHP:
1
2
3
4
5
6
7
8
9
<?
$query = "select * from galleryid WHERE path='$lastDir' AND gallery='$lastDirStyle'";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
    echo $row["gallery"];
    echo $row["id"];
}
mysql_free_result($result);
?>

en waar dient die mysql_free_result voor?... (stukje gekopied en alterd from php.net)

/me slaapt :z ;)

Verwijderd

Topicstarter
Vraagje, dat stukje code dat ik overgetyped heb en aangepast, is dat goed?.. (moet zo naar me werk enzo ;))

iemand suggesties? :D

Tnx (ga vanvond weer ff testen).

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Op maandag 21 januari 2002 23:05 schreef Xtentic het volgende:
[..]
en waar dient die mysql_free_result voor?... (stukje gekopied en alterd from php.net)

/me slaapt :z ;)
Probeer mysql_free_result eens te lezen :P
je zat toch al op de site :)

code lijkt zo goed, gebruik zelf de laatste tijd altijd mysql_fetch_object

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

RRX had laatst een benchmark gemaakt voor de verschillende mysql_fetch functies.

moment, ff zoeken...

[topic=380808]
Daar kwamen we er op uit dat je het beste mysql_assoc kunt gebruiken.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Heb ik toch afgelopen week alles van mysql_fetch_row -> mysql_fetch_object om zitten zetten (makkelijker i.v.m. toevoegen van een kolom als je select * doet) |:( :'(

gelukkig scheelt 't maar ms :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

select * moet je ook nooit gebruiken ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Ik heb ooit eens een site opgezet met eaahh, "erotisch getinte"afbeeldingen. Om te voorkomen dat ik dubbele plaatjes had berkende ik eerst de checksum (32bit) van de file.

Op de SQL server een jobje gemaakt die de check op crc doet.

Code voor 32bit crc kun je o.a. vinden op http://www.planetsourcecode.com

Yo!

Jeroen!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Op dinsdag 22 januari 2002 13:34 schreef drm het volgende:
select * moet je ook nooit gebruiken ;)
Wat nou als ik alle kolommen uit een tabel nodig heb ......
dan is "select *" in elk geval minder werk dan 12 kolomnamen uittikken :P


't spreekwoord was toch dat ICT'ers lui zijn ?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

TheRookie:
Wat nou als ik alle kolommen uit een tabel nodig heb ......
dan is "select *" in elk geval minder werk dan 12 kolomnamen uittikken :P

't spreekwoord was toch dat ICT'ers lui zijn ?
jawel, maar als ik jou code (of een collega jouw code) gaat lezen, kan hij tenminste in de query al zien welke velden je gebruikt voor de pagina (of andere toepassing).

Dus alleen voor de leesbaarheid is het al beter.

Daarnaast is het voor de performance dacht ik ook beter om kolomnamen op te geven. Verder is het gewoon ranzig.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Op dinsdag 22 januari 2002 09:00 schreef TheRookie het volgende:

[..]

Probeer mysql_free_result eens te lezen :P
je zat toch al op de site :)

code lijkt zo goed, gebruik zelf de laatste tijd altijd mysql_fetch_object
Hmmz... dus om de 'buffer' leeg te maken als ik het goed begrijp?..

maaruh ik gebruik toch ook * ? waar ga ik nu de fout in dan :P

Verwijderd

Topicstarter
Op dinsdag 22 januari 2002 09:57 schreef drm het volgende:
RRX had laatst een benchmark gemaakt voor de verschillende mysql_fetch functies.

moment, ff zoeken...

[topic=380808]
Daar kwamen we er op uit dat je het beste mysql_assoc kunt gebruiken.
/me moet ff een zegje doen TNX

Dat topic is idd erg handig :)

Verwijderd

Topicstarter
Op dinsdag 22 januari 2002 13:39 schreef Jeroenvw het volgende:
Ik heb ooit eens een site opgezet met eaahh, "erotisch getinte"afbeeldingen. Om te voorkomen dat ik dubbele plaatjes had berkende ik eerst de checksum (32bit) van de file.

Op de SQL server een jobje gemaakt die de check op crc doet.

Code voor 32bit crc kun je o.a. vinden op http://www.planetsourcecode.com

Yo!

Jeroen!
Is idd zeeeeeer handig, maaruh zo goed in PHP ben ik nu ook al weer niet :D ;)

Verwijderd

Topicstarter
Ik vat er nu de sode ju meer van..

wat wil ik?

checken of een item bestaat?... zo jah extract ID in $testID, zo nee maak nieuw tabel aan en save de ID in $testID.

$query = "select * from galleryid WHERE path='$dat[filepath]' AND gallery='$lastDirStyle'";
$result = mysql_query($query);

Dit werkt wel maar hoe moet ik verder :'( ik ben nu de kluts kwijt en dacht dat ik ut vatte maar niet..

en als dit boven genoemnde werkt zit ik met een ander probleem ik moet een gallery koppelen aan de fileid maar dus ook checken of het goed is... dit moet ik dus straks gaan doen met JOIN toch?... (mja dat is later van toepassing)..

Elp :)

Verwijderd

Probeer eerst een goed overzicht te krijgen wat wel en wat niet lukt en vooral wat je precies wilt. En probeer dat (iig voor jezelf) goed te verwoorden, dan los je in 9/10 gevallen zelf je probleem al op.

Verwijderd

Topicstarter
ok... ik ga eens een lijstje maken :) tnx./

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Op dinsdag 22 januari 2002 09:57 schreef drm het volgende:
RRX had laatst een benchmark gemaakt voor de verschillende mysql_fetch functies.

moment, ff zoeken...

[topic=380808]
Daar kwamen we er op uit dat je het beste mysql_assoc kunt gebruiken.
uit: mysql_fetch_object
[..]
Speed-wise, the function is identical to mysql_fetch_array(), and almost as quick as mysql_fetch_row() (the difference is insignificant).
[..]
uit:mysq_fetch_assoc
[..]
An important thing to note is that using mysql_fetch_assoc() is not significantly slower than using mysql_fetch_row(), while it provides a significant added value.
[..]
hier maak ik toch uit op dat fetch_row 't snelste is :?
Pagina: 1