Многомерный массив, проблема с получением рекурсивного вывода переменной - PullRequest
2 голосов
/ 08 марта 2010

Я работаю с многомерным массивом, но у меня проблема

Представьте, что у меня есть компания, которая может заказать мебель Fx 5 стульев разной ширины типа разные стандартные цены разные скидки (%) и цена за скидкой теперь что

Если компания может выбрать 3 из 5 стульев в своем ассортименте и добавить каждый стул через флажок. Затем мне нужно установить скидку на эту единицу и «окончательную цену», и я должен был сделать это несколько раз, чтобы я мог добавить больше стульев позже.

Мои мысли примерно такие

Обратите внимание, что он должен иметь возможность добавлять пустое поле в скидку, если скидка отсутствует, и я должен быть в состоянии прочитать значения данного ввода для данной единицы

Я надеюсь, что вы можете помочь мне, и спасибо за попытку Миккель

<?php
mysql_connect('localhost', 'root', '') or 
die("Could not connect: " . mysql_error());
mysql_select_db("hassberg");
?>

<?php

$furniture_id = $_POST['furniture_id'];
$discount = $_POST['discount'];
$netto_price = $_POST['netto_price'];

if (isset($furniture_id)){


$get_info = array($furniture_id, $discount, $netto_price); 

$counter = 0;
$counter2 = 0;
foreach($get_info as $shop){
    echo "id: " . $shop[$counter][$counter02]." costs ".$shop[0][1]." and you get ".$shop[0][2]."<br />";
$counter++;
    if ($counter2 > 3){
        $counter2 = 0;
    }
}

//OR

$shop2 = array($furniture_id, $discount, $netto_price); 

foreach ($row as $rows){
    echo "<li><b>The row number $rows</b>";
    echo "<ul>";

    for ($col = 0; $col < 3; $col++){
        echo "<li>".$shop2[$rows][$col]."</li>";
    }

    echo "</ul>";
    echo "</li>";
}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>tester</title>
</head>
<body>

<form name="create01" method="post" action="<?php echo $PHP_SELF; ?> ">
<?php 
$result = @mysql_query("SELECT id
                       FROM furniture_model;");
if (mysql_num_rows($result) == 0) // Exits if your db table is empty{
  echo 'I have no rows to display';
  exit;
}
else{
while($row_model = mysql_fetch_assoc($result)){
    echo $row_model['id'].
        '<input type="checkbox" class="customer_rel_check" name="chosen_model_id[]" value="'.$row_model['id'].'" /> 
         <input type="text" name="discount[]" />% 
         <input type="text" name="netto_price[]" />€ <br />'; //netto_price will be cumulated of the standard price and the discount
}
}
?>

<input type="submit" name="send" value="create" />
</form>
</body>
</html>

1 Ответ

0 голосов
/ 10 марта 2010

Ну, я нашел один ответ, он не так совершенен, как хотелось бы, но я работаю, поэтому я счастлив

Мне пришлось снова добавить в форму скрытое поле, содержащее model_id, чтобы я мог сопоставить его с идентификатором model_id, который отправляет флажок

<?php
mysql_connect('localhost', 'root', '') or 
die("Could not connect: " . mysql_error());
mysql_select_db("hassberg");

$customer_id = 4;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>tester</title>
</head>
<body>
<?php
$sql = 'INSERT INTO tabelname (customer_id, model_id, discount, netto) VALUES ';

if(isset($_POST['chosen_model_id']) && count($_POST['chosen_model_id']) > 0){
$count = count($_POST['chosen_model_id']);
$i = 1;
foreach($_POST['chosen_model_id'] as $value){
    $key = array_search($value, $_POST['hidden_furniture_id']);

    $sql .= '(' . $customer_id . ',' . 
              $_POST['hidden_furniture_id'][$key] ."," . 
              $_POST['netto_price'][$key] ."," . 
              $_POST['discount'][$key] . ")"; 
    $sql .= ($i<$count) ? ", " : "";
    $i++;
}
    echo '<p>' . $sql . '</p>';     
}
?>

<form name="create01" method="post" action="<?php echo $PHP_SELF; ?> ">
<?php 
$result = mysql_query("SELECT id
           FROM furniture_model;");
if (mysql_num_rows($result) == 0){ // Exits if your db table is empty
  echo 'I have no rows to display';
  exit;
}else{
while($row_model = mysql_fetch_assoc($result)){
    echo $row_model['id'].
        '<input type="checkbox" class="customer_rel_check" name="chosen_model_id[]" value="'.$row_model['id'].'" /> '.
        '<input type="text" name="discount[]" />% ' .
        '<input type="text" name="netto_price[]" />€ ' .
        '<input type="hidden" name="hidden_furniture_id[]" value="' . 
                    $row_model['id'] . '" /> <br />'; 
                    //netto_price will be cumulated of the standard price and the discount 
}
}
?>
<input type="submit" name="send" value="create" />
</form>
</body>
</html>
...