1

フィールド post_id、feature_image、order、およびlandscapeを持つprojectsという名前のSQLデータベースがあります。ランドスケープは、すべての集中的な目的のためのカテゴリです。

私が到達しようとしている機能の広範な概要として;

ページロード 1 つのレコードセットは、分類されたすべての post_id# (1、2、4、5、8、12... など) を取得し、特に 1、2、3、4、5... などの番号を付け直します。各 post_id# の番号を付け直すと、次に、それらの値を取る order と呼ばれるフィールドで SQL に更新を送信します。次に、2 つのレコードセット (1 つは奇数、もう 1 つは偶数) は、post_id ではなく、order# とすべての関連情報 (この場合は注目の画像) をロードし、カテゴリに基づいて正しい順序で画面に 2 列の写真を出力します。読み込まれました。

post_idで注文できることは理解していますが、それは問題ではありません。特に、ページの読み込み時にすべての数字を正確に 1、2、3、4、5、6 などに並べ替える機能が必要です。

if ステートメントの最初の部分だけを投稿しました。すべてが変数などで機能します。唯一の問題は、フィールドの順序でダーン変数をデータベースに送信できないことです。私はこれにあまりにも長い間取り組んできましたが、現時点で何が間違っているのかわかりません。エラーはありません。注文フィールドだけがデータベースで NULL のままです。

このコードを修正できる人、またはなぜ私がすべてを下手くそにしているのか教えてくれる人のために、ちらつきのパレードを投げます。そうするより良い方法があります。

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  break;    
case "long":
case "int":
  $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  break;
case "double":
  $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  break;
case "date":
  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  break;
case "defined":
  $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  break;
}
return $theValue;
}
}

mysql_select_db($database_connTest, $connTest) or die("cannot select database");
$query_RS_Odd = "SELECT projects.post_id, projects.feature_image, projects.`order` FROM projects WHERE projects.landscape = 'landscape'";
$RS_Odd = mysql_query($query_RS_Odd, $connTest) or die(mysql_error());
$row_RS_Odd = mysql_fetch_assoc($RS_Odd);
$totalRows_RS_Odd = mysql_num_rows($RS_Odd);
?>

<?php do {
if ($row_RS_Odd['post_id'] == 1){ 
    $resort_next = 1;
    mysql_query("UPDATE projects SET order=".$resort_next." WHERE post_id=".$row_RS_Odd['post_id']."");
    echo $row_RS_Odd['post_id'];
    echo $resort_next;
}
else {
echo 'No records found';
}
 } while ($row_RS_Odd = mysql_fetch_assoc($RS_Odd)); ?>
4

1 に答える 1

0

ステートメントでmysql の予約order語を正しく引用していますが、ステートメントselectでそれを行うのを忘れています。update

mysql_query("UPDATE projects SET order=".$resort_next." WHERE post_id=".$row_RS_Odd['post_id']."");

次のようにする必要があります。

mysql_query("UPDATE projects SET `order`=".$resort_next." WHERE post_id=".$row_RS_Odd['post_id']."");

mysql_*関数は非推奨であり、実際には PDO / mysqli および準備済みステートメントに切り替える必要があることに注意してください。

于 2012-10-01T17:29:43.500 に答える