I have a page when user enters multiple lines in a textarea.
$systemName = "MySystem";
// scandata is a textarea element
if(isset($_POST['submit'])) {
////////////
$rows = preg_split('/\n/',$_POST['scandata']);
foreach($rows as $row){
$data = preg_split('/\t/',$row);
if(count($data) == 6){
$sigID = $data[0];
$sigGroup = $data[1];
$sigType = $data[2];
$sigName = $data[3];
$sigScanStrenght = $data[4];
if (preg_match('/\b[A-Z][A-Z][A-Z]-[0-9][0-9][0-9]\b/', $sigID)){
if ($sigGroup == "22") {
if ($sigType == "11") {
if ($sigName == "") {
$add_action[] = "<div class=\"alert alert-danger fade in alert_me\">$button_x_close <b>ERROR:</b> \t Sorry, but signature ID <u>$sigID</u> is not scanned down enough. Please scan it to higher percentage.</div>\n";
}else {
//function VALIDATE
$validateSQL= "SELECT `id` FROM `signature` WHERE `sigName` = '$sigName' AND `systemName` = '$systemName' AND `sigID` = '$sigID' AND `already_run` = 'no'";
if ($validate_result=mysqli_query($con,$validateSQL))
{
// Return the number of rows in result set
$validate_rowcount=mysqli_num_rows($validate_result);
if ($validate_rowcount > 0){
$sql_to_add = false;
$add_action[] = "<div class=\"alert alert-warning fade in alert_me\">$button_x_close Sorry, but signature ID <u>$sigID</u> you entered is a duplicate</div>";}
else{
$sql_to_add = true;
$to_add_action = "<div class=\"alert alert-success fade in alert_me\">$button_x_close Succes signature ID <u>$sigID</u> has been added</div>";}
if($sql_to_add) {$sql = "INSERT INTO `signature` (`systemName`, `sigName`, `sigGroup`, `sigType`, `sigScanStrenght`, `reporter`, `sigID`)
VALUES ('$systemName', '$sigName', '$sigGroup', '$sigType', '$sigScanStrenght', '$reporter', '$sigID')";
if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); }
}
else {$sql = "";}
$add_action[] = $to_add_action;
// Free result set
mysqli_free_result($validate_result);
mysqli_close($con);
}
}//else sigName close
}//if sigtype close
else {$add_action[] = "<div class=\"alert alert-danger fade in alert_me\">$button_x_close <b>ERROR:</b> \t Sorry, but signature type <u><b>$sigType</b></u> is not added</div> \n";}
}// if sigroup close
else {$add_action[] = "<div class=\"alert alert-danger fade in alert_me\">$button_x_close <b>ERROR:</b> \t Sorry, but signature ID <u>$sigID</u> has invalid signature group (<i> $sigGroup </i>)</div> \n";}
}//if pregmatch sigid close
else {$add_action[] = "<div class=\"alert alert-danger fade in alert_me\">$button_x_close <b>ERROR:</b> \t Sorry, but you entered invalid signature ID (<i> $sigID </i>)</div> \n";}
}//if count close
else {$add_action[] = "<div class=\"alert alert-danger fade in alert_me\">$button_x_close <b>ERROR:</b> \t Bad data input. Make sure you pasted the result right.</div> \n";}
}//foreach close
}//main function close
Problem is if the first row is a success. It only enters that first row into database. If the other rows don't meet previous if statements it prints out correct number of Errors.
I'm pretty sure i'm missing one big point to foreach loops but i cannot find it.
Help would be appreciated.
Edited code so it's whole.
Edit: The code itself works. Problem is it only adds first row of the textarea.
$systemName, right? It isn't defined anywhere in your "posted" code.