PHP >> XML toevoegen dimensions
ik heb nu een PHP scriptje:
PHP Code:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
header('Content-type: text/xml');
function dirToXml($path)
{
$path = realpath($path);
$doc = new DOMDocument('1.0', 'utf-8');
$categories = $doc->createElement('categories');
$doc->appendChild($categories);
foreach(array_diff(scandir($path), array('..', '.')) as $dirName) {
$dirNode = $doc->createElement('category');
$dirNode->setAttribute('name', $dirName);
$dirPath = $path.DIRECTORY_SEPARATOR.$dirName;
foreach(array_diff(scandir($dirPath), array('..', '.')) as $imageName) {
$imageNode = $doc->createElement('image');
$imageNode->setAttribute('name', $imageName);
$dirNode->appendChild($imageNode);
}
$categories->appendChild($dirNode);
}
return $doc->saveXML();
}
//$tm=new dirToXml();
echo dirToXml('./gallery/');
?>
header('Content-type: text/xml');
function dirToXml($path)
{
$path = realpath($path);
$doc = new DOMDocument('1.0', 'utf-8');
$categories = $doc->createElement('categories');
$doc->appendChild($categories);
foreach(array_diff(scandir($path), array('..', '.')) as $dirName) {
$dirNode = $doc->createElement('category');
$dirNode->setAttribute('name', $dirName);
$dirPath = $path.DIRECTORY_SEPARATOR.$dirName;
foreach(array_diff(scandir($dirPath), array('..', '.')) as $imageName) {
$imageNode = $doc->createElement('image');
$imageNode->setAttribute('name', $imageName);
$dirNode->appendChild($imageNode);
}
$categories->appendChild($dirNode);
}
return $doc->saveXML();
}
//$tm=new dirToXml();
echo dirToXml('./gallery/');
?>
en dat geeft als output:
ActionScript 3 Code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8" ?>
- <categories>
- <category name="Categorie1">
<image name="cat1Pic1.jpg" />
<image name="cat1swf2.swf" />
</category>
- <category name="Categorie2">
<image name="cat2Pic1.jpg" />
<image name="cat2Pic2.jpg" />
<image name="cat2Pic3.jpg" />
<image name="cat2Pic4.jpg" />
</category>
</categories>
- <categories>
- <category name="Categorie1">
<image name="cat1Pic1.jpg" />
<image name="cat1swf2.swf" />
</category>
- <category name="Categorie2">
<image name="cat2Pic1.jpg" />
<image name="cat2Pic2.jpg" />
<image name="cat2Pic3.jpg" />
<image name="cat2Pic4.jpg" />
</category>
</categories>
is er iemand die het voor mij zo kan aanpassen dat de output er als volgt uit gaat zien? (ik snap niets van php ):
ActionScript 3 Code:
Code (php)
1
2
3
4
5
2
3
4
5
<?xml version="1.0" encoding="utf-8" ?>
- <categories>
- <category name="Categorie1">
<image name="cat1Pic1.jpg" width="640" height="480" />
<image name="cat1swf2.swf" width="320" height="320" />
- <categories>
- <category name="Categorie1">
<image name="cat1Pic1.jpg" width="640" height="480" />
<image name="cat1swf2.swf" width="320" height="320" />
enzovoort, dus de breedtte en hoogte van de graphics erbij?
SUPER bedankt alvast
Willem
code tags toe gevoegd[/modedit]
Gewijzigd op 20/09/2010 19:18:04 door Bas IJzelendoorn
Ik bedoel dat de gevonden bestanden worden geopend (zijn allemaal graphics, het is voor een gallery in Flash) en dat dan in de header gekeken wordt hoe groot die graphics zijn en dat dan de 2 atributen (hoogte en breedtte) worden toegevoegd.
vanuit de files zelf dus.
Karl Karl op 20/09/2010 16:17:58:
Shit, wrong topic.
Hoe bedoel je, Karl? heb ik deze vraag op de verkeerde plek gezet?
Is dit een vacature ofzo?
Je zult dus die plaatjes door een of andere image functie moeten halen om de hoogte en breedte uit te kunnen vinden, en dan gebruik maken van die functie die apollo hierboven al vermeld.
wat is "een of andere image functie"....
en daarna hulp bij het erin zetten natuurijk :/
volgend een manual site moet het zo iets zijn:
Code (php)
Gewijzigd op 20/09/2010 16:41:10 door Willem Schulte
Code (php)
Kan ik die inpassen in mijn originele script?
Ja, dat kan je.
Wil je me ook uitlegen hoe ik dat moet doen?
Ik ben ECHT een beginner (of nog niet eens) en heb werkelijk geen idee waar ik moet beginnen...
Probeer eens wat :-).
ik krijg de error Only one top level element is allowed in an XML document
bij deze eerste wankele poging:
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
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
<?php
header('Content-type: text/xml');
function dirToXml($path)
{
$path = realpath($path);
$doc = new DOMDocument('1.0', 'utf-8');
$categories = $doc->createElement('categories');
$doc->appendChild($categories);
foreach(array_diff(scandir($path), array('..', '.')) as $dirName) {
$dirNode = $doc->createElement('category');
$dirNode->setAttribute('name', $dirName);
$dirPath = $path.DIRECTORY_SEPARATOR.$dirName;
foreach(array_diff(scandir($dirPath), array('..', '.')) as $imageName) {
$imageNode = $doc->createElement('image');
$imageNode->setAttribute('name', $imageName);
list ($witdh, $height) = getimagesize($imagename);
$imageNode->setAttribute('width', $width);
$imageNode->setAttribute('height', $height);
$dirNode->appendChild($imageNode);
}
$categories->appendChild($dirNode);
}
return $doc->saveXML();
}
//$tm=new dirToXml();
echo dirToXml('./gallery/');
?>
header('Content-type: text/xml');
function dirToXml($path)
{
$path = realpath($path);
$doc = new DOMDocument('1.0', 'utf-8');
$categories = $doc->createElement('categories');
$doc->appendChild($categories);
foreach(array_diff(scandir($path), array('..', '.')) as $dirName) {
$dirNode = $doc->createElement('category');
$dirNode->setAttribute('name', $dirName);
$dirPath = $path.DIRECTORY_SEPARATOR.$dirName;
foreach(array_diff(scandir($dirPath), array('..', '.')) as $imageName) {
$imageNode = $doc->createElement('image');
$imageNode->setAttribute('name', $imageName);
list ($witdh, $height) = getimagesize($imagename);
$imageNode->setAttribute('width', $width);
$imageNode->setAttribute('height', $height);
$dirNode->appendChild($imageNode);
}
$categories->appendChild($dirNode);
}
return $doc->saveXML();
}
//$tm=new dirToXml();
echo dirToXml('./gallery/');
?>
Maak een root XML element waar je alles in mikt
ik weet niet wat een root XML element is... maar anders graag :)
1 hoofd element, en daar stop je alles in
dat heb ik toch? "categories"?
Wat is de output?
Ik vind het maar lastig om in dit forum antwoorden te krijgen.
Het moet voor een PHP guru echt makkelijk zijn me in de goede richting te sturen, maar misschien is dat het probleem.
Dit zijn te simpele dingen denk ik.
In ieder geval voor de mensen die dezelfde vraag hebben:
hier is het script:
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
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
<?php
header('Content-type: text/xml');
function dirToXml($path)
{
$path = realpath($path);
$doc = new DOMDocument('1.0', 'utf-8');
$categories = $doc->createElement('categories');
$doc->appendChild($categories);
foreach(array_diff(scandir($path), array('..', '.')) as $dirName) {
$dirNode = $doc->createElement('category');
$dirNode->setAttribute('name', $dirName);
$dirPath = $path.DIRECTORY_SEPARATOR.$dirName;
foreach(array_diff(scandir($dirPath), array('..', '.', 'thumbs')) as $imageName) {
list ($width, $height) = getimagesize('gallery'.DIRECTORY_SEPARATOR.$dirName.DIRECTORY_SEPARATOR.$imageName);
$imageNode = $doc->createElement('image');
$imageNode->setAttribute('name', $imageName);
$imageNode->setAttribute('width', $width);
$imageNode->setAttribute('height', $height);
$dirNode->appendChild($imageNode);
}
$categories->appendChild($dirNode);
}
return $doc->saveXML();
}
//$tm=new dirToXml();
echo dirToXml('./gallery/');
?>
header('Content-type: text/xml');
function dirToXml($path)
{
$path = realpath($path);
$doc = new DOMDocument('1.0', 'utf-8');
$categories = $doc->createElement('categories');
$doc->appendChild($categories);
foreach(array_diff(scandir($path), array('..', '.')) as $dirName) {
$dirNode = $doc->createElement('category');
$dirNode->setAttribute('name', $dirName);
$dirPath = $path.DIRECTORY_SEPARATOR.$dirName;
foreach(array_diff(scandir($dirPath), array('..', '.', 'thumbs')) as $imageName) {
list ($width, $height) = getimagesize('gallery'.DIRECTORY_SEPARATOR.$dirName.DIRECTORY_SEPARATOR.$imageName);
$imageNode = $doc->createElement('image');
$imageNode->setAttribute('name', $imageName);
$imageNode->setAttribute('width', $width);
$imageNode->setAttribute('height', $height);
$dirNode->appendChild($imageNode);
}
$categories->appendChild($dirNode);
}
return $doc->saveXML();
}
//$tm=new dirToXml();
echo dirToXml('./gallery/');
?>
Groet,
Willem
Willem Schulte op 22/09/2010 01:26:58:
okee.. ik heb het gevonden.. het lag helemaal niet aan de elements!
Ik vind het maar lastig om in dit forum antwoorden te krijgen.
Het moet voor een PHP guru echt makkelijk zijn me in de goede richting te sturen, maar misschien is dat het probleem.
Dit zijn te simpele dingen denk ik.
[...]
Ik vind het maar lastig om in dit forum antwoorden te krijgen.
Het moet voor een PHP guru echt makkelijk zijn me in de goede richting te sturen, maar misschien is dat het probleem.
Dit zijn te simpele dingen denk ik.
[...]
Dude.. Sterf ofzo
Remember dat iedereen hier vrijwillig zit he eikel. En daar komt bij dat er weinig mensen zijn die zo maar voor de lol jouw kut script gaan uitpluizen op detail gewoon omdat jij het wil.
Er zijn mensen die betere dingen te doen hebben, en dan is een dergelijk kut antwoord van jou niet gewenst. En daar komt dan nog bij dat je niet eens aangeeft wat er nou eigenlijk fout was aan je script.
Doei.
Bedankt voor je tekenende reactie.
Ik snap je frustratie als je een script van 25 regels al uitpluizen vindt.
De vraag was niet voor niets gesteld in het "beginnen met PHP". Ik wist er gewoon niets van, en nog niet echt, maar heb het wel voor elkaar gekregen EN post het hier terug zodat anderen er ook wat aan hebben (eventueel).
voor jouw informatie (dan leer je ook nog wat):
Als je een subdirectory uitleest en er een file in wilt onderzoeken is het handig als je de subdirectory naam dan voor de file zet.
dus
getimagesize($imagename);
wordt dan
getimagesize('gallery'.DIRECTORY_SEPARATOR.$dirName.DIRECTORY_SEPARATOR.$imageName);