Php in XML flash gallery
Ik heb een site en eerst had ik daar zelf een galerij voor gemaakt.
Maar een flash gallerij leek mij mooier. En nu heb ik er een gevonden die ik mooi vind. Hij haalt de informatie uit een xml bestand met deze opbouw:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<category name="Catergorie Naam">
<image>
<date>Datum</date>
<title>Titel</title>
<desc>Iets tekst</desc>
<thumb>thumbnaam</thumb>
<img>Plaatje groot naam</img>
</image>
</category>
<image>
<date>Datum</date>
<title>Titel</title>
<desc>Iets tekst</desc>
<thumb>thumbnaam</thumb>
<img>Plaatje groot naam</img>
</image>
</category>
Hoe krijg ik mijn database velden in een xml document?
Op elk bezoek van de pagina het bestand unlinken (verwijderen) en dan een nieuwe aanmaken? Of krijgen gebruikers die al aan het kijken dan een melding als er een nieuwe gebruiker op de galerij komt?
Ik heb deze database opbouw:
Tabel: foto
veld: naam
veld: album
Tabel: album
veld: naam
Vraag simpel geformuleerd: Hoe krijg ik mijn database waarden in het xml document?
Gewijzigd op 01/01/1970 01:00:00 door Bas Visscher
zie link:
http://www.developerfusion.com/code/3944/how-to-create-xml-files/
gewoon in plaats van standaard waardes je database waardes erin gooien.
Maar betekent dat, dat ik elke keer een nieuw xml bestand moet maken aangezien er nieuwe foto's worden toegevoegd.
En dat ik dan het oude bestand eerst moet verwijderen?
op dezelfde manier als dat je hem aanmaakt kan je toevoegen...
alleen dan moet je je xml eerst openen met aanpasmogelijkheid.
Hieronder de code, hij stopt bij 1 keer schrijven in de loop of waar?
Als ik zeg maar bij functie AlbMake(); in de while loop een 1 echo geeft hij die wel vaker weer dat zou ook moeten, omdat er meer in de database staat. maar waarom schrijft hij gewoon niet meer dan maar 1 album?
Code (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
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
<?php
MaaknewAlb();
function MaaknewAlb(){
include('../db/connectie.php');
$queryalb = "SELECT album FROM album WHERE album != 'voorpagina' ";
$albuit = mysql_query($queryalb)or die(mysql_error()."Fout bij aanmaken album.");
while($alb = mysql_fetch_assoc($albuit)){
AlbMake($alb['album']);
}
}
function AlbMake($alb){
include('../db/connectie.php');
$query = "SELECT * FROM foto WHERE album = '".$alb."'";
$xmldoc= "gallery.xml";
$fp=fopen($xmldoc,'w+');
fwrite($fp,"<?xml version=1.0 ?>\n");
$foto = mysql_query($query)or die(mysql_error());
fwrite($fp,"<category name=\"".$alb."\" >\n");
while($fot = mysql_fetch_assoc($foto)){
fwrite($fp,"<image>\n");
fwrite($fp,"<date>2009</date>\n");
fwrite($fp, "<title></title>\n");
fwrite($fp,"<desc>".$fot['beschrijving']."</desc>\n");
fwrite($fp, "<thumb>thumb_".$fot['naam']."</thumb>\n");
fwrite($fp, "<img>".$fot['naam']."</img>\n");
fwrite($fp, "</image>\n");
}
fwrite($fp,"</category>\n");
fclose($fp);
}
?>
MaaknewAlb();
function MaaknewAlb(){
include('../db/connectie.php');
$queryalb = "SELECT album FROM album WHERE album != 'voorpagina' ";
$albuit = mysql_query($queryalb)or die(mysql_error()."Fout bij aanmaken album.");
while($alb = mysql_fetch_assoc($albuit)){
AlbMake($alb['album']);
}
}
function AlbMake($alb){
include('../db/connectie.php');
$query = "SELECT * FROM foto WHERE album = '".$alb."'";
$xmldoc= "gallery.xml";
$fp=fopen($xmldoc,'w+');
fwrite($fp,"<?xml version=1.0 ?>\n");
$foto = mysql_query($query)or die(mysql_error());
fwrite($fp,"<category name=\"".$alb."\" >\n");
while($fot = mysql_fetch_assoc($foto)){
fwrite($fp,"<image>\n");
fwrite($fp,"<date>2009</date>\n");
fwrite($fp, "<title></title>\n");
fwrite($fp,"<desc>".$fot['beschrijving']."</desc>\n");
fwrite($fp, "<thumb>thumb_".$fot['naam']."</thumb>\n");
fwrite($fp, "<img>".$fot['naam']."</img>\n");
fwrite($fp, "</image>\n");
}
fwrite($fp,"</category>\n");
fclose($fp);
}
?>
Output in gallery.xml:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?xml version=1.0 ?>
<category name="portretten" >
<image>
<date>2009</date>
<title></title>
<desc></desc>
<thumb>thumb_7up_index.jpg</thumb>
<img>7up_index.jpg</img>
</image>
</category>
<category name="portretten" >
<image>
<date>2009</date>
<title></title>
<desc></desc>
<thumb>thumb_7up_index.jpg</thumb>
<img>7up_index.jpg</img>
</image>
</category>
Gewijzigd op 01/01/1970 01:00:00 door Bas Visscher
heb daar niet zozeer een concreet antwoord op gegeven...
Gewijzigd op 01/01/1970 01:00:00 door koen
Of kan je een functie niet in een loop zetten?
ik kan zo geen problemen in je script zien. Of er moet natuurlijk maar 1 waarde opgehaald worden? mysql_num_row?
Het ligt aan de +w in de write functie.
Maar hoe krijg ik het voor elkaar dat hij er weer achter schrijft.
Gewijzigd op 01/01/1970 01:00:00 door Bas Visscher
Quote:
Writing at the end of a file
the mode "a+" automatically places the file pointer at the end of the file so we don't have to do anything extra in this case.
the mode "a+" automatically places the file pointer at the end of the file so we don't have to do anything extra in this case.
edit:
de site erbij:
http://www.php-learn-it.com/php_files/php_file_write.html
Gewijzigd op 01/01/1970 01:00:00 door koen
Bedankt iedereen!
oplossing:
Code (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
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
<?php
MaaknewAlb();
function MaaknewAlb(){
include('../../db/connectie.php');
$queryalb = "SELECT album FROM album WHERE album != 'voorpagina' ";
$albuit = mysql_query($queryalb)or die(mysql_error()."Fout bij aanmaken album.");
$i=0;
unlink("gallery.xml");
while($alb = mysql_fetch_assoc($albuit)){
AlbMake($alb['album'], $i);
$i++;
}
}
function AlbMake($alb, $aantal){
include('../../db/connectie.php');
$query = "SELECT * FROM foto WHERE album = '".$alb."'";
$xmldoc= "gallery.xml";
if($aantal > 0){
$fp=fopen($xmldoc,'a+');
}
if($aantal < 1){
$fp=fopen($xmldoc,'w+');
fwrite($fp, "<gallery title=\"Henriette's Gallery\" thumbDir=\"../../uploader/thumbs/\" imageDir=\"../../uploader/images/\" random=\"true\">\n");
}
$foto = mysql_query($query)or die(mysql_error());
fwrite($fp,"<category name=\"".$alb."\" >\n");
while($fot = mysql_fetch_assoc($foto)){
fwrite($fp,"<image>\n");
fwrite($fp,"<date>2009</date>\n");
fwrite($fp, "<title></title>\n");
fwrite($fp,"<desc>".$fot['beschrijving']."</desc>\n");
fwrite($fp, "<thumb>thumb_".$fot['naam']."</thumb>\n");
fwrite($fp, "<img>".$fot['naam']."</img>\n");
fwrite($fp, "</image>\n");
}
fwrite($fp,"</category>\n");
fclose($fp);
}
?>
MaaknewAlb();
function MaaknewAlb(){
include('../../db/connectie.php');
$queryalb = "SELECT album FROM album WHERE album != 'voorpagina' ";
$albuit = mysql_query($queryalb)or die(mysql_error()."Fout bij aanmaken album.");
$i=0;
unlink("gallery.xml");
while($alb = mysql_fetch_assoc($albuit)){
AlbMake($alb['album'], $i);
$i++;
}
}
function AlbMake($alb, $aantal){
include('../../db/connectie.php');
$query = "SELECT * FROM foto WHERE album = '".$alb."'";
$xmldoc= "gallery.xml";
if($aantal > 0){
$fp=fopen($xmldoc,'a+');
}
if($aantal < 1){
$fp=fopen($xmldoc,'w+');
fwrite($fp, "<gallery title=\"Henriette's Gallery\" thumbDir=\"../../uploader/thumbs/\" imageDir=\"../../uploader/images/\" random=\"true\">\n");
}
$foto = mysql_query($query)or die(mysql_error());
fwrite($fp,"<category name=\"".$alb."\" >\n");
while($fot = mysql_fetch_assoc($foto)){
fwrite($fp,"<image>\n");
fwrite($fp,"<date>2009</date>\n");
fwrite($fp, "<title></title>\n");
fwrite($fp,"<desc>".$fot['beschrijving']."</desc>\n");
fwrite($fp, "<thumb>thumb_".$fot['naam']."</thumb>\n");
fwrite($fp, "<img>".$fot['naam']."</img>\n");
fwrite($fp, "</image>\n");
}
fwrite($fp,"</category>\n");
fclose($fp);
}
?>
Gewoon een content-type header boven aan je php bestand zetten. En dan je php-pagina openen in flash.
Of gaat dat niet in flash?