2012-04-11 11 views
0
DONOR 
donor-nic----username-----status 
111----------ali----------available 
222---------usman--------notavailable 

他はINSERTまたはUPDATE使用してIF-ELSEのPHP MYSQL

DONATION 
donation_id------donor_nic-----date--- 
1----------------111----------2012/03/04 
2---------------111-----------2012/06/07 
3----------------111---------2012/07/08 
4----------------222---------2012/03/03 

日は、私はそれを挿入する存在しない場合、すでに をdonor_nicに対応出るされている場合、今私は、日付を更新したいです新しい日付。

私は..

SELECT donor.donor_nic, donation.lastdonationdate 
FROM donor 
JOIN donation ON donor.donor_nic = donation.donor_nic 
WHERE username = 'ali' 
GROUP BY donation.lastdonationdate 

今、このクエリはphpMyAdminの中で動作します..しかし、私は私のページでこれを使用するとき...それは日付と一致しないdonor_nic対応に応じてすべての日付を取得するには、このクエリを使用していますこの

$sql= SELECT donor.donor_nic, donation.lastdonationdate 
    FROM donor 
    JOIN donation ON donor.donor_nic = donation.donor_nic 
    WHERE username = 'ali' 
    GROUP BY donation.lastdonationdate 

$res=mysql_query($sql, $con); 

if($res == $date) 
{ 
echo "update"; 
} 
else 
{ 
echo "insert"; 
} 

が、この事didntの仕事のよう日付をマッチングしています..私は(のif-else)条件付きなステートメントで間違いを犯していかもしれ.. plzは私を助けて私は何をすべき...事前

で 感謝を
+0

「うまくいかない」とは、十分な問題の説明ではありません。デバッガを使ってコードをステップ実行しようとしましたか? –

+0

いいえ..私はphpで新しいです。私は "デバッガ"について知っています。私の質問はphpmyadminで正しく実行されますが、私はいつも "更新"を返します..私は新しい日付を入力しても – maham

答えて

1

$res変数は結果セットオブジェクトであり、文字列または日付の値ではありません。 $dateをどこで定義しましたか?

あなたは、あなたのクエリから使用を個々の結果を取得したい場合:

$res=mysql_result(mysql_query($sql, $con),0,1); 

これはそれが,0,1が引数として定義するものである(、あなたの結果の最初の行から二番目の列を返します。 mysql_result関数)は、あなたが探している日付だと思います。

mysql_resultためのドキュメントをチェック:

するmysql_queryは常にアレイではなく、特定の値を返します。 $dateのバリエールが適切な形式であると仮定すると、上記が有効になります。

EDITまたあなたは、あなたが$SQLを定義する方法を変更する必要がある。このように、それを引用符で囲み

:私は変数に設定されているソリューションでは

$sql= "SELECT donor.donor_nic, donation.lastdonationdate 
    FROM donor 
    JOIN donation ON donor.donor_nic = donation.donor_nic 
    WHERE username = 'ali' 
    GROUP BY donation.lastdonationdate"; 
+0

$ sql = SELECT donor.donor_nic、寄付。ドナー FROM lastdonationdateはdonation.lastdonationdate $ RES =するmysql_query($ sqlを、$詐欺)BY donor.donor_nic = donation.donor_nic ユーザ名= 'アリ GROUP ON寄付を登録しよう。 if($ res == $ date) { echo "update"; } else { echo "insert"; } – maham

+0

私は$ res = mysql_result(mysql_query($ sql、$ con)、0,1)を入れます。しかし、私は新しい日付を入力しても "更新"を返し、可変日付を宣言しています... $ date = $ _REQUEST ['lastdonationdate']::( – maham

+0

あなたはコードをデバッグし、 'echo $ res。 ' '$ res = mysql_result(mysql_query($ sql、$ con)、0,1); 'の後の行に' - $ date; 'を追加すると、比較している2つの値が表示されます。 –

0

- テストするNICもう一度、テストする日付をスクリプトの先頭に設定します。 私は必要があると感じたところで編集されましたが、基本的にスクリプトは変数に設定されます(フォームなどで更新するために更新できます)。 その後、必要なnicと日付の配列を返す最初のmysqlクエリを作成します。 返される値を取得するには、ループ内のループが必要です。 値(とキー)とそこに格納されている配列は、あらかじめ決められた変数を使って検索し、挿入/更新が成功したかどうかを知らせます。 明らかに仕事が必要ですが、仕事は終わります。

$nic = "111"; 
$date2add = "14/12/13"; 

$sql="SELECT donor.donor-nic, donation.date 
FROM donor 
JOIN donation ON donor.donor-nic = donation.donor-nic 
WHERE username = 'ali' 
GROUP BY donation.date"; 

$res=mysqli_query($mysqli, $sql); 

//may need error checking here to verify that $res has data. 
$row = mysqli_fetch_array($res, MYSQLI_ASSOC); 

//initiate a loop to select values 
while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC)) { 
    //initiate a loop to store values into an array so that we can compare against later. 
foreach ($row as $keys => $val) { 
    echo "<br />$keys...$val<br />"; 
    $keysar[] = $keys; 
    $valsar[] = $val; 
} 
} 


//using values above we will search the $valsar (created in the above loop) for $date2add (the date req. to be searched against) 
if (in_array($date2add, $valsar) == $date2add) { 
$sql = "UPDATE donation SET date = '$date2add' WHERE nic='$nic'"; 
$res = mysqli_query($mysqli, $sql) or trigger_error("Query: $sql\n<br />MySQL Error: " . mysqli_error($mysqli)); 
if ($res) { 
    echo "Record updated correctly<br />"; 
} else { 
    echo "failed to update<br />"; 
} 
} else { 
    //these variables will have to set from somewhere if the script will insert correctly. 
$sql = 'INSERT INTO donation ("$donation_id", "$nic", "$date")'; 
$res = mysqli_query($mysqli, $sql); 
if (mysqli_affected_rows($mysqli) == 1) { 
    echo "it inserted correctly<br />"; 
} else { 
    echo "failed to insert<br />"; 
} 
} 
関連する問題