mysql-レコードが複数のPHPである場合にすべてのセルに挿入
これが私の大きなプログラムです!
注:すべてのコードが1ページにあります。
友だち、すべて問題ありませんが、問題は「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>'; } ?>
ここでは、ユーザーがボタンをクリックした場合は、テーブルに情報を送信します。もう一度言いますが、1つのレコードのすべてが問題ありません。複数のレコードがある場合に問題が発生し、現在は「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の場合、そのユーザーは記録を持っているだけなので問題はありません。
テーブル:
テーブルサイト:
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)
答え :
解決策:
各部分を独自の形式でラップすることをお勧めします:
<?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++;
}
?>
このコードにはいくつかの小さな修正があります。これにより、それぞれが一意のIDを持つ多数のフォームが、同じ場所に投稿されます。
答え :
解決策:
@Twistyの回答に関して、提出の問題に対する最終的な解決策を提示したいと思います。
まず、更新するrawを定義する必要があるため、更新する ind
を更新ステートメントに指示する必要があります。
これを行うには、送信フォームの ind
をoutupdateステートメントに渡す必要があります。非表示の入力フィールドを追加してindを渡します。
このような値。
;
次に、値を取得し、以下を追加してデータを更新する必要があります。
($ _ POST ['ind'])
したがって、最終的な解決策は次のようになります。
echo'';
echo''; //改行
エコー'
';
echo'';
エコー'
';
エコー'
';
および更新ステートメント:
$ ins = "UPDATE $ db_table
セットする
customer_comment ='"。mysql_escape_string($ _ POST ['explain'])。"'、
投票='"。mysql_escape_string($ _ POST ['投票'])。"'
WHERE ind = "。($ _ POST ['ind']);//ind値を定義する
そしてワラ、それは機能します。
注:
念のために言っておきますが、@Twistyの更新されたコードとその最終的な解決策を使用しました。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。