0

mysqlのテーブルの列を更新したい。基本的に、列はそのdbテーブルのエントリのフラグです。

列を変更すると、すべての値が0にリセットされ、目的の行が1に設定されます。このため、次のようなpost.phpファイルがあります。

<?php
require_once('class.uuid.php');

$connection = mysql_connect("---logindetailshere---");
$db = mysql_select_db("---dbnamehere---",$connection);

switch($_REQUEST['action']){
    case ...
        break;
    case ...
            break;
    case 'changeDisp':
        changeDisp($_REQUEST['uid']);
        break;
}

mysql_close($connection);

...

function changeDisp($uid){
    global $connection, $db;
    $q_string = "UPDATE Questions SET Displayed = 0";
    $query = mysql_query($q_string,$connection) or die( sendError(mysql_error() . '<br/><br/>' . $q_string) );
    $q_string = "UPDATE Questions SET Displayed = 1 WHERE Uid='${uid}'";
    $query = mysql_query($q_string,$connection) or die( sendError(mysql_error() . '<br/><br/>' . $q_string) );
}

?>

Webページで、アイテムとアイテムの横にラジオボタンを表示します。目的は、ラジオボタンを選択し、選択したアイテムのフラグ1を設定するために投稿することです。このため、item.phpファイルがあります。

    <?php
        $i = 1;
        foreach ($qitem as &$q) {
            $options = explode(";", $q["Options"]);
            $displayed = '';
            if ($q["Displayed"] == 1) { $displayed='checked="yes"'; }

            echo("<div class='item' name='".$q["iUid"]."'>");
            echo("<div class='count'>".$i.".</div>");
            echo ("<div class='radio'><input type='radio' onclick='changeDisp(&#34;".$q["Uid"]."&#34;)' name='disp' ".$displayed."></div>");
            echo("<div class='left'>");
            echo("<h4>".$q["Value"]."</h4>");
            echo("<div class='details'>Typ: ".$q["Type"]."</div>");
            echo("<div class='details'>Skala: ".$options[0]." / ".$options[1]."</div>");
            echo("</div>");
            echo("</div>");
            $i++;
        }   
    ?>

ここでは、ラジオボタンを使用して関連アイテムを選択しています。firebugを使用して一意のID値を確認しました。値は問題ありません。ラジオボタンをクリックして、onclick=changeDisp()関数をトリガーしたいだけです。

ページがそれ自体をリロードせず、選択したフラグを1に変更しない理由がわかりません。この問題の解決に協力していただけませんか。

前もって感謝します。

4

1 に答える 1

1

onclick関数を使用して、javascript、jQuery、またはajax呼び出しを使用せずにphp関数を呼び出すことはできません。item.phpページからpost.phpを呼び出して結果を返すajaxスクリプトを作成でき ます。

必要な関数を作成する例を次に示します。$uidこれは、実際のユーザー入力ではなく、ラジオボタンからのものであることを前提としています。ユーザーが何かを直接入力できる場合は、準備されたステートメントを使用する必要があります

 function changeDisp($uid)
{
$Mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
    if ($Mysqli->connect_errno)
    {
        echo "Failed to connect to MySQL: (" . $Mysqli->connect_errno . ") " . $Mysqli->connect_error;
        $Mysqli->close();
    }           
    $query = "UPDATE Questions SET Displayed = 1 WHERE Uid='".$uid."'";     
    $update = $Mysqli->query($query);
    if($update)
    {
        return true;
    }
    return false;
}
于 2013-01-12T02:43:24.117 に答える