Array nach übergabe an ein anderes Formular zerlegen

Luke85

Mitglied
Guten Morgen @ all,

ich habe ein Formular, in dem ich nach Auswählen eines Produktes alle zugehörigen Daten ausgelesen bekomme.
Links in einer Spalte habe ich eine Checkbox zum Auswählen einzelner Produkte. Wird/werden eine oder mehrere Checkboxen ausgewählt, werden nur diese im neuen Fenster (neuem Formular) angezeigt. Soweit klappt alles sehr gut.
Doch nun muss ich ein Template für die Ausgabe erstellen um die Positionierung einzelner Felder formatieren.
Das Problem ist nun, dass das so einfach nicht geht, da beide Arrays zu einem gepackt werden im vorhergehenden Formular.
Frage: Wie kann ich das Array wieder zerlegen, damit ich formatieren kann. In dem Fall wäre es $prdpara wieder in $bezeichner und $zeige_produkt zu zerlegen.
Hier mal der Code beider zusammenhängenden Skripte.

db_generieren.php
PHP:
<?php
// Wenn ein Produkt gewählt wurde, zeige es in einer Tabellenzeile

if(isset($zeige_produkt))
    {
	echo '<form name="checkbox" method="post" action="datenblatt_generiert.php"';

		$bezeichner=array('Produktnummer', 'ProduktID', 'Art der Karte','Art der Anschlüsse', 'Art der Eingänge', 'Impedanz', 'Frequenz');
        
			echo '
			<br>
			<table width="600" border="1" cellspacing="0" cellpadding="3" class="Stil2">';

				for($z=0;$z<count($zeige_produkt);$z++)
					{
						echo '
						<tr>
						<td><input name="prdpara[]" type="checkbox" value="'.$bezeichner[$z].' '.$zeige_produkt[$z].'"></td>
						<td width="200">'.$bezeichner[$z].'</td>
						<td width="400">'.$zeige_produkt[$z].'</td>
						</tr>';
					}

        echo '</table>';

	echo '<input type="submit" name="gesendet" value="Weiter"></form>';
    }


?>

db_generiert.php
PHP:
<?php
$prdpara = $_POST['prdpara'];
	echo '<form name="checkbox" method="post" action="datenblatt_generiert.php"';

	if (empty($prdpara))
	{
		echo "Es wurde kein Produkt ausgewählt.";
	}
		else
		{
		for($z=0;$z<count($prdpara);$z++)
			{
				print "<br />" .$prdpara[$z];
			}
		}
?>
 
Morgen secius,
danke für deine Antwort. Habe es angewandt, jedoch ohne Erfolg.
Ich habe einen anderen Weg gefunden, der aber noch nicht 100%ig funktioniert. Habe es wie folgt geschrieben in der db_generieren.php Datei:

PHP:
<?php
// Wenn ein Produkt gewählt wurde, zeige es in einer Tabellenzeile

if(isset($zeige_produkt))
    {
	echo '<form name="checkbox" method="post" action="datenblatt_generiertv8.php"';

		$bezeichner=array('Produktnummer', 'ProduktID', 'Art der Karte','Art der Anschlüsse', 'Art der Eingänge', 'Impedanz', 'Frequenz');
        
			echo '
			<br>
			<table width="600" border="1" cellspacing="0" cellpadding="3" class="Stil2">';

				for($z=0;$z<count($zeige_produkt);$z++)
					{
						echo '
						<tr>
						<td><input name="bezeichner[]" type="checkbox" value="'.$bezeichner[$z].'"></td>
						<td width="200">'.$bezeichner[$z].'</td>
						<input name="zeige_produkt[]" type="hidden" value="'.$zeige_produkt[$z].'">
						<td width="400">'.$zeige_produkt[$z].'</td>
						</tr>';
					}

        echo '</table>';

	echo '<input type="submit" name="gesendet" value="Weiter"></form>';
    }
?>

Das Problem besteht nun darin, dass die eindeutige Zuordnung nach Auswahl einer/mehrer Checkboxen nicht stimmt, da $zeige_produkt nicht automatisch mitausgewählt wird => hidden (mit Absicht, soll nicht sichtbar sein).
Habe es schon mit Javascript probiert, d.h. wird eine Box ausgewählt, soll die andere auch mit ausgewählt werden. Dies funktioniert nicht reibungslos, da das ganze in der Schleife steht und ALLE Boxen in der Tabelle ausgewählt werden und nicht nur die, die in der Spalte stehen.
Was gibt es noch für Möglichkeiten? $bezeichner und $zeige_produkt sindm it Absicht voneinander getrennt um im Nachhinein variabel damit arbeiten zu können.

Zum besseren Verständnis befindet sich ein Screenshot, wie das Ganze aussieht.
 

Anhänge

  • auswahl.JPG
    auswahl.JPG
    17,5 KB · Aufrufe: 21
Das sollte eigentlich funktionieren:
PHP:
<input name="prdpara['.$bezeichner[$z].']" type="checkbox" value="'.$zeige_produkt[$z].'">
Natürlich musst du da dann noch die db_generiert.php entsprechend anpassen.


Eine andere Lösung wäre du übergibst die Produkte, den namen für das Feld gibst du eine nummer und anhand dieser Nummer holt er sich dann den bezeichern in der db_generiert.php.
 
Also gut, habs noch einmal angewandt wie du es schreibst. Hatte es aber vorher genauso gehabt.
Korrigier mich bitte, wenn ich falsch liege, aber dann müsste db_generiert doch so heißen:

PHP:
<?php
$zeige_produkt = $_POST['prdpara'];

	echo '<form name="checkbox" method="post" action="datenblatt_generiertv7.php"';

	if (empty($zeige_produkt))
	{
		echo "Es wurde kein Produkt ausgewählt.";
	}
		else
		{
		echo '
		<br>
		<table width="600" border="1" cellspacing="0" cellpadding="3" class="Stil2">';


		for($z=0;$z<count($zeige_produkt);$z++)
			{
			echo '
			<tr>
			<td width="200">'.$zeige_produkt[$z].'</td>
			</tr>';
			}
	
        echo '</table>';

		}
?>

Ausgegeben wird nur der Rand der Tabelle... :confused:
 
http://de2.php.net/manual/de/control-structures.foreach.php

PHP:
foreach ($arr as $key => $value) {
    echo "Schlüssel: $key; Wert: $value<br />\n";
}

/* foreach Beispiel 3: Schlüssel und Wert */

 $a = array(
    "eins" => 1,
    "zwei" => 2,
    "drei" => 3,
    "siebzehn" => 17
);

foreach($a as $k => $v) {
    echo "\$a[$k] => $v.\n";
}

bei dir wäre es dann folgender maßen, sollte ich mich nicht wo vertan haben:

PHP:
<?php
$zeige_produkt = $_POST['prdpara'];

    echo '<form name="checkbox" method="post" action="datenblatt_generiertv7.php"';

    if (empty($zeige_produkt))
    {
        echo "Es wurde kein Produkt ausgewählt.";
    }
        else
        {
        echo '
        <br>
        <table width="600" border="1" cellspacing="0" cellpadding="3" class="Stil2">';

        foreach ($zeige_produkt as $key => $value) {
               echo '
            <tr>
            <td width="200">Schlüssel: '.$key.'; Wert: '.$value.'</td>
            </tr>';
        }
    
        echo '</table>';

        }
?>
 
Zurück