вот моя большая программа!
Примечание: все коды находятся на одной странице.
freinds, все в порядке, но проблема в строке «while» и когда у меня более одной записи.
здесь мы подключаемся к базе данных и извлекаем информацию о пользователях, которые получили услугу других пользователей.
<form name="form2" method="post" action="" accept-charset='UTF-8'> <?php $id=$fgmembersite->UserID(); echo "$id"; ?> <?php $db_host = 'localhost'; $db_name= 'site'; $db_table= 'action'; $db_user = 'root'; $db_pass = ''; $con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده"); $selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده"); mysql_query("SET CHARACTER SET utf8"); $dbresult=mysql_query("SELECT tablesite.name, tablesite.family, tablesite.username, tablesite.phone_number, tablesite.email, action.service_provider_comment, action.price, action.date, job_list.job_name, relationofaction.ind FROM $db_table INNER JOIN job_list on job_list.job_id=action.job_id INNER JOIN relationofaction on relationofaction.ind=action.ind INNER JOIN tablesite on tablesite.id_user=action.service_provider_id AND action.customer_id='$id'",$con);
здесь печатает все время, когда текущий пользователь получил услугу другого пользователя. это может быть 0 или n.
проблема здесь. когда услуги более 1, и когда я пытаюсь вставить информацию в таблицу, сначала выберите голосование и объясните вставки во все ячейки.
каждая кнопка должна отправлять информацию в отдельное поле, не все файлы!
while($amch=mysql_fetch_assoc($dbresult)) {?> <?php echo'<div dir="rtl">'; echo "نام خدمت دهنده: "."   ".$amch["name"]." ".$amch["family"]."   "."شماره تماس: ".$amch["phone_number"]."   "."ایمیل: ".$amch["email"].'<br>'. "شغل انجام شده: ".$amch["job_name"].'<br>' ."تاریخ انجام عملیات: ".$amch["date"].'<br>' ."هزینه ی کار: ".$amch["price"]." تومان".'<br>' .$amch["service_provider_comment"].'<hr/>'; echo'<label for="explain">اگر توضیحاتی برای ارائه در این باره دارید، ارائه دهید</label> <br />'; echo'<textarea name="explain" id="explain" cols="" rows="" style="width:300 ;height:300"></textarea>'.'<br/>'; echo'<label for="rate">امتیاز این عملیات را ثبت نمایید: </label> <br />'; echo '<select name="vote">'; echo '<option value="عالی">عالی</option>'; echo '<option value="عالی">خوب</option>'; echo '<option value="عالی">متوسط</option>'; echo '<option value="عالی">بد</option>'; echo '</select>'; echo'<br/>'; echo '<input type="submit" name="submit" value="ارسال نظر شما"/>'; echo'<hr/>'; echo'<hr/>'; echo'</div>'; } ?>
вwhile($amch=mysql_fetch_assoc($dbresult)) {?> <?php echo'<div dir="rtl">'; echo "نام خدمت دهنده: "."   ".$amch["name"]." ".$amch["family"]."   "."شماره تماس: ".$amch["phone_number"]."   "."ایمیل: ".$amch["email"].'<br>'. "شغل انجام شده: ".$amch["job_name"].'<br>' ."تاریخ انجام عملیات: ".$amch["date"].'<br>' ."هزینه ی کار: ".$amch["price"]." تومان".'<br>' .$amch["service_provider_comment"].'<hr/>'; echo'<label for="explain">اگر توضیحاتی برای ارائه در این باره دارید، ارائه دهید</label> <br />'; echo'<textarea name="explain" id="explain" cols="" rows="" style="width:300 ;height:300"></textarea>'.'<br/>'; echo'<label for="rate">امتیاز این عملیات را ثبت نمایید: </label> <br />'; echo '<select name="vote">'; echo '<option value="عالی">عالی</option>'; echo '<option value="عالی">خوب</option>'; echo '<option value="عالی">متوسط</option>'; echo '<option value="عالی">بد</option>'; echo '</select>'; echo'<br/>'; echo '<input type="submit" name="submit" value="ارسال نظر شما"/>'; echo'<hr/>'; echo'<hr/>'; echo'</div>'; } ?>
здесь мы говорим, что если пользователь нажал кнопку, отправьте информацию в таблицу. еще раз я говорю, что все вещи для одной записи в порядке, проблема в том, что у нас есть более одной записи, и теперь проблема в «while», но я не знаю, как исправить эту проблему.
<?php if(isset($_POST['submit'])) { $db_host = 'localhost'; $db_name= 'site'; $db_table= 'action'; $db_user = 'root'; $db_pass = ''; $con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده"); mysql_query("SET NAMES 'utf8'", $con); mysql_query("SET CHARACTER SET 'utf8'", $con); mysql_query("SET character_set_connection = 'utf8'", $con); $selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده"); $ins ="UPDATE $db_table SET customer_comment='" . mysql_escape_string($_POST['explain']) . "', vote='" . mysql_escape_string($_POST['vote']) . "' WHERE ind=ind"; $saved=mysql_query($ins ); mysql_close($con); echo '<script language="javascript">'; echo 'alert("نظر شما با موفقیت ثبت شد")'; echo '</script>'; echo '<script>window.location.href = "action_perfomed_agree.php";</script>'; } ?>
это формы человека, который имеет 3 формы
и вот мой стол после отправки
как вы видите, у нас есть повторные записи, но где customer_id = 37 нет проблем, потому что у этого пользователя есть только запись.
столы:
tablesite:
1 id_user int(11) 2 name varchar(128) utf8mb4_persian_ci 3 family varchar(128) utf8mb4_persian_ci 4 email varchar(64) utf8mb4_persian_ci 5 phone_number varchar(16) utf8mb4_persian_ci 6 username varchar(16) utf8mb4_persian_ci 7 password varchar(32) utf8mb4_persian_ci 8 confirmcode varchar(32) utf8mb4_persian_ci
связь
1 user_name varchar(255) utf8mb4_persian_ci 2 job_id int(255) 3 comments varchar(255) 4 user_id int(255)
RelationOfaction
1 service_provider_id int(20) 2 customer_id int(20) 3 ind int(20)
действие
1 job_id int(11) 2 service_provider_id int(10) 3 customer_id int(10) 4 date date 5 price int(255) 6 vote varchar(255) utf8mb4_persian_ci 7 service_provider_comment varchar(255) utf8mb4_persian_ci 8 customer_comment varchar(255) 9 ind int(10)
Что касается ответа @Twisty, я хотел бы прийти к моему окончательному решению проблемы с отправкой.
Прежде всего, нам нужно определить, какое сырье нужно обновлять, поэтому вам нужно сообщить инструкции по обновлению, которая должна быть обновлена.
Для этого нам нужно передать ind
в форму отправки, чтобы обновить инструкцию, мы добавили скрытое поле ввода и ind
значение ind
подобное этому.
<input type="hidden" name="ind" value="' . $amch["ind"] . '">;
Затем нам нужно получить значение и обновить наши данные, добавив следующее:
($_POST['ind'])
Итак, окончательное решение будет выглядеть так:
echo '</select>'; echo '<input type="hidden" name="ind" value="' . $amch["ind"] . '">'; //new line echo '<br/>'; echo '<input type="submit" name="submit" value="ارسال نظر شما"/>'; echo '<hr/>'; echo '<hr/>';
и в вашем заявлении об обновлении:
$ins = "UPDATE $db_table SET customer_comment='" . mysql_escape_string($_POST['explain']) . "', vote='" . mysql_escape_string($_POST['vote']) . "' WHERE ind=".($_POST['ind']); // to define the ind value
И вала, это работает.
ЗАМЕТКА:
Просто станьте продуктом, я использовал обновленный код @Twisty и окончательное решение на нем.
Я бы посоветовал обернуть каждую порцию в ее собственной форме:
<?php $id = $fgmembersite->UserID(); echo "$id"; $db_host = 'localhost'; $db_name= 'site'; $db_table= 'action'; $db_user = 'root'; $db_pass = ''; $con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده"); $selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده"); mysql_query("SET CHARACTER SET utf8"); $dbresult=mysql_query("SELECT tablesite.name, tablesite.family, tablesite.username, tablesite.phone_number, tablesite.email, action.service_provider_comment, action.price, action.date, job_list.job_name, relationofaction.ind FROM $db_table INNER JOIN job_list ON job_list.job_id=action.job_id INNER JOIN relationofaction ON relationofaction.ind=action.ind INNER JOIN tablesite ON tablesite.id_user=action.service_provider_id AND action.customer_id='$id'", $con); $i = 1; while($amch=mysql_fetch_assoc($dbresult)){ echo "<form id='form_$i' method='post' action='{$_SERVER['PHP_SELF']}' accept-charset='UTF-8'>\r\n"; echo '<div dir="rtl">'; echo "نام خدمت دهنده: "."   ".$amch["name"]." ".$amch["family"]."   "."شماره تماس: ".$amch["phone_number"]."   "."ایمیل: ".$amch["email"].'<br>' ."شغل انجام شده: ".$amch["job_name"].'<br>' ."تاریخ انجام عملیات: ".$amch["date"].'<br>' ."هزینه ی کار: ".$amch["price"]." تومان".'<br>' .$amch["service_provider_comment"].'<hr/>'; echo '<label for="explain">اگر توضیحاتی برای ارائه در این باره دارید، ارائه دهید</label> <br />'; echo '<textarea name="explain" id="explain" cols="" rows="" style="width:300 ;height:300"></textarea>'.'<br/>'; echo '<label for="rate">امتیاز این عملیات را ثبت نمایید: </label> <br />'; echo '<select name="vote">'; echo ' <option value="عالی">عالی</option>'; echo ' <option value="عالی">خوب</option>'; echo ' <option value="عالی">متوسط</option>'; echo ' <option value="عالی">بد</option>'; echo '</select>'; echo '<br/>'; echo '<input type="submit" name="submit" value="ارسال نظر شما"/>'; echo '<hr/>'; echo '<hr/>'; echo '</div>'; echo "</form>\r\n"; $i++; } ?>
в<?php $id = $fgmembersite->UserID(); echo "$id"; $db_host = 'localhost'; $db_name= 'site'; $db_table= 'action'; $db_user = 'root'; $db_pass = ''; $con = mysql_connect($db_host,$db_user,$db_pass) or die("خطا در اتصال به پايگاه داده"); $selected=mysql_select_db($db_name, $con) or die("خطا در انتخاب پايگاه داده"); mysql_query("SET CHARACTER SET utf8"); $dbresult=mysql_query("SELECT tablesite.name, tablesite.family, tablesite.username, tablesite.phone_number, tablesite.email, action.service_provider_comment, action.price, action.date, job_list.job_name, relationofaction.ind FROM $db_table INNER JOIN job_list ON job_list.job_id=action.job_id INNER JOIN relationofaction ON relationofaction.ind=action.ind INNER JOIN tablesite ON tablesite.id_user=action.service_provider_id AND action.customer_id='$id'", $con); $i = 1; while($amch=mysql_fetch_assoc($dbresult)){ echo "<form id='form_$i' method='post' action='{$_SERVER['PHP_SELF']}' accept-charset='UTF-8'>\r\n"; echo '<div dir="rtl">'; echo "نام خدمت دهنده: "."   ".$amch["name"]." ".$amch["family"]."   "."شماره تماس: ".$amch["phone_number"]."   "."ایمیل: ".$amch["email"].'<br>' ."شغل انجام شده: ".$amch["job_name"].'<br>' ."تاریخ انجام عملیات: ".$amch["date"].'<br>' ."هزینه ی کار: ".$amch["price"]." تومان".'<br>' .$amch["service_provider_comment"].'<hr/>'; echo '<label for="explain">اگر توضیحاتی برای ارائه در این باره دارید، ارائه دهید</label> <br />'; echo '<textarea name="explain" id="explain" cols="" rows="" style="width:300 ;height:300"></textarea>'.'<br/>'; echo '<label for="rate">امتیاز این عملیات را ثبت نمایید: </label> <br />'; echo '<select name="vote">'; echo ' <option value="عالی">عالی</option>'; echo ' <option value="عالی">خوب</option>'; echo ' <option value="عالی">متوسط</option>'; echo ' <option value="عالی">بد</option>'; echo '</select>'; echo '<br/>'; echo '<input type="submit" name="submit" value="ارسال نظر شما"/>'; echo '<hr/>'; echo '<hr/>'; echo '</div>'; echo "</form>\r\n"; $i++; } ?>
В этом коде вы найдете ряд небольших исправлений. Это приведет к появлению нескольких форм, каждый с уникальным идентификатором, размещение на том же месте.