+ Antworten
Ergebnis 1 bis 8 von 8

Thema: if/elseif - PHP Abfrage ob ein Dateiname in einem Verzeichnis vorhanden ist

  1. #1
    War schon öfter hier Avatar von Operator
    Registriert seit
    21.12.2005
    Ort
    Darmstadt
    Beiträge
    153
    Bedankte sich
    41
    Erhielt 3 Danksagungen
    in 2 Beiträgen

    Standard if/elseif - PHP Abfrage ob ein Dateiname in einem Verzeichnis vorhanden ist

    Hi!

    Kann mir bitte jemand helfen folgenden Code zu realisieren:

    PHP-Code:
    <?php
    if
    (
    In Verzeichnis <?php echo $this->baseurl ?>/templates/<?php echo $this->template;?>/images/
    ein Bild vorhanden ist, dessen Name
    prefix1_<? $articleID $_GET['articleID'];echo $articleID?>.jpg
    lautet){
    echo '.$articleID.';
    }
    elseif{
    (In Verzeichnis <?php echo $this->baseurl ?>/templates/<?php echo $this->template;?>/images/
    ein Bild vorhanden ist, dessen Name
    prefix2_<? $Itemid $_GET['Itemid'];echo $Itemid?>.jpg
    lautet){
    echo '.$Itemid.';
    endif;
    ?>
    Es geht primär also darum, im oben angegebenen Bilderordner
    <?php echo $this->baseurl ?>/templates/<?php echo $this->template;?>/images/
    nachzusehen, ob eine bestimmte Datei (Bild) existiert. Wenn ja, echo. Wenn nein, springe zum nächsten elseif.

    Der Name des Bildes, nach dem abgefragt/gesucht wird, wird "dynamisch" aus vorher ausgelesenen IDs und festem Prä- und Suffix erzeugt und sieht dann mit der Itemid als Beispiel im Quellcode so aus:
    PHP-Code:
    beitrag_<? $Itemid $_GET['Itemid'];echo $Itemid?>.jpg
    oder so:
    PHP-Code:
    beitrag_<? echo '.$Itemid.';?>.jpg
    je nach dem, was besser/schneller/überhaupt funktioniert.

    Ich bin des PHP leider überhaupt nicht mächtig und stückel mich gerade so durch. Es wäre wirklich cool, wenn mir hier jemand helfen würde.

    Gruß,
    Rob
    Geändert von Operator (15.12.2010 um 20:56 Uhr) Grund: &quot

  2. #2
    Hat hier eine Zweitwohnung Avatar von Some1new
    Registriert seit
    18.05.2005
    Ort
    Buest nich unt 'n Norden is dat schwer to verstohn.
    Beiträge
    1.424
    Bedankte sich
    259
    Erhielt 301 Danksagungen
    in 250 Beiträgen

    Standard

    Obwohl mir nicht ganz klar ist, wie Du ohne Ahnung von PHP weiterkommen willst, dies hast Du zumindest in diesem Posting und anderen mitgeteilt, hier ein Ansatz.
    Ohne Hilfe oder intensiver Beschäftigung mit dem framework und php wirst Du nicht sehr weit kommen, befürchte ich.

    Viel Glück und Erfolg:

    PHP-Code:
    if ( defined'JPATH_SITE' ) ) {
       if ( ! 
    file_existsJPATH_SITE '/templates/' $this->template '/images/prefix1_' $articleID '.jpg' ) ) {
        echo 
    "Ist nicht vorhanden";
     
       } else {
         echo 
    "Ist vorhanden";
       }

    Dies soll Dir nur einen Denkanstoss geben.
    Die Übergabe der Variablen muss natürlich noch korrekt gehandhabt werden.

    Gruß
    Some1new
    Geändert von Some1new (15.12.2010 um 23:00 Uhr)
    SUCHEN ist keine Stadt in Deutschland, sondern eine TOLLE Funktion in diesem Forum.
    Fahren Sie mich irgendwohin, ich werde überall gebraucht, denn "Es iss ja, wie´s iss!".
    Woher kommt mein Nickname? - some1new by escobar

  3. Erhielt Danksagungen von:


  4. #3
    War schon öfter hier Avatar von Operator
    Registriert seit
    21.12.2005
    Ort
    Darmstadt
    Beiträge
    153
    Bedankte sich
    41
    Erhielt 3 Danksagungen
    in 2 Beiträgen

    Standard

    Zitat Zitat von Some1new Beitrag anzeigen
    Ohne Hilfe oder intensiver Beschäftigung mit dem framework und php wirst Du nicht sehr weit kommen, befürchte ich.

    Viel Glück und Erfolg:
    Danke, werde ich brauchen! Ich lese Referenzen, suche Beispiel-Code im Netz, zerstückele - versuche zu kombinieren, hacke mich durch trial&error - fluche(!), nerve Experten hier im Forum. Das volle Programm eben...


    Habe mich, für meine Verhältnisse, die letzten zwei Tage intensiv mit PHP und dem "Framework" auseinandergesetzt. Ohne Eure Hilfe wäre ich aber garantiert nicht so weit gekommen, wie es aktuell der Fall ist. Also noch mal: DANKE!

    Ich habe mir jetzt also folgenden Frankenstein gebastelt:
    <?php
    if ( defined( 'JPATH_SITE' ) ) {
    if ( ! file_exists( JPATH_SITE . '/templates/'.$this->template.'/images/prefix1_'.$articleID.'.jpg' ) ) {
    } else {
    echo 'Beitrags ID (wenn Bild existiert)'.$articleID.'<br />';
    }
    if ( ! file_exists( JPATH_SITE . '/templates/'.$this->template.'/images/prefix2_'.$Itemid.'.jpg' ) ) {
    } else {
    echo 'Item ID (wenn Bild existiert)'.$ItemID.'<br />';
    }
    if ( ! file_exists( JPATH_SITE . '/templates/'.$this->template.'/images/prefix3_'.$categoryID.'.jpg' ) ) {
    } else {
    echo 'Kategorie ID (wenn Bild existiert)'.$categoryID.'<br />';
    }
    }

    if ( JRequest::getVar('layout') == 'blog')
    echo 'Kategorie ID (layout blog):'.$categoryID.'<br />';

    if ( JRequest::getVar('view') == 'article')
    echo 'Kategorie ID (view article):'.$ID->catid.'<br />';

    if ( JRequest::getVar('view') == 'category')
    echo 'Kategorie ID (view category):'.$categoryID.'<br />';

    if ( JRequest::getVar('view') == 'section')
    echo 'Bereich ID (view section):'.$sectionID.'<br />';

    else
    echo "Alternative ID:";
    echo "0";

    ?>
    Damit kann ich mir jede Menge irre IDs ausgeben lassen!!! Ich brauche für mein kleines Projekt aber nur eine ID, deshalb müsste ich den Code auch in einer elseif -Variante vorliegen haben. Also so, dass die ifs und elses der Reihe nach abgearbeitet werden.
    1. Gibt eine if Abfrage keinen Wert aus -> springe zur nächsten -> mache spätestens nach dem letzten Echo halt (echo "0";endif.
    2. Bleibe bei der Abfrage stehen, die zuerst einen Wert ausspuckt (müsste ja Standard bei elseif sein).

    Habe mir dazu diese Seiten angesehen, aber scheinbar doch ein Brett vor'm Kopf.
    http://php.net/manual/de/control-structures.elseif.php
    http://www.php-kurs.com/if-else-bedingungen.htm
    http://www.vis.uni-stuttgart.de/ger/...rs/node18.html

    Würde mich ja wirklich gerne in das Thema einarbeiten, aber ein (1) mal müsste ich so einen Code schon mal als (Joomla-)Beispiel gesehen haben. Könnte mir bitte jemand aus dem oben stehenden Code eine "elseif" oder meinetwegen "else if" Variante schmieden?

    Vielen Dank & Gruß,
    Rob

  5. #4
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - Südamerika
    Beiträge
    1.689
    Bedankte sich
    74
    Erhielt 517 Danksagungen
    in 397 Beiträgen

    Standard

    PHP-Code:
    // Das ist Unsinn - was ist der Zweck ??:
    if ( defined'JPATH_SITE' ) ) { 
    PHP-Code:
    $basePath JPATH_SITE '/templates/'.$this->template.'/images';

    if (
    file_exists($basePath.'/prefix1_'.$articleID.'.jpg' ) ) {
         echo 
    'Beitrags ID (wenn Bild existiert)'.$articleID.'<br />';
    }
    else if (
    file_exists($basePath.'/prefix2_'.$Itemid.'.jpg' ) ) {
         echo 
    'Item ID (wenn Bild existiert)'.$ItemID.'<br />';
    }
    else if (
    file_exists($basePath.'/prefix3_'.$categoryID.'.jpg' ) ) {
         echo 
    'Kategorie ID (wenn Bild existiert)'.$categoryID.'<br />';

    else {
         echo 
    'Whatever..<br />';


    $layout JRequest::getVar('layout');

    switch(
    $layout)
    {
       case 
    'blog' :
          echo 
    'Kategorie ID (layout blog):'.$categoryID.'<br />';
       break;

       case 
    'article' :
         echo 
    'Kategorie ID (view article):'.$ID->catid.'<br />';
       break;

       case 
    'category' :
         echo 
    'Kategorie ID (view category):'.$categoryID.'<br />';
       break;

       case 
    'section' :
         echo 
    'Bereich ID (view section):'.$sectionID.'<br />';
       break;

       default:    
         echo 
    "Alternative ID:";
         echo 
    "0";
    }
    //switch 
    Da hast Du jetzt ein if und ein switch. Obwohl ich ehrlich gesagt Dein Problem noch nicht verstehe

    P.S.: Code bitte lesbar formatieren und für PHP das PHP-Knöpfchen benutzen - dann wird's bunter
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation Help testing: EasyCreator Noch Fragen ? Forum.Joomla-Nafu.de

  6. Erhielt Danksagungen von:


  7. #5
    Hat hier eine Zweitwohnung Avatar von Some1new
    Registriert seit
    18.05.2005
    Ort
    Buest nich unt 'n Norden is dat schwer to verstohn.
    Beiträge
    1.424
    Bedankte sich
    259
    Erhielt 301 Danksagungen
    in 250 Beiträgen

    Standard

    Zitat Zitat von elkuku Beitrag anzeigen
    PHP-Code:
    // Das ist Unsinn - was ist der Zweck ??:
    if ( defined'JPATH_SITE' ) ) { 
    Stimmt, ist in diesem Fall Unsinn. Ich hatte es als Teilstück aus einem geschriebenen Modul genommen, welches auch noch unter J1.0 laufen sollte. Da war dieses Teil der Abfrageweiche vorhanden.


    Evtl. noch systemunabhängiger den Slash in "DS" wandeln?
    PHP-Code:

    $basePath 
    JPATH_SITE DS 'templates' DS $this->templateDS 'images' DS;
    if (
    file_exists($basePath.'prefix1_'.$articleID.'.jpg' ) ) {
         echo 
    'Beitrags ID (wenn Bild existiert)'.$articleID.'<br />';
    } else if (
    file_exists($basePath.'prefix2_'.$Itemid.'.jpg' ) ) {
         echo 
    'Item ID (wenn Bild existiert)'.$ItemID.'<br />';
    } else if (
    file_exists($basePath.'prefix3_'.$categoryID.'.jpg' ) ) {
         echo 
    'Kategorie ID (wenn Bild existiert)'.$categoryID.'<br />';
    } else {
         echo 
    'Whatever..<br />';


    $layout JRequest::getVar('layout');
    switch(
    $layout) {
       case 
    'blog' :
          echo 
    'Kategorie ID (layout blog):'.$categoryID.'<br />';
       break;
       case 
    'article' :
         echo 
    'Kategorie ID (view article):'.$ID->catid.'<br />';
       break;
       case 
    'category' :
         echo 
    'Kategorie ID (view category):'.$categoryID.'<br />';
       break;
       case 
    'section' :
         echo 
    'Bereich ID (view section):'.$sectionID.'<br />';
       break;
       default:    
         echo 
    "Alternative ID:";
         echo 
    "0";
    }
    //switch 
    Gruß
    Some1new
    Geändert von Some1new (18.12.2010 um 07:54 Uhr)
    SUCHEN ist keine Stadt in Deutschland, sondern eine TOLLE Funktion in diesem Forum.
    Fahren Sie mich irgendwohin, ich werde überall gebraucht, denn "Es iss ja, wie´s iss!".
    Woher kommt mein Nickname? - some1new by escobar

  8. #6
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - Südamerika
    Beiträge
    1.689
    Bedankte sich
    74
    Erhielt 517 Danksagungen
    in 397 Beiträgen

    Standard

    Zitat Zitat von Some1new Beitrag anzeigen
    Stimmt, ist in diesem Fall Unsinn. Ich hatte es als Teilstück aus einem geschriebenen Modul genommen, welches auch noch unter J1.0 laufen sollte. Da war dieses Teil der Abfrageweiche vorhanden.
    Dann würde ich doch lieber _JEXEC nehmen, weil kürzer
    Evtl. noch systemunabhängiger den Slash in "DS" wandeln?
    file_exist() *sollte* auch unter windows einen Pfad wie C:\pfad/zur\datei finden..

    Das Netz ist voll mit Diskussionen über den Sinn/Unsinn des DIRECTORY_SEPARATORs

    Aber ansonsten hast Du natürlich Recht
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation Help testing: EasyCreator Noch Fragen ? Forum.Joomla-Nafu.de

  9. Erhielt Danksagungen von:


  10. #7
    Wohnt hier Avatar von oldlady
    Registriert seit
    17.09.2008
    Ort
    München
    Beiträge
    4.848
    Bedankte sich
    357
    Erhielt 1.409 Danksagungen
    in 1.290 Beiträgen

    Standard

    file_exist() *sollte* auch unter windows einen Pfad wie C:\pfad/zur\datei finden..
    Ich habe das aufgegeben. Bei mir findet file_exists nur pfade "unterhalb" der Anwendung, also einfach "Images/stories/...".
    Deshalb habe ich jetzt auf alles verzichtet was den kompletten Pfade erzeugt und das funkioniert.
    Grüße, Christiane
    Joomla braucht dich!

  11. #8
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - Südamerika
    Beiträge
    1.689
    Bedankte sich
    74
    Erhielt 517 Danksagungen
    in 397 Beiträgen

    Standard

    Zitat Zitat von oldlady Beitrag anzeigen
    Deshalb habe ich jetzt auf alles verzichtet was den kompletten Pfade erzeugt und das funkioniert.
    Na dann...
    Alternativ gibt es auch noch einen ganzen Satz von Konstanten wie JPATH_ROOT, JPATH_SITE usw
    http://wiki.joomla-nafu.de/joomla-dokumentation/Joomla!_Programmierung/Framework/Konstanten

    Und auch zum prüfen ob eine Datei existiert bitet J! eine Funktion welche so ganz nebenbei auch noch die Slashes verdreht
    http://wiki.joomla-nafu.de/joomla-dokumentation/Joomla!_Programmierung/Framework/JFile/exists
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation Help testing: EasyCreator Noch Fragen ? Forum.Joomla-Nafu.de

  12. Erhielt Danksagungen von:


+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein