Select multiple in for loop hoe om te gaan met de array?

Status
Niet open voor verdere reacties.

Muiter

Gebruiker
Lid geworden
11 jul 2008
Berichten
73
Ik heb deze code in mijn formulier staan:

PHP:
<?php for ($i=0; $i<=4; $i++)
    { ?>
	<tr>
	    <td>
	    <?php echo $calculatie[$i]; ?>
		    <?php if($error_aantal[$i] == "ja"){ $error_omschr = $error_omschr_aantal[$i]; include('includes/input_error.php'); } ?>&nbsp;<textarea rows="7" cols="80" name="omschrijving[]" /><?php echo $omschrijving[$i]; ?></textarea>
	    </td>
	    <td>
		    <select multiple="multiple" width="50" size="7" name="calculatie[]" style="width: 150px">
		    <?php
		 		$sql_calc = "select id, naam from calculatie WHERE offerte_id = '".$row['off_offerte']."' ORDER BY id ASC";
		   	 	$res_calc = mysql_query($sql_calc,$con);  
		  		while ($row_calc = mysql_fetch_assoc($res_calc)){
		 	?>
		 		<option value="<?php echo $row_calc["id"] ?>"><?php if (empty($row_calc["naam"])) { echo $row_calc["id"]; } else { echo $row_calc["naam"]; } ?></option>
			<?php } ?></select>
	    </td>
	</tr>
	<?php } ?>

Hoe moet ik nu verder om de array te kunnen gebruiken? Ik loop vast op:
PHP:
for ($i=0; $i<=4; $i++)
    {
	$omschrijving[$i] = trim(mysql_real_escape_string($_POST['omschrijving'][$i]));	
	foreach(mysql_real_escape_string($_POST['calculatie'][$i]) AS $calculatie_id[$i]);
	}
 
PHP:
foreach($_POST['calculatie'] as $calculatie){
			mysql_query("INSERT INTO calculatie (id, calculatie, blabla)
			VALUES ('', '$calculatie', 'blabla'  )")
			or die(mysql_error()); 
}

Zoiets denk ik?
 
Ik heb de volgende querys, de laatst word helaas niet uitgevoerd, wat gaat er fout?
Ik krijg de error Invalid argument supplied for foreach()

PHP:
<?php
$sql = "INSERT INTO offerte_order_bev
        (
            offerte_id,
            naam,
            actief,
            soort,
            door_gemaakt,
            datum_gemaakt,
            opmerkingen
        )
        VALUES
        (
            '".$offerte_id."',
            '".$naam."',
            'ja',
            '".$soort."',
            '".$door_gemaakt."',
            NOW(),
            '".$opmerkingen."'
        )";

$id_offerte_order_bev = mysql_insert_id();
?>

PHP:
<?php
for ($i=0; $i<=4; $i++)
{
  if (!empty($omschrijving[$i]))
  {
    // voer query uit
      $sql_inh_omsch = "INSERT INTO sp_offerte_order_bev_omschr
                        (
                            offerte_order_bev_id,
                            omschrijving
                        )
                        VALUES
                        (
                            '".$id_offerte_order_bev."',
                            '".$omschrijving[$i]."'
                        )";
?>

PHP:
<?php
for ($i=0; $i<=4; $i++)
{
  if (!empty($omschrijving[$i]))
  {
    foreach ($calculatie_id[$i] AS $val)
    {
      // voer query uit
      $sql_inh_omsch = "INSERT INTO sp_offerte_order_bev_calc
                        (
                            offerte_order_bev_id,
                            calculatie_id
                        )
                        VALUES
                        (
                            '".$id_offerte_order_bev."',
                            '".$val."'
                        )";
    }
?>
 
Ik heb een dergelijk probleempje met het creëren van iets dergelijks met het uploaden van meerdere files tegelijk. Jouw probleem is dat $calculatie_id[$i] geen array is, dus de foreach kan niet uitgevoerd worden, aangezien foreach alleen werkt met arrays..
 
mensen stop stop wat zou array_walk() nu weer doen. toch eens bekijken

LET OP:als je iets aan een taal kan laten doen moet je het door de programmeer taal doen
dan overschrijf je de array_walk()als deze dan niet snel genoeg is. Maar weet dat als versnelling wordt doorgevoerd op functies het over bits gaat dus traditionele loop niet sneller zal zijn Dus kan het zijn dat je bij een update merkt dat als er een functie wordt upgedate die eveneens bij iedereen sneller is of veiliger ... Daarom kies je voor een programmertaal die evolueert.
 
Ik heb de for loop eruit gehaald. Laat ik het eerste werkend maken en daarna de for loop weer terugbouwen.

Met deze code krijg ik als output de tekst Array.
PHP:
<select multiple="multiple" width="50" size="7" name="calculatie_id[]" style="width: 150px">

Met deze code wordt alleen de één waarde uit de array gegeven:
PHP:
<select multiple="multiple" width="50" size="7" name="calculatie_id" style="width: 150px">
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan