مشکل در دریافت و پردازش آرایه با متد POST
سلام
من این فرم رو ایجاد کردم که چارت دروس دانشجو هست و موقع انتخاب واحد دانشجو باید تعداد واحدهای انتخاب شده بررسی و دروس انتخاب شده وارد بانک بشن
اما به متغیرهام و طرز به کار گیری شون ایراد میگیره
میشه کمکم کنید؟ :لبخند:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>انتخاب واحد</title>
</head>
<body>
<?php
// Create connection
$con=mysqli_connect("localhost","root","");
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
/*
// Create database
$sql="CREATE DATABASE my_db";
if (mysqli_query($con,$sql))
{
echo "Database my_db created successfully";
}
else
{
echo "Error creating database: " . mysqli_error($con);
}
$con=mysqli_connect("localhost");
$test=mysqli_select_db($con,"my_db") or die(mysqli_error($con));
//$link = mysqli_connect('blah','blah','blah');
//$db = mysqli_select_db($link,$db_name);
// Create table
$sql="CREATE TABLE lesson (
id INT AUTO_INCREMENT,
PRIMARY KEY(id),
lesson VARCHAR(40),
unit int(30),
teacher VARCHAR(30)
);";
// Execute query
if (mysqli_query($con,$sql))
{
echo "Table persons created successfully";
}
else
{
echo "Error creating table: " . mysqli_error($con);
}
*/
if (!isset($_POST["submit"]))
{
foreach($_POST["unit"] as $unit[]=>$count)
{
echo "$count";
}
}
/*
foreach ($_POST["check"] as $check)
{
$count=$_POST["unit"].value;
$sum=$sum+$count;
}
echo " <br /> sum is $sum";
*/
?>
<form name="" id="myform" action="#" method="post" >
<br clear="all"/>
<table border="2" align="center" cellpadding="5" dir="rtl" >
<tr align="right" >
<td width="3"><input type="checkbox" name="check[]" /></td>
<td >ریاضی کاربردي</td>
<td ><input type="text" name="unit[]" disabled="disabled" value="2" /></td>
</tr>
<tr align="right">
<td>آمار و احتمالات<input type="checkbox" name="check[]" value="" /></td>
<td ><input type="text" name="unit[]" disabled="disabled" value="2" /></td>
</tr>
<tr align="right">
<td>شیوه ارائه نوشتاري و گفتاري<input type="checkbox" name="check[]" value="" /></td>
<td ><input type="text" name="unit[]" disabled="disabled" value="2" /></td>
</tr>
<tr align="right">
<td>سخت افزار کامپیوتر2<input type="checkbox" name="check[]" value="" /></td>
<td ><input type="text" name="unit[]" disabled="disabled" value="2" /></td>
</tr>
</table>
<center>
<input name="submit" value="Submit" type="submit" />
</center>
</form>
</body>
</html>
ارورهاش:
Notice: Undefined index: unit in C:\xampp\htdocs\sama\test-unit.php on line 67
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\sama\test-unit.php on line 67
Notice: Undefined variable: sum in C:\xampp\htdocs\sama\test-unit.php on line 71
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
الان اینو پیدا کردم که اگر اول کدهام بزارم نوتیس ها رو گزارش نمیده
<?php error_reporting (E_ALL ^ E_NOTICE); ?>
غیرفعال کردن ریپورتها باعث پیدایش جوابهای غلط نمیشه؟
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
برای ارور
Invalid argument supplied for foreach() in
هم این دلیل رو پیدا کردم
When you feed a foreach with data that are not an array, you get a warning
اما من تو foreach از آرایه ای استفاده کردم که تو فرم ایجاد کردم!
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
شما foreach رو برای چه کاری استفاده کردید؟
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
برای اینکه به تعداد چک باکس هام بچرخه و تعداد واحدهای اونهایی که checked هست رو با هم جمع کنه و اگر بالای 20 واحد شد به کاربر ارور بده
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
کد شما اشکال زیادی داره .
action فرم اشتباهه.
checkbox ها تکراری هستند و منحصر به درس خاصی نیستند.
ورودی text ها کاربردشون چه وقتی غیرفعال هستند.
شرط برسی مشکل داره.
و....
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
علامت # رو از action بردارم؟
checkbox ها رو میخواستم به حالت آرایه معرفی کنم چون 30 تا درس هست. خواستم ایندکسی باشه. باید جور دیگه ای معرفیشون کنم؟
text هم فقط میخوام تعداد واحد رو نشون بده و قابل ادیت نباشه. فقط برای جمع زدن میخوام ازش استفاده کنم
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
کد زیر رو امتحان کنید
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>انتخاب واحد</title>
</head>
<body>
<?php
// Create connection
$con=mysqli_connect("localhost","root","");
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
/*
// Create database
$sql="CREATE DATABASE my_db";
if (mysqli_query($con,$sql))
{
echo "Database my_db created successfully";
}
else
{
echo "Error creating database: " . mysqli_error($con);
}
$con=mysqli_connect("localhost");
$test=mysqli_select_db($con,"my_db") or die(mysqli_error($con));
//$link = mysqli_connect('blah','blah','blah');
//$db = mysqli_select_db($link,$db_name);
// Create table
$sql="CREATE TABLE lesson (
id INT AUTO_INCREMENT,
PRIMARY KEY(id),
lesson VARCHAR(40),
unit int(30),
teacher VARCHAR(30)
);";
// Execute query
if (mysqli_query($con,$sql))
{
echo "Table persons created successfully";
}
else
{
echo "Error creating table: " . mysqli_error($con);
}
*/
if (isset($_POST["submit"]))
{
$count=0;
foreach($_POST['check'] as $count)
{
$count+=$count;
}
echo $count;
}
/*
foreach ($_POST["check"] as $check)
{
$count=$_POST["unit"].value;
$sum=$sum+$count;
}
echo " sum is $sum";
*/
?>
<form name="" id="myform" action="" method="post" >
<br clear="all"/>
<table border="2" align="center" cellpadding="5" dir="rtl" >
<tr align="right" >
<td><label for="check[1]">ریاضی کاربردي</label><input type="checkbox" name="check[1]" id="check[1]" value="2"/></td>
</tr>
<tr align="right">
<td><label for="check[2]">آمار و احتمالات</label><input type="checkbox" name="check[2]" id="check[2]" value="3"/></td>
</tr>
<tr align="right">
<td><label for="check[3]">شیوه ارائه نوشتاري و گفتاري</label><input type="checkbox" name="check[3]" id="check[3]" value="2"/></td>
</tr>
<tr align="right">
<td><label for="check[4]">سخت افزار کامپیوتر</label><input type="checkbox" name="check[4]" id="check[4]" value="1"/></td>
</tr>
</table>
<center>
<input name="submit" value="Submit" type="submit" />
</center>
</form>
</body>
</html>
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
کد زیر رو امتحان کنید:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>انتخاب واحد</title>
</head>
<body>
<?php
/*
// Create connection
$con=mysqli_connect("localhost","root","");
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
*/
/*
// Create database
$sql="CREATE DATABASE my_db";
if (mysqli_query($con,$sql))
{
echo "Database my_db created successfully";
}
else
{
echo "Error creating database: " . mysqli_error($con);
}
$con=mysqli_connect("localhost");
$test=mysqli_select_db($con,"my_db") or die(mysqli_error($con));
//$link = mysqli_connect('blah','blah','blah');
//$db = mysqli_select_db($link,$db_name);
// Create table
$sql="CREATE TABLE lesson (
id INT AUTO_INCREMENT,
PRIMARY KEY(id),
lesson VARCHAR(40),
unit int(30),
teacher VARCHAR(30)
);";
// Execute query
if (mysqli_query($con,$sql))
{
echo "Table persons created successfully";
}
else
{
echo "Error creating table: " . mysqli_error($con);
}
*/
if (isset($_POST["submit"]))
{
$u=0;
foreach($_POST['check'] as $count)
{
$u=$u+$count;
}
echo $u;
}
/*
foreach ($_POST["check"] as $check)
{
$count=$_POST["unit"].value;
$sum=$sum+$count;
}
echo " sum is $sum";
*/
?>
<form name="" id="myform" action="" method="post" >
<br clear="all"/>
<table border="2" align="center" cellpadding="5" dir="rtl" >
<tr align="right" >
<td><label for="check[1]">ریاضی کاربردي</label><input type="checkbox" name="check[1]" id="check[1]" value="2"/></td>
</tr>
<tr align="right">
<td><label for="check[2]">آمار و احتمالات</label><input type="checkbox" name="check[2]" id="check[2]" value="3"/></td>
</tr>
<tr align="right">
<td><label for="check[3]">شیوه ارائه نوشتاري و گفتاري</label><input type="checkbox" name="check[3]" id="check[3]" value="2"/></td>
</tr>
<tr align="right">
<td><label for="check[4]">سخت افزار کامپیوتر</label><input type="checkbox" name="check[4]" id="check[4]" value="1"/></td>
</tr>
</table>
<center>
<input name="submit" value="Submit" type="submit" />
</center>
</form>
</body>
</html>
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
ممنون از شما
جواب کامل رو بهم داد
لطف کردید
نقل قول: مشکل در دریافت و پردازش آرایه با متد POST
سلام
البته اين هم ميشه:
به روش خودتون
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>انتخاب واحد</title>
</head>
<body>
<?php
// Create connection
$con=mysqli_connect("localhost","root","");
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
/*
// Create database
$sql="CREATE DATABASE my_db";
if (mysqli_query($con,$sql))
{
echo "Database my_db created successfully";
}
else
{
echo "Error creating database: " . mysqli_error($con);
}
$con=mysqli_connect("localhost");
$test=mysqli_select_db($con,"my_db") or die(mysqli_error($con));
//$link = mysqli_connect('blah','blah','blah');
//$db = mysqli_select_db($link,$db_name);
// Create table
$sql="CREATE TABLE lesson (
id INT AUTO_INCREMENT,
PRIMARY KEY(id),
lesson VARCHAR(40),
unit int(30),
teacher VARCHAR(30)
);";
// Execute query
if (mysqli_query($con,$sql))
{
echo "Table persons created successfully";
}
else
{
echo "Error creating table: " . mysqli_error($con);
}
*/
if (isset($_POST["submit"]))
{
$x=0;
//echo $_POST["unit"][0];
for($i=0;$i<count($_POST['check']);$i++)
{
if (isset($_POST['check'][$i]))
$x=$x+$_POST["unit"][$i];
}
echo $x;
}
/*
foreach ($_POST["check"] as $check)
{
$count=$_POST["unit"].value;
$sum=$sum+$count;
}
echo " sum is $sum";
*/
?>
<form name="" id="myform" action="#" method="post" >
<br clear="all"/>
<table border="2" align="center" cellpadding="5" dir="rtl" >
<tr align="right" >
<td width="3"><input type="checkbox" name="check[]" /></td>
<td >ریاضی کاربردي</td>
<td ><input type="hidden" name="unit[]" value="2" />2واحد</td>
</tr>
<tr align="right">
<td>آمار و احتمالات<input type="checkbox" name="check[]" value="" /></td>
<td ><input type="hidden" name="unit[]" value="2" />2واحد</td>
</tr>
<tr align="right">
<td>شیوه ارائه نوشتاري و گفتاري<input type="checkbox" name="check[]" value="" /></td>
<td ><input type="hidden" name="unit[]" value="2" />2واحد</td>
</tr>
<tr align="right">
<td>سخت افزار کامپیوتر2<input type="checkbox" name="check[]" value="" /></td>
<td ><input type="hidden" name="unit[]" value="2" />2واحد</td>
</tr>
</table>
<center>
<input name="submit" value="Submit" type="submit" />
</center>
</form>
</body>
</html>