Eintrag-Details: Arrays in PHP und HTML

26.01.2006

Arrays in PHP und HTML

PHP unterstützt bekanntermaßen auch Arrays. So kann eine Variable folgendermaßen angelegt werden:

$artikel[] = array("Produkt1", 4.50);
$artikel[] = array("Produkt2", 2.30);
$artikel[] = array("Produkt3", 5.80);

Code herunterladen

[Mehr:]

PHP vergibt dabei den Array-Index beginnend bei 0, da PHP nullbasierte Indizes verwendet (ähnlich wie bei C++ übrigens). Jedes Array-Element ist dabei wieder ein Array. Wenn man also eines der Array-Elemente einer Variablen zuweist:

$temp = $artikel[0];

Code herunterladen

so ist $temp ein Array mit zwei Elementen, nämlich $temp[0] mit dem Inhalt "Produkt1" und $temp[1] mit dem Inhalt "4.50".

Advertisement/Werbung
Sinnvoll ist eine solche Verwendung von Arrays beispielsweise, wenn ein kleiner Warenkorb angelegt werden soll. Die Produktbezeichnung und der Preis sollte dabei möglichst unabhängig vom eigentlichen Skript definiert werden, damit man später leicht die Produkte austauschen kann, ohne das ganze Skript umschreiben zu müssen.

Anmerkung: Die hier vorgestellten Beispiele sollen lediglich das Prinzip verdeutlichen. Bei einigen Einzelheiten würde man in einer endgültigen Anwendung möglicherweise anders vorgehen. Sie dienen hier lediglich als Beispiele, damit das Verfahren anschaulich erläutert werden kann. In meinen Online-Kursen wird selbstverständlich genauer auf Einzelheiten eingegangen.

Man kann auch auf andere Art, auf eine solche Array-Konstruktion zugreifen. Das "Array im Array" ist nämlich nichts anderes als ein zweidimensionales Array, so dass auch der folgende Zugriff funktioniert: $artikel[0][0] enthält "Produkt1", $artikel[0][1] enthält den Preis von "4.50" Euro.

Verwirrend? Dann hilft vielleicht folgender kleine Tipp:

Arrays lassen sich bequem lesbar auf der Seite anzeigen, wenn Sie folgenden Code in PHP verwenden:

echo "<pre>";
print_r($artikel);
echo "</pre>";

Code herunterladen

Als Ausgabe erhalten Sie dann in unserem Beispiel dieses:

Array
(
    [0] => Array
        (
            [0] => Produkt1
            [1] => 4.5
        )

    [1] => Array
        (
            [0] => Produkt2
            [1] => 2.3
        )

    [2] => Array
        (
            [0] => Produkt3
            [1] => 5.8
        )

)

Code herunterladen

So lässt sich leicht Licht in das Dunkel der mehrdimensionalen Arrays bringen. Die Ausgabe des HTML-Tags "<pre>" sorgt dafür, dass Absätze und Einrückungen der nachfolgenden Ausgabe exakt so dargestellt werden, wie sie im HTML-Quelltext erscheinen. Die PHP-Funktion print_r() zeigt den Inhalt und Aufbau einer Variable in lesbarer Form (print_r bedeutet "print readable"). Anschließend wird mit dem HTML-Tag "</pre>" die Anzeige wieder auf normales HTML-Verhalten umgestellt.

Was macht man aber nun, wenn man Arrays auch in HTML-Formularen verwenden will? Hier hilft folgender Tipp:

Ein HTML-Eingabefeld wird normalerweise mit einem Namen versehen, beispielsweise:

<input type="text" name="anzahl_produkt1">
<input type="text" name="anzahl_produkt2">
<input type="text" name="anzahl_produkt3">

Code herunterladen

Hier wird es nun schwierig, in PHP den Inhalt der einzelnen Variablen auszulesen, weil diese nun unterschiedliche Namen haben. Zwar gibt es auch dafür in PHP eine Lösung (nämlich die "variable Variable"), wesentlich praktischer ist es jedoch, ein Array dafür einzusetzen:

<input type="text" name="anzahl_produkt[]">

Code herunterladen

Durch die Wahl des Namens "anzahl_produkt[]" erzeugt das Absenden des Formulars in PHP eine Array-Variable, die dann entsprechend mit dem Array-Index 0 beginnt. So kann das HTML-Formular die Eingabefelder dynamisch (z.B. über eine For-Schleife) erzeugen. Es werden genau so viele Eingabefelder benötigt, wie das Array $artikel Elemente hat. Die Anzahl kann man über sizeof($artikel) leicht herausfinden. Ein einfaches Bestellformular könnte dann also so programmiert werden:

print('<form action="'.$_SERVER['PHP_SELF'].'" method="post">');
for($k = 0; $k < sizeof($artikel); $k++)
{
    print $artikel[$k][0];
    print(' Anzahl: ');
    print('<input type="text" name="anzahl_produkt[]">');
    print('<br />');
}
print('<input type="submit">');
print('</form>');

Code herunterladen

Zur Abfrage im Skript können Sie dann folgende Schleife nutzen:

for ($k = 0; $k < sizeof($artikel); $k++)
{
    print('Anzahl für ');
    print($artikel[$k][0]);
    print(' = ');
    print($_POST['anzahl_produkt'][$k]);
    print('<br />');
}

Code herunterladen

Wollen Sie mehr darüber erfahren? Auf meiner Seite lernpilot.de wird ein PHP-Online-Kurs als WBT (Web Based Training) angeboten. Infos zu den Schulungen gibt es unter www.lernpilot.de/wbt/

Hinweis: Diesen Text und die enthaltenen Beispielprogramme und Skripte dürfen Sie zum Erlernen der einzelnen Techniken und auch als Grundlage für Ihre eigenen Projekte auf eigene Gefahr kostenlos nutzen.

Bitte denken Sie daran, dass alle Texte und Quellcodes trotzdem urheberrechtlich geschützt sind. Eine direkte Weitergabe ist nur nach ausdrücklicher schriftlicher Genehmigung gestattet.

Permalink 26.01.2006 07:51:39, von Marian eMail , 612 Wörter, 31183 mal angeschaut   German (DE) Kategorien: PHP

Kommentare, Pingbacks:

Kommentar von: Georg Tavonius [Besucher]
Bin gerade über Google auf diesen Artikel gestossen, da ich einem Fehler nachforsche, dem ich mit name="blubb[]" erhalte. Aber ich möchte Sie nur darauf hinweise, dass tags auch geschlossen werden sollten. Bei den
-tags haben Sie dies ja gemacht, aber bei den input-tags wohl konsequent vergessen.
Bitte mal ändern damit Neulinge auch gleich das richtige lernen.

Nächtlichen Gruß,
Georg
Permalink 21.08.2007 @ 23:44
Kommentar von: A. Rott [Besucher]
habe da noch eine Frage:



php ist klar aber wie spricht man dieses element in javascript an? wenn z.B. value verändert werden muss.

folgendes funktioniert nämlich nicht.
alert(document.form1.anzahl_produkt[1].value);

lieben gruss
angie
Permalink 04.09.2007 @ 17:02
Kommentar von: Marian [Mitglied] · http://www.heddesheimer.de
Natürlich müssen alle JavaScript Variablen auch über JavaScript gesetzt und abgefragt werden.

PHP kann allerdings verwendet werden um JavaScript Code auf der Seite zu erstellen.
Permalink 04.09.2007 @ 19:12
Kommentar von: Andreas S. [Besucher] · http://www.prostatitis-erkrankung.de/roberto/index-de.htm
Hallo Marian!
Kannst du mir helfen? Für einen Freund in Ecuador bin ich eine Site am erstellen, aber das nachfolgende bekomme ich einfach nicht zur Anzeige - es sollte beim Formmail als Array-Anzeige 0,1 oder 2 (Zimmer: $einzel) Zimmer angezeigt werden. Wie bekomme ich hier den Array angezeigt?




Einzelzimmer



\n1
2
keine





Vielen Dank im Vorraus!

Gruß aus München
Andreas
Permalink 04.10.2007 @ 10:54
Kommentar von: Norman [Besucher]
Könnte es sein, dass die Größe dieser "html-arrays" sehr begrenzt ist?

Und gibt es Unterschiede zwischen GET und POST?

Danke schonmal
Permalink 01.02.2008 @ 14:36
Kommentar von: Thomas [Besucher]
get ist für variablen die mit der adressleiste übergeben werden (z.B. www.testseite.de?variable=1)
und post nimmt man für variablen die mit einem formular übergeben werden.
Permalink 17.03.2008 @ 16:57
Kommentar von: Sebastian [Besucher] · http://www.sebastian-slomski.de
Hallo Gast unter mir,
der input tag wird nicht geschlossen :D
Permalink 23.06.2008 @ 21:21
Kommentar von: Chris [Besucher]
Wurde der Quelltext jetzt abgeändert, und tags sind vorhanden ?Ich bin einer der besagten "Anfänger", und ich muss ein Programm für die FH schreiben. Suche nach Informationen und muss leider feststellen das es schwierig ist im Internet an informationen zu kommen die richtig sind weil man einfach keine kontrolle hat.
Würde mich über eine Antwort freuen, denn die hier beschriebenen dinge passen genau in das was ich machen will/muss. Guten rutsch ins neue Jahr, Mfg Chris
Permalink 31.12.2008 @ 09:16
Kommentar von: Marian [Mitglied] · http://www.heddesheimer.de
Hallo Chris,

gerade für die Anfänger ist mein Onlinekurs für PHP gedacht. Du kannst Ihn auf der Seite http://www.lernpilot.de/wbt/ bequem buchen und dort alles wichtige über PHP lernen.

Marian
Permalink 31.12.2008 @ 09:31
Kommentar von: Flug USA [Besucher]
Php war noch nie meine Ding, muss es mir jezt aber Beruftechnisch draufziehen. Da kommt mir so etwas hier genau richtig. Danke für die Mühe, werde mir in Zukunft auch mal die Anderen Lektionen zu Gemüte führen. Also LG!
Permalink 20.02.2009 @ 10:20

Kommentar schreiben:

Ihre E-Mail-Adresse wird nicht angezeigt.
Ihre URL wird angezeigt.
Antispam-Feld
Erlaubte XHTML Tags: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
Optionen:
 
(Zeilenumbrüche werden zu <br />)
(Setze Cookies für Name, eMail & URL)

Werbung

Online-Kurse

  • Bequem PHP lernen bei freier Zeiteinteilung von zuhause
  • Der Onlinekurs den jeder versteht
  • www.lernpilot.de/wbt/

Konnte ich helfen?

mehr Werbung

buy viagra online|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|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66| levitra overdose effects levitra overdose symptoms which is stronger levitra or viagra cialis levitra or viagra levitra or viagra which is better levitra interactions alcohol levitra uk side effects levitra uk online generic levitra uk levitra use for women levitra use instructions levitra user group levitra tabs 20mg levitra trial coupon levitra time effectiveness levitra time frame levitra ratings and reviews levitra effects viagra levitra effects use levitra effects forum levitra effects liver levitra effects women levitra effectiveness reviews levitra women effect standard levitra dose levitra generic medication levitra generic viagra levitra generic cheap levitra generic drug levitra generic available