Hallo,

Weet er iemand een goede manier om data mee te nemen door verschillende formulieren.
De manier die ik nu gebruik lijkt me niet echt handig/veilig.

<?php if(is_numeric($_GET['section'] == 1)) { ?>

Select base model
<form action="dashboard.php?option=1&section=2" name="server_parts_base" method="post">
<select name="server_base_model">
<?php
$sql = "SELECT id, model FROM server_parts_base";
$res = mysqli_query($db['connect'], $sql) or die(mysqli_error());
while($row = mysqli_fetch_assoc($res)){
echo '<option value="'.$row['id'].'">'.$row['model'].'</option>';
}
?>
</select>
<input type="submit" name="submit" value="Next"/>
</form>

<?php } elseif(is_numeric($_GET['section'] == 2)) {

foreach($_POST as $key=>$value){
$_SESSION[$key]=$value;
}

?>
Select number of harddisk
<form action="dashboard.php?option=1&section=3" name="server_parts_base" method="post">
<select name="server_numb_disks">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
<input type="submit" name="submit" value="Next"/>
</form>

<?php } elseif(is_numeric($_GET['section'] == 3)) {

foreach($_POST as $key=>$value){
$_SESSION[$key]=$value;
}

?>

Select number of memory modules
<form action="dashboard.php?option=1&section=4" name="server_parts_base" method="post">
<select name="server_numb_mem">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
</select>
<input type="submit" name="submit" value="Next"/>
</form>

<?php } elseif(is_numeric($_GET['section'] == 4)) {

foreach($_POST as $key=>$value){
$_SESSION[$key]=$value;
}

echo $_SESSION['server_base_model'];
echo '<br />';
echo $_SESSION['server_numb_disks'];
echo '<br />';
echo $_SESSION['server_numb_mem'];

} else { echo 'Oeps!'; }
?>
Gaat eens terug naar af.

is_numeric is geen juiste controle, gebruik ctype_digit.

gebuik altijd eerst: isset daarna een ctype/preg en of een ordinaire vergelijking

En je kan het ook niet in 1 keer doen, je zult het moeten opsplitsen.

Daarnaast heb je ook geen foreach nodig om $_POST naar de $_SESSION te brengen

Voor de rest is er niets mis mee om $_POST values tijdelijk in een session op te slaan.
Bedankt voor de reactie.

Ook heb ik een foreach gemaakt om een x aantal select menu's te maken
echter wil ik deze automatische een 'Name' meegeven welke bijv. oploopt

Disk1
Disk2
etc...

Ik heb heb een tabel met 3 velden.
ID, Naam, Formaat
Nu wil ik het select menu zo aanpassen dat deze in de foreach alle database results weergeevt als 'Option'

Weet iemand hoe ik dat voor elkaar kan krijgen, heb al zitten googlen maar kan niets vinden.



<?php
foreach(range(1, $_SESSION['server_numb_disks']) as $row) {
echo '<select name=""><option value=""></option></select>';
}
?>
Je bedoelt zoiets?

<?php
$i = 1;
foreach($array AS $data) {
echo 'name'.$i;
$i++;
}
?>
<?php
# get harddisk models from database
$sql = "SELECT id, model FROM server_parts_base";
$res = mysqli_query($db['connect'], $sql) or die(mysqli_error());
while($sRow = mysqli_fetch_assoc($res));

foreach(range(1, $_SESSION['server_numb_disks']) as $row) {
echo '<select name=""><option value=""></option></select>';
}
?>

Ik bedoel eigenlijk dat hij automatische een <select name="Telkens Disk+1">.
en dan alle <option value=""></option> moet weergeven uit de database.
Als je dat niet zelf kunt uitdenken, dan moet je je toch eens gaan afvragen waar je mee bezig bent.

<?php
$sql = "SELECT id
model
FROM server_parts_base";

if ((mysqli_query($sql)) === false) {
// geef een alternatief en log de mysqli_error ergens in een file
}
else
$options = array();

if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
$options[] = '<option value="'.$row['id'].'">'.$row['model'].'</option>';
}

foreach (range(1, $_SESSION['server_numb_disks']) as $x) {
echo '<select name="disk['.$x.']">';
echo implode(PHP_EOL,$options);
echo '</select>';
}
}
}
?>

Reageren