selfhtml.de - Alles für den Webmaster!

 

Empfehlung:

wix.com

Kostenlose Homepage

Besuchen Sie auch:

Jobs:

Pfad mit Array-Element ergänzen

Autor: gaby
Datum: 21.08.2013 23:48:03

Moin moin,

Ich hätte gern mal ein Problem. ;-)

Vor dem Doctype habe ich ein Array mit Dateinamen von Bildern:

<?php

  $bohrturm = array(
    "fruehling.jpg",
    "sommer.jpg",
    "herbst.jpg",
    "winter.jpg",
  );

   // echo count($bohrturm);
   $anzahl = count($bohrturm);
   echo "Anzahl Bilder: $anzahl";
?>


Diese Bilder sollen nun in einer Galerie angezeigt werden.
Wenn ich in jedem LI die einzelnen Array-Elemente explizit benenne, also so:

<?php echo $bohrturm[0] ?>

<?php echo $bohrturm[1] ?>

<?php echo $bohrturm[2] ?>

<?php echo $bohrturm[3] ?>  usw

dann klappt das auch.


Folgender Code funktioniert:

<ul class="galerie box-center">

   <li><a href="testbilder/<?php echo $bohrturm[0] ?>" rel="lightbox[ex]">
        <img src="testbilder/<?php echo $bohrturm[0] ?>" alt="thumb">
        <span class="showcase"><img src="testbilder/<?php echo $bohrturm[0] ?>"
              alt="large"></span></a></li>

    <li><a href="testbilder/<?php echo $bohrturm[1] ?>" rel="lightbox[ex]">
        <img src="testbilder/<?php echo $bohrturm[1] ?>" alt="thumb">
        <span class="showcase"><img src="testbilder/<?php echo $bohrturm[1] ?>"
              alt="large"></span></a></li>

    <li><a href="testbilder/<?php echo $bohrturm[2] ?>">
        <img src="testbilder/<?php echo $bohrturm[2] ?>" alt="thumb">
        <span class="showcase"><img src="testbilder/<?php echo $bohrturm[2] ?>"
              alt="large"></span></a></li>
</ul>




In einer Schleife gibt es aber Probleme. Der Pfad zum Bild wird nicht mehr mit dem Bildnamen aus dem array ergänzt, so wie in dem oberen Code.
So steht im Quellcode hinterher zb nur
"<img src="testbilder/"
statt
"<img src="testbilder/winter.jpg"



<ul>

<?php
    for($ind = 0; $ind < $anzahl; $ind++)
    {
?>
    <li><a href="testbilder/<?php echo $bohrturm[ind] ?>" rel="lightbox[ex]">
        <img src="testbilder/<?php echo $bohrturm[ind] ?>" alt="thumb">        
        <span class="showcase"><img src="testbilder/<?php echo $bohrturm[ind] ?>"  
            alt="large"></span></a></li>
        <br> <br>
<?php
      }
    ?>
</ul>


Kann da mal bitte jemand ein Auge, oder besser alle beide drauf werfen? ;-)
Danke schomma.


Grüße
gaby


http://gaby77.ga.funpic.de/forum/fr/php-array/galerie-bohrturm-2.php



Re: Pfad mit Array-Element ergänzen

Autor: Freddy
Datum: 21.08.2013 23:56:00

Hallo,

versuche mal, in der Schleife, statt "$bohrturm[ind]" folgendes "$bohrturm[$ind]" (beachte den Inhalt der eckigen Klammern).

P.S.: 'ini_set("display_errors", 1)' und 'error_reporting(E_ALL)' waren gesetzt?


Gruß,
Freddy



Re: Pfad mit Array-Element ergänzen

Autor: gaby
Datum: 22.08.2013 00:12:05


> versuche mal, in der Schleife, statt
> "$bohrturm[ind]" folgendes "$bohrturm[$ind]"
> (beachte den Inhalt der eckigen Klammern).


Hach Freddy, meine Rettung!  :-))
Danke!! :-))


> P.S.: 'ini_set("display_errors", 1)' und
> 'error_reporting(E_ALL)' waren gesetzt?

Öhhhm, wo?


Grüße
gaby



Re: Pfad mit Array-Element ergänzen

Autor: Freddy
Datum: 22.08.2013 10:21:44

Hallo,

> Danke!! :-))

Gern geschehen.


> > P.S.: 'ini_set("display_errors", 1)' und
> > 'error_reporting(E_ALL)' waren gesetzt?

Während der Entwicklung setze ich

ini_set('display_errors', 1);
error_reporting(E_ALL);

an den Anfang meiner PHP-Scripte. Wenn man mit einer Datei arbeitet (meist: "index.php"), die andere Dateien (Klassen, Funktionen, irgendwelche Logik) inkludiert, reicht es, o.g. in die Hauptdatei zu schreiben.

Vielleicht besser: eine Funktion (man könnte auch eine Klasse draus machen), wie folgt:

function setMode($mode) {
    switch ($mode) {
        case 'dev':
            ini_set('display_errors', 1);
            error_reporting(E_ALL);
            break;
        case 'live':
            ini_set('display_errors', 0);
            error_reporting(0);
            break;
        default:
            ini_set('display_errors', 1);
            error_reporting(0);
    }
}

Und dann:

setMode('dev') // Ich entwickle gerade und möchte, dass mir alle Warnings, Notices und Errors gezeigt werden
setMode('live') // Meine Website ist live, d.h. im Internet auffindbar: Warnings, Notices und Errors sollen versteckt werden


Gruß,
Freddy



Re: Pfad mit Array-Element ergänzen

Autor: gaby
Datum: 22.08.2013 12:53:28

moin moin ;-)

> Während der Entwicklung setze ich
>
> ini_set('display_errors', 1);
> error_reporting(E_ALL);
>
> an den Anfang meiner PHP-Scripte. Wenn man mit
> einer Datei arbeitet (meist: "index.php"), die
> andere Dateien (Klassen, Funktionen, irgendwelche
> Logik) inkludiert, reicht es, o.g. in die
> Hauptdatei zu schreiben.


Danke für Deinen Vorschlag. :-)
In meinem Projekt werden nicht alle Dateien in die index.php includiert.
Ich müsste also in _jede_ Datei dieses error_reporting schreiben, was ich ja nachher wieder alles auf Kommentar setzen muss. Deshalb dachte ich, es gäbe in irgendeiner Datei in einem übergeordneten Verzeichnis _eine_ zentrale Stelle dafür.


> Vielleicht besser: eine Funktion (man könnte auch
> eine Klasse draus machen), wie folgt:
>
> function setMode($mode) {
>     switch ($mode) {
>         case 'dev':
>
>             ini_set('display_errors', 1);
>
>             error_reporting(E_ALL);
>
>             break;
>         case 'live':
>
>             ini_set('display_errors', 0);
>
>             error_reporting(0);
>
>             break;
>
>         default:
>
>             ini_set('display_errors', 1);
>
>             error_reporting(0);
>     }
> }
>
> Und dann:
>
> setMode('dev') // Ich entwickle gerade und
> möchte, dass mir alle Warnings, Notices und
> Errors gezeigt werden
> setMode('live') // Meine Website ist live, d.h.
> im Internet auffindbar: Warnings, Notices und
> Errors sollen versteckt werden
>

Ich kann es im Moment leider nicht testen. Hab hier keinen (lokalen) Server.
Wenn ich mir das aber jetzt so abstrakt vorstelle, ist es dann nicht so, daß ich genau wie vorher, wieder _jede_ Datei ändern muß, nämlich für die Entwicklung "setMode('dev')" einfügen, und hinterher wieder jede Datei ändern in "setMode('live')" ?

Okay, ich könnte es hinterher mit _einem_ Befehl dateiübergreifend auf "live" setzen, aber erstmalig müßte ich ja "setMode('dev')" in _jede_ Datei kopieren.
Oder mache ich jetzt einen Denkfehler?


Grüße
gaby  



Re: Pfad mit Array-Element ergänzen

Autor: Freddy
Datum: 22.08.2013 13:13:26

Hallo,

> In meinem Projekt werden nicht alle Dateien in
> die index.php includiert.
> Ich müsste also in _jede_ Datei dieses
> error_reporting schreiben, was ich ja nachher
> wieder alles auf Kommentar setzen muss. Deshalb
> dachte ich, es gäbe in irgendeiner Datei in einem
> übergeordneten Verzeichnis _eine_ zentrale Stelle
> dafür.

Du kannst auch Dein Webserver so konfigurieren, dass diese Werte gesetzt sind (IIRC in der "php.ini", unter Windows gibt es leider etliche, welche Du bearbeiten musst, weiß ich leider nicht).


> Wenn ich mir das aber jetzt so abstrakt
> vorstelle, ist es dann nicht so, daß ich genau
> wie vorher, wieder _jede_ Datei ändern muß,
> nämlich für die Entwicklung "setMode('dev')"
> einfügen, und hinterher wieder jede Datei ändern
> in "setMode('live')" ?

Ja.


> Okay, ich könnte es hinterher mit _einem_ Befehl
> dateiübergreifend auf "live" setzen, aber
> erstmalig müßte ich ja "setMode('dev')" in _jede_
> Datei kopieren.
> Oder mache ich jetzt einen Denkfehler?

Nein, aber vielleicht solltest Du darüber nachdenken, eine Einstellungsdatei (nennen wir sie mal "einstellungen.php") in alle Projektdateien ("ueber-uns.php", "startseite.php" etc.) zu inkludieren. Ich kenn das gar nicht mehr anders. Dort ist dann Platz für ein paar Funktionsdefinitionen (bspw. "setMode()"), Konfigurationen etc.:

$einstellung = array(
    'titel' => 'Meine tolle Website!',
    'datumsformat' => 'd.m.Y',
    'db_host' => 'localhost',
    'db_user' => 'root',
    'db_password' => 'topsecret',
    'db_name' => 'datenbankname',
    'encoding' => 'ISO-Quatsch',
    'meta_keywords' => 'Foo, Bar, Baz'
);

etc.
Glaub mir, wenn Du eine solche Datei verwendest, erleichtert Dir das die Arbeit ungemein.


Gruß,
Freddy



Re: Pfad mit Array-Element ergänzen

Autor: gaby
Datum: 22.08.2013 13:23:42

> Du kannst auch Dein Webserver so konfigurieren,
> dass diese Werte gesetzt sind (IIRC in der
> "php.ini", unter Windows gibt es leider etliche,

Ja genau. ;-)
Und diese etlichen habe ich leider nicht alle gefunden, weshalb das dateiübergreifende error_reporting bei mir nie richtig funktioniert hat.



> Nein, aber vielleicht solltest Du darüber
> nachdenken, eine Einstellungsdatei (nennen wir
> sie mal "einstellungen.php") in alle
> Projektdateien ("ueber-uns.php", "startseite.php"
> etc.) zu inkludieren. Ich kenn das gar nicht mehr
> anders. Dort ist dann Platz für ein paar
> Funktionsdefinitionen (bspw. "setMode()"),
> Konfigurationen etc.:
>
> $einstellung = array(
>     'titel' => 'Meine tolle Website!',
>     'datumsformat' => 'd.m.Y',
>     'db_host' => 'localhost',
>     'db_user' => 'root',
>     'db_password' => 'topsecret',
>     'db_name' => 'datenbankname',
>     'encoding' => 'ISO-Quatsch',
>     'meta_keywords' => 'Foo, Bar, Baz'
> );
>
> etc.
> Glaub mir, wenn Du eine solche Datei verwendest,
> erleichtert Dir das die Arbeit ungemein.


Das ist eine gute Idee!
Danke Freddy :-))


Grüße
gaby