PDA

View Full Version : سوال: تایید یا حذف نظرات به صورت گروهی



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

echo '<form method="GET">';
echo '<input type="checkbox" value="'.$row['id'].'" name="id[]"/>';

<textarea name="pasokh[]" dir="rtl" rows="5" cols="17"></textarea>
<input type="submit" value="تایید نظر" name="submitted">


if(isset($_GET['submitted'])) {
if(!isset($_GET['id'])) {
echo '<center><a href="show-tamas.php"><b>بازگشت</b></a></center>';
die('<center>مقداری را انتخاب نکردید.</center>');
}
$pasokh=$_GET['pasokh'];
if(is_array($_GET['pasokh'])){
foreach($_GET['pasokh'] as $pasokh){

$id= $_GET['id'];
if(is_array($_GET['id'])){
foreach($_GET['id'] as $id){

mysql_query("SET CHARACTER SET utf8",$handle);
$query = "update nazar set showpost='1', pasokh='$pasokh' WHERE id='$id'";
}}}}
مقادیر آرایه ی id[] و pasokh[] به صورت آرایه ارسال میشن . ولی مثلا اگه بخوام نظرات رو گروهی تایید کنم از دو نظری که انتخاب کردم یه نظر فقط تایید میشه .
مشکل من چیه؟
قبلا برای قسمت صندوق پستی به این صورت عمل کردم کار کرد. الان امدم pasokh[] رو که برای قسمت پاسخ به نظر هست رو اضافه کردم کار نمیکنه.
متشکرم.

ayub_coder
جمعه 09 تیر 1391, 09:59 صبح
شما اگه فقط بخوای حذف کنی که دیگه ب فیلد پاسخ نیازی نداری. فقط فیلد آی دی رو داشته باشی کافیه.
آیا اون ناحیه فرم هم تکرار شونده هست؟ چون من اینجا

echo '<input type="checkbox" value="'.$row['id'].'" name="id[]"/>';
فقط یک چک باکس میبینم. و در صورتی که فرم ارسال بشه فقط همون یه چک باکس ارسال خواهد شد.

ravand
جمعه 09 تیر 1391, 10:10 صبح
من منظور شما رو از تکرار شونده نمی فهمم این کل کدهای منه:

<?php

<div id="chap">
<div align="center">
<div class="main">
<?php
if ($num_rows > 0 ) {
$query = sprintf("SELECT * from nazar WHERE showpost='0'");
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
echo "<table>";
echo "<tr>";
echo "<td>";
echo "شماره:";
echo "</td>";
echo "<td>";
echo $row['id'];
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "وبسایت";
echo "</td>";
echo "<td>";
echo $row['web'];
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "نام:";
echo "</td>";
echo "<td>";
echo $row['name'];
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "ایمیل:";
echo "</td>";
echo "<td>";
echo $row['email'];
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "متن:";
echo "</td>";
echo "<td>";
echo $row['msg'];
echo "</td>";
echo "</tr>";
echo '<form method="GET">';
echo "<tr>";
echo "<td>";
echo '<input type="checkbox" value="'.$row['id'].'" name="id[]"/>';
echo "</td>";
echo "<td>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>
پاسخ به نظر:
</td>";
echo '<td>
<textarea name="pasokh[]" dir="rtl" rows="5" cols="17"></textarea>
</td>';
echo "</tr>";
}
?>
<tr>
<td>
<input type="submit" value="تایید نظر" name="submitted">
</td>
<td>
</td>
<tr>
</form>
<?php
}
?>
</table>
<br>
<br>
<?php
$handle=mysql_connect('localhost','root','');
$db=mysql_select_db('cms2');
if(isset($_GET['submitted'])) {
if(!isset($_GET['id'])) {
echo '<center><a href="show-tamas.php"><b>بازگشت</b></a></center>';
die('<center>مقداری را انتخاب نکردید.</center>');
}
$pasokh=$_GET['pasokh'];
if(is_array($_GET['pasokh'])){
foreach($_GET['pasokh'] as $pasokh){
echo $pasokh;
echo "<br>";
$id= $_GET['id'];
if(is_array($_GET['id'])){
foreach($_GET['id'] as $id){


mysql_query("SET CHARACTER SET utf8",$handle);
$query = "update nazar set showpost='1', pasokh='$pasokh' WHERE id='$id'";
}}}}
$result=mysql_query($query,$handle);
if($result==false){
die("error with query\r\n");
}
mysql_close($handle);
}
?>
</div>
</div>

</div>

ayub_coder
جمعه 09 تیر 1391, 10:23 صبح
خب ببینید شما مقدار

$id= $_GET['id'];
رو داخل حلقه foreach بالایی مربوط به پاسخ گذاشتین. این یعنی اینکه هربار که foreach اجرا میشه مقدار $id دوباره از $_GET خونده میشه و ست میشه رو چک باکس اولیتون. شما باید این دستور
$id= $_GET['id']; رو خارج از foreach بذارید.

ravand
جمعه 09 تیر 1391, 10:34 صبح
این کاری که شما گفتید رو کردم ولی بازم یه نظر تایید میشه.
من این دستور رو

$id= $_GET['id'];
گذاشتم بالای دستور زیر که در حلقه نباشه:

$pasokh=$_GET['pasokh'];
ولی بازم کار نکرد.

ayub_coder
جمعه 09 تیر 1391, 10:51 صبح
اصلا حواصم نبود. شما که مقادیر رو دارید باز مسقیم از $_GET میخونید که . موقعی که مقدار $_GET رو ریختی تو $id دیگه از $id بخون . تو هر دو دستور foreach اینکارو کردی.

$pasokh=$_GET['pasokh'];
if(is_array($_GET['pasokh'])){
foreach($_GET['pasokh'] as $pasokh){
echo $pasokh;
echo "";
$id= $_GET['id'];
if(is_array($_GET['id'])){
foreach($_GET['id'] as $id){
{
میشه به این شکل



$pasokhArray=$_GET['pasokh'];
$idArray= $_GET['id'];
if(is_array($_GET['pasokh'])){
foreach($pasokhArray as $pasokh){
echo $pasokh;
echo "";

if(is_array($_GET['id'])){
foreach($idArray as $id){

ravand
جمعه 09 تیر 1391, 11:22 صبح
امدم به این شکل درش آوردم و از آی دی و پاسخ برای دو نظر هر کدوم یک آی دی و یک پاسخ ارسال میکنه .
ولی با این حال درست کار نمیکنه:

$pasokhi=$_GET['pasokh'];
$idi= $_GET['id'];
if(is_array($_GET['pasokh'])){
foreach($pasokhi as $pasokh){
echo $pasokh;
echo "---------------";
echo "<br>";
}}
if(is_array($_GET['id'])){
foreach($idi as $id){
echo $id;

}}
mysql_query("SET CHARACTER SET utf8",$handle);
$query = "update nazar set showpost='1', pasokh='$pasokh' WHERE id='$id'";


الان بازم یه نظر تایید میشه . و خروجی echo این شکلی میشه:


19p---------------
49p---------------
1949

ravand
جمعه 09 تیر 1391, 11:35 صبح
الان مقادیر درست ارسال میشه

19pasokh
51pasokh
19
51
ولی در خط زیر میشه گفت مقادیر درست دریافت نمیشه.
چون فقط یک نظر تایید میشه و نظر بعدی تایید نمیشه.

$query = "update nazar set showpost='1', pasokh='$pasokh' WHERE id='$id'";
باید چیکار کرد؟

ayub_coder
جمعه 09 تیر 1391, 12:01 عصر
کوئری رو بیار داخل حلقه foreach پایینی بذار

ravand
جمعه 16 تیر 1391, 12:46 عصر
الان امدم یه فیلد دیگه هم بهش اضافه کردم.
مشکلش اینه که آخرین رکورد رو به جای همه ی رکوردهایی که میخواستیم ویرایش کنیم وارد میکنه.

echo "<input type='text' maxlength='40' name='onvan[]' value='".$oniy."' />";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "آدرس:";
echo "</td>";
echo "<td>";
echo "<input type='text' dir='ltr' name='url[]' value=$webiy>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo '<input type="checkbox" value="'.$row['id'].'" name="id[]"/>';
echo "</td>";
echo "<td>";
echo "</td>";
echo "</tr>";

}
?>
</table>
<table>
<tr>
<td>
<input type="image" src="ok-link.gif" value="تایید نظر" name="submitted">
</td>
<td>
<input type="image" src="Delete.gif" value="تایید نظر" name="deletetted">
</td>
</tr>
</table>
</form>
<?php
}
?>

<br>
<br>
<?php
$handle=mysql_connect('localhost','root','');
$db=mysql_select_db('cms2');
if(isset($_GET['submitted'])) {
if(!isset($_GET['id'])) {
die('<center>مقداری را انتخاب نکردید.</center>');
}
$idi=$_GET['id'];
$url=$_GET['url'];
$onvan=$_GET['onvan'];
if(is_array($_GET['url'])){
foreach($url as $urli){
echo $urli;
echo "<br>";
}}
if(is_array($_GET['onvan'])){
foreach($onvan as $onvani){
echo $onvani;
echo "<br>";
}}


if(is_array($_GET['id'])){
foreach($idi as $id){
echo $id;
echo "<br>";

mysql_query("SET CHARACTER SET utf8",$handle);
$query = "update rozane set showlink='1',onvan='$onvani',url='$urli' WHERE id='$id'";
$result=mysql_query($query,$handle);
}}
if($result==true){
echo "ارسال شد.";
}else{
echo "ارسال نشد.";
}
mysql_close($handle);
}
مشکل چیه؟
متشکرم.

ravand
دوشنبه 19 تیر 1391, 20:49 عصر
مشکل رو با این روش حل کردم

$idi=$_GET['id'];
if(is_array($idi)){
foreach($idi as $key=> $id){
$onvani = $_GET['onvan'][$key];
$urli=$_GET['url'][$key];
mysql_query("SET CHARACTER SET utf8",$handle);
$query = "update rozane set showlink='1',onvan='$onvani',url='$urli' WHERE id='$id'";
$result=mysql_query($query,$handle);
}}
if($result==true){
echo "ارسال شد.";
}else{
echo "ارسال نشد.";
}

nariman_t
دوشنبه 19 تیر 1391, 22:20 عصر
تزاه خواستم بگم query رو داخل حبقه اجرا کن درست میشه خودت انگار انجام دادی

ravand
دوشنبه 19 تیر 1391, 22:38 عصر
ببخشید حبقه چیه؟

nariman_t
شنبه 07 مرداد 1391, 21:25 عصر
منظورم حلقه بودش معذرت اشتباه تایپی بود