PDA

View Full Version : سوال: مشکل با جدول های اطلاعاتی



speeed
چهارشنبه 13 اردیبهشت 1391, 10:55 صبح
سلام دوستان.
من توسط این دستور اطلاعات رو میخونم و توی جدول هایی قرار میدم.


<!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>
<style>
#print{
background-color:#CCC;
width:800px;
height:115px;
margin:auto;
-moz-border-radius: 1em 4em 1em 4em;
border-radius: 1em 4em 1em 4em;
}
</style>

</head>
<body>
<?php
include("../../../config.php");
@mysql_connect($hostname, $user, $password) or die('Connection error');
@mysql_select_db($dbname) or die('Database error');
$codemeli = isset($_POST['codemeli'])?$_POST['codemeli']:'11';
$sql1 = "SELECT * FROM `badane` WHERE codemeli='{$codemeli}'";
$result1=mysql_query($sql1) or die('Could not run query : '.mysql_error());
?>
<div id="print" align="center">
<img src="../../images/pr1.jpg" width="189" height="40" />
<br/>
<form action="print.php" method="post">
<table width="245">
<tr>
<td width="144"><input name="numpishpr" type="text" /></td>
<td width="89">شماره پیشنهاد</td>
</tr>
</table>
<input name="ok" type="submit" value="ثبت" />
</form>
تنها در صورت پرداخت و کامل بودن بیمه میتوانید چاپ کنید
برای پرداخت میتوانید از قسمت حسابداری وارد شوید و شماره پیشنهاد را وارد کنید
</div>
<div align="center">
بیمه بدنه صادر شده
<table width="600" border="1" dir="rtl">
<tr>
<td>شماره پیشنهاد</td>
<td>نام و نام خانوادگی</td>
<td>کدملی</td>
<td>نام بیمه گذار</td>
<td>حق بیمه</td>
</tr>
<?php
while($row = mysql_fetch_assoc($result1))
{
?>
<tr>
<td><?php echo $row['numpish'] ?></td>
<td><?php echo $row['namemalek'] ?></td>
<td><?php echo $row['codemeli'] ?></td>
<td><?php echo $row['namebimegozar'] ?></td>
<td><?php
$a=$row['hazine'];
if(empty($a) == true)
{
echo"حق بیمه تعیین نشده است";
$b="FF3333";
}
else
{
echo $row['hazine'];
$b="0099FF";
}
?></td>
</td>
</tr>
<?php
}
?>
</table>
</div>
</body>
</html>

حالا میخوام توی هر td جدولم یه چک باکس بزارم برای اینکه کاربر انتخاب کنه و چند تا اعمال خاص روش انجام بده که دکمه هایی پایینش هست و اوناشو ردیف کردم.
فقط تو یه چیزش موندم حالا وقتی کاربر روی چک باکس کلیک کردی از کجا بفهمم مثلا این td انتخاب شده و شماره پیشنهاد اون td چی بوده.
چون مثلا حذف بر اساس همون شماره پیشنهاد باید انجام بدم و در action بهش نیاز دارم

Hamid.RDN
چهارشنبه 13 اردیبهشت 1391, 11:29 صبح
دوست عزیز جدول دیتابیستون بایستی حاوی فیلد کلید Key باشه و بر اساس اون بتونید به اطلاعات درون چدول دسترسی داشته باشید.

mostafa_shaeri_tj
چهارشنبه 13 اردیبهشت 1391, 11:32 صبح
سلام.
این لینک رو مطالعه کن فکر میکنم جوابتو کامل بگیری.

http://www.phpeasystep.com/mysql/8.html

speeed
چهارشنبه 13 اردیبهشت 1391, 11:47 صبح
داداش هست.
شماره پیشنهاد همون key جدول من هست.
حالا مثلا 20 تا دونه نتیجه براش اورد و کاربر روی یکی از چک باکس های اون کلیک کرد چطوری سیستم بفهمه همون کدوم key رو انتخاب کرده تا بر اساس اون حذف یا ویرایش یا... رو انجام بده

Hamid.RDN
چهارشنبه 13 اردیبهشت 1391, 11:54 صبح
این میشه چک باکست:


<input type="checkbox" name="nums[]" value="<?php echo $row['numpish']?>" />حالا با خوندن
$_POST['nums'] لیست آیتم های انتخاب شده رو داری

speeed
چهارشنبه 13 اردیبهشت 1391, 11:59 صبح
اره ممنون لینکی که مصطفی جان دادن واقعا عالی بود فقط یه تیکشو نفهمیدیم.
این الان میگه اگر delete کلیک شد ولی تعداد دکمه های من زیاده میتونم بگم اگر delete کلیک شد برو به این صفحه و اکشن رو اونجا انجام بده.یعنی با haeder loction توی صفحه جا نمیمونه؟

// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}

// if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=delete_multiple.php\">";
}
}
mysql_close();
?>

speeed
چهارشنبه 13 اردیبهشت 1391, 13:20 عصر
دوستان به نظر شما الان کجای این کد مشکل داره حذف نمیکنه هیچ طوری

<!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>
<style>
#print{
background-color:#CCC;
width:800px;
height:115px;
margin:auto;
-moz-border-radius: 1em 4em 1em 4em;
border-radius: 1em 4em 1em 4em;
}
</style>

</head>
<body>



<?php
include("../../../config.php");
@mysql_connect($hostname, $user, $password) or die('Connection error');
@mysql_select_db($dbname) or die('Database error');
$codemeli = isset($_POST['codemeli'])?$_POST['codemeli']:'11';
$sql1 = "SELECT * FROM `sales` WHERE codemeli='{$codemeli}'";
$result1=mysql_query($sql1) or die('Could not run query : '.mysql_error());
$count=mysql_num_rows($result1);
?>




<div align="center">
<form name="form1" method="post" action="">
<table width="600" border="1" dir="rtl">
<tr>
<td >&nbsp;</td>
<td>شماره پیشنهاد</td>
<td>نام و نام خانوادگی</td>
<td>کدملی</td>
<td>نام بیمه گذار</td>
<td>حق بیمه</td>
</tr>
<?php
while($row = mysql_fetch_assoc($result1))
{
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['numpish']; ?>"></td>
<td><?php echo $row['numpish'] ?></td>
<td><?php echo $row['namemalek'] ?></td>
<td><?php echo $row['codemeli'] ?></td>
<td><?php echo $row['namebimegozar'] ?></td>
<td><?php
$a=$row['hazine'];
if(empty($a) == true)
{
echo"حق بیمه تعیین نشده است";
$b="FF3333";
}
else
{
echo $row['hazine'];
$b="0099FF";
}
?></td>
</td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="حذف"></td>
</tr>
</table>
<? php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM `sales` WHERE `numpish`='$del_id'";
$result = mysql_query($sql);
}

?>
</div>
</body>
</html>

Hamid.RDN
چهارشنبه 13 اردیبهشت 1391, 13:37 عصر
اگر گزینه register_globals شما فعال نباشه این کد کار نمیکنه.

speeed
چهارشنبه 13 اردیبهشت 1391, 18:24 عصر
اگر گزینه register_globals شما فعال نباشه این کد کار نمیکنه.
توی لوکال فعال هست ؟

Hamid.RDN
چهارشنبه 13 اردیبهشت 1391, 18:58 عصر
نه به صورت پیش فرض

speeed
چهارشنبه 13 اردیبهشت 1391, 21:48 عصر
بازم کار نکردم
ازتون خواهش میکنم ببیند توی کدهام مشکلی دارم یا نه

speeed
پنج شنبه 14 اردیبهشت 1391, 20:05 عصر
دوستان دیگر نظری ندارند خیلی عجیبه من طبق همون کدها پیش رفتم ولی الان مشکل بوجود اورده و حذف نمیشه

speeed
جمعه 15 اردیبهشت 1391, 11:42 صبح
سلام بچه ها
من الان همه چیشو تقریبا درست کردم فقط نمیدونم چرا همش این ارور رو میده
Notice: Undefined variable: delete in C:\wamp\www\bime1\user\sales\car\src-a.php on line 80
یعنی اون دکمه که فشار داده میشه رو نمیشناسه

Hamid.RDN
جمعه 15 اردیبهشت 1391, 12:44 عصر
از این استفاده کن

$_POST['delete']

speeed
جمعه 15 اردیبهشت 1391, 12:58 عصر
باز هم همون مشکل هست .

<!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>
<style>
#print{
background-color:#CCC;
width:800px;
height:115px;
margin:auto;
-moz-border-radius: 1em 4em 1em 4em;
border-radius: 1em 4em 1em 4em;
}
</style>

</head>
<body>



<?php
include("../../../config.php");
@mysql_connect($hostname, $user, $password) or die('Connection error');
@mysql_select_db($dbname) or die('Database error');
$codemeli = isset($_POST['codemeli'])?$_POST['codemeli']:'11';
$sql1 = "SELECT * FROM `sales` WHERE codemeli='{$codemeli}'";
$result1=mysql_query($sql1) or die('Could not run query : '.mysql_error());
$count=mysql_num_rows($result1);
?>




<div align="center">
<table width="800" border="0" >
<tr>
<td><form name="form1" method="post" action="">
<table width="800" border="0" bgcolor="#CCCCCC">
<tr>
<tr>
<td >&nbsp;</td>
<td>شماره پیشنهاد</td>
<td>نام و نام خانوادگی</td>
<td>کدملی</td>
<td>نام بیمه گذار</td>
<td>حق بیمه</td>
</tr>
<?php
while($row = mysql_fetch_assoc($result1))
{
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['numpish']; ?>"></td>
<td><?php echo $row['numpish']; ?></td>
<td><?php echo $row['namemalek']; ?></td>
<td><?php echo $row['codemeli']; ?></td>
<td><?php echo $row['namebimegozar']; ?></td>
<td><?php
$a=$row['hazine'];
if(empty($a) == true)
{
echo"حق بیمه تعیین نشده است";
$b="FF3333";
}
else
{
echo $row['hazine'];
$b="0099FF";
}
?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="حذف"></td>
</tr>
<?php
// Check if delete button active, start this
$delete=$_POST['delete'];
if($delete)
{
for($i=0;$i<$count;$i++)
{
$del_id = $checkbox[$i];
$sql = "DELETE FROM `sales` WHERE `numpish`='$del_id'";
$result = mysql_query($sql);
}
}
?>
</table>
</form>
</td>
</tr>
</table>
</div>
</body>
</html>

MMSHFE
شنبه 16 اردیبهشت 1391, 09:25 صبح
قسمت PHP آخر رو اینطوری تغییر بدین:


<?php
// Check if delete button active, start this
if(isset($_POST['delete'])){
$delete=$_POST['delete'];
if($delete)
{
for($i=0;$i<$count;$i++)
{
$del_id = $checkbox[$i];
$sql = "DELETE FROM `sales` WHERE `numpish`='$del_id'";
$result = mysql_query($sql);
}
}
}
?>

موفق باشید.

speeed
شنبه 16 اردیبهشت 1391, 11:18 صبح
سلام استاد شهرکی بازم مثل همیشه به داد ما رسیدید.
استاد الان حذف نمیکنه نمیدونم دلیلیش چیه کدها کاملا درسته ولی عمل حذف انجام نمیشه

MMSHFE
شنبه 16 اردیبهشت 1391, 12:20 عصر
<?php
// Check if delete button active, start this
if(isset($_POST['delete'])){
$delete=$_POST['delete'];
if($delete)
{
for($i=0;$i<$count;$i++)
{
$del_id = $checkbox[$i];
$sql = "DELETE FROM `sales` WHERE (`numpish`='{$del_id}')";
$result = mysql_query($sql);
if(mysql_affected_rows() < 0) {
echo mysql_error();
}
}
}
}
?>

با این کد امتحان کنید ببینید آیا خطایی در دستور اجرایی وجود داره یا نه. وقتی خطا رو رفع کردین، if آخر و دستور echo مربوطه رو حذف کنید. موفق باشید.

MMSHFE
شنبه 16 اردیبهشت 1391, 12:40 عصر
دیدین کجا رو اشتباه کردین؟


<?php
// Check if delete button active, start this
if(isset($_POST['delete'], $_POST['checkbox'])) {
$c = count($_POST['checkbox']);
for($i = 0; $i < $c; $i++) {
$del_id = $_POST['checkbox'][$i];
$sql = "DELETE FROM `sales` WHERE (`numpish`='{$del_id}')";
mysql_query($sql);
}
}
?>

speeed
شنبه 16 اردیبهشت 1391, 14:35 عصر
نه استاد
اشتباه در کجا بود ؟

MMSHFE
شنبه 16 اردیبهشت 1391, 14:39 عصر
در اینکه اطلاعات آرایه checkbox رو مستقیماً میخوندین نه ازطریق آرایه POST_$

speeed
شنبه 16 اردیبهشت 1391, 15:08 عصر
استاد متاسفانه دوباره هم پاک نمیکنه
میخوایید فالشو بهتون بدم؟

MMSHFE
شنبه 16 اردیبهشت 1391, 15:09 عصر
اگه میشه فایل رو همراه با یک Export از جدول مربوطه بگذارین.

speeed
شنبه 16 اردیبهشت 1391, 15:31 عصر
بفرمایید خدمت شما استاد
اگه میشه بعدش اشکالش رو بگید

speeed
یک شنبه 17 اردیبهشت 1391, 12:07 عصر
بچه ها من تقریبا مشکلشو پیدا کردم اینه که شماره پیشنهاد انتخاب نمیشه.
این کد رو ببیند

<?php
// Check if delete button active, start this
if(isset($_POST['delete'], $_POST['checkbox'])) {
$c = count($_POST['checkbox']);
for($i = 0; $i < $c; $i++) {
$del_id = $c[$i];
$sql = "DELETE FROM $tbl_name WHERE hazine='$del_id'";
print $sql;
mysql_query($sql);
}
}

?>
الان گذاشتم $sql رو چاپ میکنم ولی خروجی رو ببیند
DELETE FROM sales WHERE hazine=''
دیدی روبروی هزینه خالی هست

MMSHFE
یک شنبه 17 اردیبهشت 1391, 12:20 عصر
<?php
// Check if delete button active, start this
if(isset($_POST['delete'], $_POST['checkbox'])) {
$c = count($_POST['checkbox']);
for($i = 0; $i < $c; $i++) {
$del_id = $_POST['checkbox'][$i];
$sql = "DELETE FROM `{$tbl_name}` WHERE (`hazine`='{$del_id}')";
print $sql;
mysql_query($sql);
}
}
?>

speeed
یک شنبه 17 اردیبهشت 1391, 17:16 عصر
استاد باز هم همون مشکل پاک نکردنو داره پاک نمیکنه اینو چاپ میکنه
DELETE FROM `sales` WHERE (`hazine`='')

MMSHFE
یک شنبه 17 اردیبهشت 1391, 17:30 عصر
این کد رو توی صفحه مقصد فرم اجرا کنید ببینیم چی چاپ میشه؟


echo '<pre>';
print_r($_POST);
echo '</pre>';

speeed
یک شنبه 17 اردیبهشت 1391, 18:18 عصر
Array ( [codemeli] => 1111 [name] => [src2] => جستجو )

MMSHFE
یک شنبه 17 اردیبهشت 1391, 19:30 عصر
خوب اینطوری که نمیشه. یک مشکلی توی فرمتون هست چون اصلاً چکباکس ها ارسال نشدن. براتون یک نمونه تا فردا آماده میکنم.

speeed
یک شنبه 17 اردیبهشت 1391, 20:06 عصر
استاد فایل ها رو براتون گذاشتم که

MMSHFE
یک شنبه 17 اردیبهشت 1391, 22:20 عصر
بله حقیقتش فایلها رو دیدم ولی (شرمنده) خیلی کدش شلوغ بود ازش سر در نیاوردم. برای همین دارم یک نمونه مشابه براتون درست میکنم. موفق باشید.

speeed
دوشنبه 18 اردیبهشت 1391, 14:03 عصر
سلام استاد من الان تونستم که این مقدار رو بگیرم یعنی الان اون مشکل حل شد و اینو چاپ میکنه
DELETE FROM `sales` WHERE (`hazine`='79324342')
ولی الان نمیدونم چرا اینو پاک نمیکنه

MMSHFE
دوشنبه 18 اردیبهشت 1391, 14:46 عصر
خوب یکبار mysql_affected_rows و mysql_error رو چاپ کنید ببینیم چی بدست میاد؟

speeed
دوشنبه 18 اردیبهشت 1391, 18:11 عصر
هیچ اروری هم نمیده
از صبح تا حالا باهاش ور رفتم نشد که نشد

<?php
// Check if delete button active, start this
if(isset($_POST['delete'], $_POST['checkbox'])) {
$c = count($_POST['checkbox']);
for($i = 0; $i < $c; $i++) {
$del_id = $_POST['checkbox'][$i];
$sql = "DELETE FROM sales WHERE hazine='$del_id' ";
mysql_query($sql) or die('Could not run query : '.mysql_error());



}
}
?>