php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > XML
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


XML Hier passt alles rein, was das Thema XML (XSLT, JSON etc...) betrifft, auch in Verbindung mit PHP

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-01-2006, 14:58
digo
 Newbie
Links : Onlinestatus : digo ist offline
Registriert seit: Jan 2006
Ort: Germany
Beiträge: 3
digo ist zur Zeit noch ein unbeschriebenes Blatt
Question dynamische Slideshow mit php & xml

Folgendes problem habe ich:
Ich habe mir ein php script gebastelt welches mir die verzeichnisstrucktur ab einer betimmten ebene ausließt und daraus eine xml-datei erzeugt seltsamer weise funzt das mit dem ersten ordner problemlos doch ab dem zweiten tauchen mit einem mal die bildeinträge dreimal auf siehe beispiel:

images.xml
[list=1]
<?xml version="1.0" encoding="UTF-8"?>
<gallery>
<album id="website1.com" title="website1.com" lgPath="./ssp/gallery/website1.com/" description="Promotingpics
of www.website1.com">
<img src="1.jpg" link="./ssp/gallery/website1.com/1.html" caption="Please visit: www.website1.com" />
<img src="2.jpg" link="./ssp/gallery/website1.com/2.html" caption="Please visit: www.website1.com" />
<img src="3.jpg" link="./ssp/gallery/website1.com/3.html" caption="Please visit: www.website1.com" />
</album>
<album id="website2.com" title="website2.com" lgPath="./ssp/gallery/website2.com/" description="Promotingpics
of www.website2.com">
<img src="1.jpg" link="./ssp/gallery/website2.com/1.html" caption="Please visit: www.website2.com" />
<img src="2.jpg" link="./ssp/gallery/website2.com/2.html" caption="Please visit: www.website2.com" />
<img src="3.jpg" link="./ssp/gallery/website2.com/3.html" caption="Please visit: www.website2.com" />
<img src="1.jpg" link="./ssp/gallery/website2.com/1.html" caption="Please visit: www.website2.com" />
<img src="2.jpg" link="./ssp/gallery/website2.com/2.html" caption="Please visit: www.website2.com" />
<img src="3.jpg" link="./ssp/gallery/website2.com/3.html" caption="Please visit: www.website2.com" />
<img src="1.jpg" link="./ssp/gallery/website2.com/1.html" caption="Please visit: www.website2.com" />
<img src="2.jpg" link="./ssp/gallery/website2.com/2.html" caption="Please visit: www.website2.com" />
<img src="3.jpg" link="./ssp/gallery/website2.com/3.html" caption="Please visit: www.website2.com" />
</album>
</gallery> [/list=1]


das ist schonmal das erste prob ich weiß nicht woran das liegen könnte ...
und das zweite prob die pics sollen beim draufklicken in vergrößerter form dargestellt werden alles kein prob nur möchte ic[/code]h nicht jedesmal die htmlseiten per hand erzeugen sondern das am besten ebenfalls vom php-script machen lassen.

Achso hier erstmal das php-script von mir was so leicht buggi ist

make.php



PHP-Code:
<?php 
//File where all album folders and files are listen 
$fn="images.xml"
$fp=fopen($fn,"w"); 

//Directory where all album folders are located 
$albums_dir './ssp/gallery/'

//Get directories for photo albums 
$d dir($_SERVER['DOCUMENT_ROOT'].$albums_dir); 
while (
false !== ($entry $d->read())) { 
   if(
is_dir($d->path.'/'.$entry) && $entry != '.' && $entry != '..') { 
      
$albums[] = $entry
   } 

$d->close(); 

//Send content type as text/xml so the browser knows it's an xml file 
header('Content-type: text/xml'); 

//Generate xml data 
fwrite($fp,'<?xml version="1.0" encoding="utf-8"?>'); 
fclose($fp); 
$fp=fopen($fn,"a"); 
fwrite($fp,'<gallery>'); 
for(
$i 0$i sizeof($albums); $i++) { 
   
$album_title ucwords(eregi_replace('_',' ',$albums[$i])); //Remove underscores and capitalize the words in the album directory 
   
fwrite($fp,'  <album title="'.$album_title.'" description="" lgPath=".'.$albums_dir.''.$albums[$i].'/">'); 
    
   
// Load all photos for this album into an array, then print them out 
   
$album_photos_dir $_SERVER['DOCUMENT_ROOT'].$albums_dir.'/'.$albums[$i].'';  
   
$dh  opendir($album_photos_dir); 
   while (
false !== ($filename readdir($dh))) { 
      if (
eregi("jpg",$filename)) { 
         
$album_photos[] = $filename
      } 
   } 
   for(
$j 0$j sizeof($album_photos); $j++) { 
      
fwrite($fp,'    <img src="'.$album_photos[$j].'" caption="Please visit: [url]www.[/url]'.$albums[$i].'" link="" />'); 
   } 
   
fwrite($fp,'  </album>'); 

fwrite($fp,'</gallery>'); 
fclose($fp); 

?>
was mache ich nur falsch???
Mit Zitat antworten
  #2 (permalink)  
Alt 01-02-2006, 23:23
digo
 Newbie
Links : Onlinestatus : digo ist offline
Registriert seit: Jan 2006
Ort: Germany
Beiträge: 3
digo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also ich habe mich nochmal rangesetzt und alles "umstrukturiert"
nur leider scheint das problem in der zweiten for schleife zu hängen wie es
mir scheint nur sehe ich dort keinen fehler ????

hier nochmal das script:

PHP-Code:
<?php
//Directory where all album folders are located
$albums_dir '/ssp/gallery/'
//XML-File
$xmlFile 'images.xml';
$xmlPath './';

//Get directories for photo albums

$d dir($_SERVER['DOCUMENT_ROOT'].$albums_dir);

while (
false !== ($entry $d->read())) {

   if(
is_dir($d->path.'/'.$entry) && $entry != '.' && $entry != '..') {
        
$albums[] = $entry;
    }
}
$d->close();


//Send content type as text/xml so the browser knows it's an xml file

header('Content-type: text/xml'); 

// start xml output variable
    
$output .= '<?xml version="1.0"?>';
    
$output .= '<gallery>';
// Prevent PHP from timing out on large folders
    
set_time_limit(0);

for(
$i 0$i sizeof($albums); $i++) {

//Remove underscores and capitalize the words in the album directory
    
$album_title ucwords(eregi_replace('_',' ',$albums[$i]));
    
$output .= '<album title="'.$album_title.'" description="" 
lgPath="'
.$albums_dir.''.$albums[$i].'/">';
    
// Load all photos for this album into an array, then print them out
    
$album_photos_dir $_SERVER['DOCUMENT_ROOT'].$albums_dir.'/'.$albums[$i].'';  
    
$dh  opendir($album_photos_dir);
    while (
false != ($filename readdir($dh))) {
        if (
eregi("jpg",$filename)) {
            
$album_photos[] = $filename;
        }
    }
    for(
$j 0$j sizeof($album_photos); $j++) {
        
$output .= '<img src="'.$album_photos[$j].'" caption="Please visit: [url]www.[/url]'.$albums[$i].'" link="'.$albums_dir.''.$albums
[$i].'/'.$album_photos[$j].'" />';
    }
    
$output .= '</album>';
}

$output .= '</gallery>';

        
// Attempt to open the xml file for writing (will be 
created if it doesn't exist)

        if(!$xml = @fopen($xmlPath."/".$xmlFile, "w")) {
              echo '
<p>Error'.$xmlPath."/".$xmlFile.' file 
could not be opened 
for writing. <br />';

            echo '
Check to be sure either the 
permissions 
for the folder are set to 777 or, if the xml<br />';

            echo '
file already existsthat it is set to 
777.
</p>';
        } else {
        
            // Write the xml file
            if (fwrite($xml, $output) === FALSE) {
                echo '
<p>ErrorUnable to write to
 file
.</p>';
            } else {
              
                fclose($xml);
                echo '
<p><strong>Your XML file has been created successfully.</strong></p>;
            }
        
        }
?>
das problem mit dem automatischen erstellen der html's für die ansicht des
bildes allein hatte ich mir wie folgt vorgestellt:

PHP-Code:
...
...
...
$htmlfile "$filename.html";
$htmlcontent '<html><head></head><body><center>
<a href="http://www."'
.$albums[$i].'><img src="1.jpg" alt=""
 border="0"></a></center></body></html>'
;

$fp=fopen($albums_dir."".$albums[$i]."/".$htmlfile,"w");
fwrite($htmlfile,$htmlcontent);
fclose($htmlfile);
...
...
... 
geht aber auch nicht... muss ich noch auf etwas bestimmtes achten wenn
ich die variable $htmlcontent mit der zukünftigen htmldatei füttere???
weil wegen den variablen vom script den anführungszeichen und so
die fehlermeldung lautet:

Warning: fopen(/ssp/gallery/ordner/10.jpg.html)
[function.fopen]: failed to open stream: No such file or directory in C:\wamp\www\ssp\make.php on line 41

Warning: fwrite(): supplied argument is not a valid stream resource in C:\wamp\www\ssp\make.php on line 42








achso und noch etwas an gewisse leute hier ....
meckert nicht immer gleich los wenn die postings horrizontal zu lang
geraten. dafür kann doch keiner was in anderen foren wird automatisch
umgebrochen ...
wir machen das doch nicht um euch zu ärgern sondern sind für jede hilfe
dankbar ...
Mit Zitat antworten
  #3 (permalink)  
Alt 01-02-2006, 23:25
digo
 Newbie
Links : Onlinestatus : digo ist offline
Registriert seit: Jan 2006
Ort: Germany
Beiträge: 3
digo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also wens intressiert ... bin selber drauf gekommen was der fehler war. funzt nun alles wie es soll. hier das script für die die vielleicht noch am grübeln sind... (und nicht wegen zeilnumbrüche mekern, nehmts wies kommt oder nicht ;-) )

PHP-Code:
<?php
//Directory where all album folders are located
$albums_dir '/ssp/gallery/'
//XML-File
$xmlFile 'images.xml';
$xmlPath '../';

//Get directories for photo albums
$d dir($_SERVER['DOCUMENT_ROOT'].$albums_dir);
while (
false !== ($entry $d->read())) {
   if(
is_dir($d->path.'/'.$entry) && $entry != '.' && $entry != '..') {
        
$albums[] = $entry;
    }
}
$d->close();

//Send content type as text/xml so the browser knows it's an xml file
header('Content-type: text/xml'); 

// start xml output variable
    
$output .= '<?xml version="1.0"?>';
    
$output .= '<gallery>';
// Prevent PHP from timing out on large folders
    
set_time_limit(0);

for(
$i 0$i sizeof($albums); $i++) {
//Remove underscores and capitalize the words in the album directory
    
$album_title ucwords(eregi_replace('_',' ',$albums[$i]));
    
$output .= '<album title="'.$album_title.'" description="" lgPath="'.$albums_dir.''.$albums[$i].'/">';
// Load all photos for this album into an array, then print them out
    
$album_photos_dir $_SERVER['DOCUMENT_ROOT'].$albums_dir.'/'.$albums[$i].'';  
    
$dh  opendir($album_photos_dir);
    while (
false != ($filename readdir($dh))) {
       
        if (
eregi("jpg",$filename)) {
        
$output .= '<img src="'.$filename.'" caption="Please visit: [url]www.[/url]'.$albums[$i].'" link="'.$albums_dir.''.$albums[$i].'/'.$filename.'" />';
        }
    }


    
$output .= '</album>';
}

$output .= '</gallery>';

        
// Attempt to open the xml file for writing (will be created if it doesn't exist)
        
if(!$xml = @fopen($xmlPath."/".$xmlFile"w")) {
              echo 
'<p>Error: '.$xmlPath."/".$xmlFile.' file could not be opened for writing. <br />';
            echo 
'Check to be sure either the permissions for the folder are set to 777 or, if the xml<br />';
            echo 
'file already exists, that it is set to 777.</p>';
        } else {
        
            
// Write the xml file
            
if (fwrite($xml$output) === FALSE) {
                echo 
'<p>Error: Unable to write to file.</p>';
            } else {
              
                
fclose($xml);
            }
        
        }
?>


PS: wenn jemand vorschläge zur verbesserung des Codes hat (sauberere schreibweise) hab ich gern ein offenes ohr..

Geändert von digo (02-02-2006 um 03:51 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 25-02-2006, 12:11
JackHambabo
 Newbie
Links : Onlinestatus : JackHambabo ist offline
Registriert seit: Feb 2006
Beiträge: 1
JackHambabo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo digo,

danke für das Skript. Könntest Du mir trotzdem eine Frage beantworten?

Wofür ist das
//Send content type as text/xml so the browser knows it's an xml file
header('Content-type: text/xml');
?

Ich verstehe Deine Datei so, dass die Ausgabe an den Browser im Falle eines Fehlers html enthält und leer ist, falls alles funktioniert. Warum bekommt sie dann keinen html header?

Den xml header für $output welches Du später in ein weitere Datei schreibst, schreibst Du doch selbst:
$output .= '<?xml version="1.0"?>';


Danke,
Jack
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Newsmanager

Der Newsmanager ist ein Newssystem und Newsletter in einem. Mit WYSIWYG Editor und E-Mail import aus einer bestehenden MySql Datenbank sowie dynamische Kategorien / Themen Filter.

11.09.2019 Stephan_1972 | Kategorie: PHP/ News
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

11.09.2019 Stephan_1972 | Kategorie: PHP/ Webservice
ContentLion - Open Source CMS ansehen ContentLion - Open Source CMS

ContentLion ist ein in PHP geschriebenes CMS, bei dem man Seiten, Einstellungen usw. in Ordnern lagern kann

22.08.2019 stevieswebsite2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:50 Uhr.