#php #html
#php #HTML
Вопрос:
Мой PHP-код:
<?php
include 'function.php';
$db = mysqli_connect("localhost","root","","messmanagementsys");
session_start();
if(mysqli_connect_error())
{
echo "ERROR CONNECTING TO THE DATABASE";
}
else{
$vali=$_POST['noie'];
echo $vali;
for($i=1;$i<=$vali;$i )
{
$iname=$_POST['ingname'.$i];
$icode=$_POST['ingcode'.$i];
$icur=$_POST['ingcur'.$i];
$ireq=$_POST['ingreq'.$i];
$icost=$_POST['ingcost'.$i];
$idate=$_POST['ingdate'.$i];
$check="SELECT `ingcode` FROM `ing` WHERE ingcode='$icode'";
$s=mysqli_query($db,$check);
$coderepeat=mysqli_fetch_array($s);
$e=mysqli_num_rows($s);
echo $e;
if($e>0)
{
echo "<script>$(function(){
$('#my-dialog-id').dialog();
});
</script>";
if(isset($_POST['ingyes']))
{
$update="UPDATE `ing` SET `ingname`='$iname',`ingcode`='$icode',`current`='$icur',`required`='$ireq',`ingcost`='$icost',`date`='$idate' WHERE 1";
}
if(isset($_POST['ingno'])){
header("Refresh:0:url=ingredient.php");
}
}
else{
$query="INSERT INTO `ing`(`ingname`, `ingcode`, `current`, `required`, `ingcost`, `date`) VALUES ('$iname','$icode','$icur','$ireq','$icost','$idate')";
$res=mysqli_query($db,$query);
if($res)
header("Refresh:0;url=ingredient.php");
else
echo "SOMETHING WENT WRONG";
}
}
}
?>
<!DOCTYPE html>
<head></head>
<body>
<form action="ingupdate.php" method="POST">
<div id='my-dialog-id' title='my dialog title'>
<p>The item <?php $string=implode(",",$coderepeat);echo $string;?> already exists do u wish to update??</p>
<button name="ingyes" >YES</button>
<button name="ingno">NO</button>
</div>
</form>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</body>
Мне нужно напечатать код, который повторяется.
Я поместил записи в массив в php, но если у меня есть 2 повторяющихся кода, то в массиве одно и то же значение сохраняется дважды.
Я получаю значения переменной со страницы html, и пользователь выбирает количество записей, которые он хочет внести.
Я создаю поле ввода динамически и задаю имена динамически, поэтому я извлекаю их в PHP путем конкатенацииingname
с$i
, которая является переменной, для которой задано количество полей ввода, запрошенных пользователем.
Я использую циклы и извлекаю значения этих полей ввода.
Что я могу сделать, чтобы ввести в массив 2 значения?
Вот мой HTML-код:
<!DOCTYPE html>
`<html>
<head>
<link rel="stylesheet" href="main.css">
<link href='https://fonts.googleapis.com/css?family=Bungee Shade' rel='stylesheet'>
<link href='https://fonts.googleapis.com/css?family=Eater' rel='stylesheet'>
<title>Ingredients Details</title>
<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
</head>
<body>
<center> <h1 id="labelb">Ingredients Details</h1></center>
<form action="ingupdate.php" method="POST" >
<input type="text" name="noie" placeholder="Enter the no of ingredients to add" style="width:200px;" id="noie">
<button id="noieb">Enter</button>
<table id="ingredients">
<thead><tr>
<th>Ingredient name:</th>
<th>Ingredient code:</th>
<th>Current<sub>(in stock in kgs)</sub></th>
<th>Required<sub>(excluding stocks in kgs)</sub></th>
<th>Cost<sub>(in Rupees including transportation)</sub></th>
<th>Date:</th>
</tr>
</thead>
<tbody id="ing">
<?php
$db = mysqli_connect("localhost","root","","messmanagementsys");
session_start();
if(mysqli_connect_error())
{
echo "ERROR CONNECTING TO THE DATABASE";
}
else{
//$query1="SELECT * FROM login ";
$usr=$_SESSION['adminuser'];
$query1="SELECT * FROM `ing` WHERE 1";
$result1=mysqli_query($db,$query1);
while($row = mysqli_fetch_array($result1))
{
echo "<tr>";
echo "<td>" . $row[0] . "</td>";
echo "<td>" . $row[1] . "</td>";
echo "<td>" . $row[2] . "</td>";
echo "<td>" . $row[3] . "</td>";
echo "<td>" . $row[4] . "</td>";
echo "<td>" . $row[5] . "</td>";
echo "</tr>";
}
}
//echo "<td><form action='fineedit.php' method='POST'><select name='sfstat'><option value='paid' >Paid</option><option value='unpaid' selected>No</option></select><button type='submit' name='submit'>submit</button></form></td>";
?>
</tbody>
</table>
<button type="submit" name="submit" >SUBMIT</button>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
document.getElementById("noieb").onclick=function()
{
var i=document.getElementById("noie").value;
for(var j=1;j<=i;j )
{
var table = document.getElementById("ing");
var row = table.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
var cell6 = row.insertCell(5);
var name='ingname' j;
var code='ingcode' j;
var cur='ingcur' j;
var req='ingreq' j;
var cost='ingcost' j;
var date='ingdate' j;
var iname = document.createElement('input');
iname.setAttribute("type", "text");
iname.name = "ingname" j;
iname.setAttribute("required", "true");
cell1.appendChild(iname);
var icode = document.createElement('input');
icode.setAttribute("type", "text");
icode.name = "ingcode" j;
icode.setAttribute("required", "true");
cell2.appendChild(icode);
var icur = document.createElement('input');
icur.setAttribute("type", "number");
icur.name = "ingcur" j;
icur.setAttribute("required", "true");
cell3.appendChild(icur);
var ireq = document.createElement('input');
ireq.setAttribute("type", "number");
ireq.name = "ingreq" j;
ireq.setAttribute("required", "true");
cell4.appendChild(ireq);
var icost = document.createElement('input');
icost.setAttribute("type", "number");
icost.name = "ingcost" j;
icost.setAttribute("required", "true");
cell5.appendChild(icost);
var idate = document.createElement('input');
idate.setAttribute("type", "date");
idate.name = "ingdate" j;
idate.setAttribute("required", "true");
cell6.appendChild(idate);
}
}
function delrow(){
var table = document.getElementById("ing");
table.deleteRow(-1);
}
$(document).ready(function(){
$("input[name=edit]").on("click",function(){
$(".en").css("display","block");
})
$("input[name=save]").on("click",function(){
$(".en").css("display","none");
})
})
</script>
</body>
Второй HTML-файл
</html>
<!DOCTYPE html>
<head></head>
<body>
<form action="ingupdate.php" method="POST" >
<input type="text" name="noie" placeholder="Enter the no of ingredients to add" style="width:200px;" id="noie">
<button id="noieb">Enter</button>`
<div id='my-dialog-id' title='my dialog title'>
<p>The item <?php print_r($coderepeat);?> already exists do u wish to update??</p>
<button name="ingyes" >YES</button>
<button name="ingno">NO</button>
</div>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</body>
Комментарии:
1. откуда
$_POST['ingcodeX']
берется? Откуда$i
берется? Для меня очень неясно, что вы здесь делаете.2. Извините, не ясно, в чем проблема. Можете ли вы привести пример того, что вы имеете в виду, включая пример задействованных значений данных?
3. я получаю значения переменной со страницы html, и пользователь выбирает количество записей, которые он хочет внести. я создаю поле ввода динамически и задаю имена динамически, поэтому я извлекаю их в php путем объединения ‘ingname’ с $ i, которая является переменной, для которой задано количество полей ввода, запрошенных пользователем. я использую циклы и извлекаю значения этих полей ввода.
4. Вы открыты для SQL-инъекций. Параметризуйте. Без
where
предложения вupdate
все строки будут обновлены. Это предназначено? Вы имеете в виду, что вы получаете ассоциативный индекс и числовое значение или что-то еще? Вы должны получать несколько строк?5. да, я сейчас не беспокоюсь о безопасности. я просто пробую что-то