PHP/MySQL (MariaDB) - Uppdatera medelst kryssboxar
Hej!
Jag har nu suttit hela natten och försökt få ordning på en del av ett betalsystem för en skjutbana.
Vill nu få in 5 olika arrayer till en databas, där värdena hämtade från ett formulär ska stämma mellan varandra.
Allt går helt okej med inmatning från text-rutor och dropdowns men så snart jag ska få data från en checkruta så går det åt skogen.
Formulärdelen:
while($pay = $payer->fetch_object()){
echo "\t\t\t<tr>\n";
echo "\t\t\t\t<td><input type=\"text\" name=\"index[]\" value=\"" . $pay->aaid . "\" hidden>\n";
echo "\t\t\t\t<td><input type=\"text\" name=\"member[]\" value=\"" . $pay->membnr . "\" hidden>\n";
echo "\t\t\t\t<input type=\"text\" readonly value=\"" . $pay->firstn . " " . $pay->lastn . "\" style=\"width: 150px;\"></td>\n";
echo "\t\t\t\t<td><select name=\"cost[]\">\n";
foreach($cost as $key){
echo "\t\t\t\t\t<option value=\"" . $key->id . "\"";
if($pay->cost == $key->id){
echo " selected";
$costas = $key->cost;
}
echo ">" . $key->type . "</option>\n";
}
echo "\t\t\t\t</select></td>\n";
echo "\t\t\t\t<td><input type=\"text\" name=\"amount[]\" value=\"" . $pay->amount . "\" style=\"width: 53px;\"></td>\n";
echo "\t\t\t\t<td>(" . $costas*$pay->amount . "kr)</td>\n";
echo "\t\t\t\t<td><input type=\"checkbox\" value=\"".$pay->aaid."\" name=\"paid[]\"";
if($pay->paid==1){
echo " checked";
}
echo "></td>\n";
echo "\t\t\t\t<td><input type=\"checkbox\" value=\"".$pay->aaid."\" name=\"remove[]\"></td>\n";
echo "\t\t\t</tr>\n";
}
$payer hämtar alla skyttar som redan är registrerade på den aktuella aktiviteten.
$cost är en array med alla artiklar som skyttarna ska betala för och vad de kostar.
Taomhand-delen:
if(isset($_POST['remember'])){
$index = $_POST['index'];
$member = $_POST['member'];
$ammocost = $_POST['cost'];
$amount = $_POST['amount'];
$paid = $_POST['paid'];
$remove = $_POST['remove'];
foreach($member as $key => $m){
if(empty($m)){
$godis="gott";
}
elseif(empty($amount[$key])){
$godis="smaskens!";
}
elseif($remove[$key]){
$query = "DELETE FROM member_activities WHERE aaid = '" . $remove[$key] . "'";
$result = mysqli_query($connect, $query) or die("Det ville inte. " . mysqli_error($connect));
}
else{
$query = "SELECT * FROM member_activities WHERE aaid = " . $index[$key];
$result = mysqli_query($connect, $query) or die("Det ville inte. " . mysqli_error($connect));
$isold = mysqli_num_rows($result);
if($paid[$key]){
$paid = 1;
}
else{
$paid = 0;
}
if($isold == 0){
$query = "INSERT INTO member_activities (activity, member, cost, amount, paid) VALUES('";
$query .= $_GET['activity'] . "', '".$m."', '".$ammocost[$key];
$query .= "', '".$amount[$key]."', '" . $paid . "')";
}
else{
$query = "UPDATE member_activities SET member = '".$m."', cost = '" . $ammocost[$key] . "', amount = '".$amount[$key]."', ";
$query .= "paid = '".$paid."' WHERE aaid = ".$index[$key];
}
unset($godis);
$result = mysqli_query($connect, $query) or die("Det gick inte att spara deltagare. " . mysqli_error($connect));
}
}
}
Oavsett vilken checkruta jag klickar i så påverkar den enbart den nyaste raden i tabellen. Vad är det jag missar?
WS: MSI B350M Mortar | AMD Ryzen 7 1700 | PH-TC14PE | 32GB DDR4 3000MHz | 1TB Kingston NV2 | Intel Arc A750 8GB | 2*BenQ G2420HDB
Router: Gigabyte GA-870-UD3 | AMD Phenom II x6 1055t @ 2600MHz, 1.25V | 12GB DDR3 | 2*250GB HDD @ RAID1 | 4TB HDD
Laptop: Thinkpad X220 4291-QF6