0

私のウェブサイトのユーザーは、自分の動物をコンテストに応募することができます。私のコードは完璧に動作しますが、大きな問題があります。ユーザーがサブスクライブを押すとページがリロードされますが、isset はボタン自体のエコーの後であるため、ボタンテキストが「サブスクライブ済み」に変わる前にページを更新する必要があります。おそらくご覧のとおり、順序を変更すると問題が発生します。誰が私を助けることができますか? 私自身、選択肢がありません。(変数などを翻訳しました)

<form action="" method="post" name="frmSubscribe">
<?php
$Counter = 0;
$sql = "Select * from Animals where username='".$_SESSION['User']."' ";
$result = mysql_query($sql);
while($row=mysql_fetch_array($result)){

    echo $row['Animalname'];
    $Duiven[] = $row['AnimalID'];
    $Username[] = $row['username'];

    ?>
    <input type='submit' <?php echo "name= ".$Buttons[$Counter].""; ?> value='<?php 
    $sqlSubscribed = "SELECT * FROM Competitionresults WHERE AnimalID='".$Animals[$Counter]."'";
    $resultSubscribed = mysql_query($sqlSubscribed);
    if(mysql_num_rows($resultSubscribed) == 0){ echo "Subscribe";}
    else {echo "deregister";}
    ?>'><br/><?php
    $Teller++;
    }

if (isset($_POST['btnSubscribe1'])){

$sqlCheck = "SELECT * FROM Competitionresults WHERE AnimalID='".$Animals[0]."'";
    $resultCheck = mysql_query($sqlCheck);
    if (mysql_num_rows($resultCheck) == 0){

    $sql1 = "INSERT INTO Competitionresuls (AnimalID, username) VALUES ('".$Animals[0]."','".$Username[0]."')";
    $result1 = mysql_query($sql1);
    $row=mysql_fetch_array($result1);
    ?><?php
    }
    }

...次の動物についても同様です。

4

4 に答える 4

1

出力バッファリングを使用する必要があると思います。ページの先頭に ob_start() を配置すると、実際の入力コードの代わりに任意のプレースホルダーが出力されます。

[SUMBIT]

それ以外の:

<input type='submit' ....

ページの最後で、バッファリングされたコンテンツを取得します。

$content = ob_get_clean()

送信ボタンを正しいコードに置き換えます。

$content = str_replace('[SUBMIT]', 'Your actual submit button code here...', $content);

そして今、コンテンツを出力します:

echo $content;
于 2012-10-10T10:44:30.593 に答える
1

クイックフィックスはJavaScriptにすることができます

echo '<span id="someid" >Subscribe</span>';

そして着替える時

echo "<script>document.getElementById('someid').innerHTML = 'Subscribed';</script>";

将来的には、 PHP MVC フレームワークを使用することを強くお勧めします

于 2012-10-10T10:45:45.020 に答える
0

ページの上にある郵便番号を使用して、ページをロードできます。以下のコードのように使用してください。

 <?php
    if (isset($_POST['btnSubscribe1'])){

    $sqlCheck = "SELECT * FROM Competitionresults WHERE AnimalID='".$Animals[0]."'";
        $resultCheck = mysql_query($sqlCheck);
        if (mysql_num_rows($resultCheck) == 0){

            $sql1 = "INSERT INTO Competitionresuls (AnimalID, username) VALUES ('".$Animals[0]."','".$Username[0]."')";
           mysql_query($sql1);
           header('Location: samefilename.php');
           die;
         }

        }
    ?>
    <form action="" method="post" name="frmSubscribe">
    <?php
    $Counter = 0;
    $sql = "Select * from Animals where username='".$_SESSION['User']."' ";
    $result = mysql_query($sql);
    while($row=mysql_fetch_array($result)){

        echo $row['Animalname'];
        $Duiven[] = $row['AnimalID'];
        $Username[] = $row['username'];

        ?>
        <input type='submit' <?php echo "name= ".$Buttons[$Counter].""; ?> value='<?php 
        $sqlSubscribed = "SELECT * FROM Competitionresults WHERE AnimalID='".$Animals[$Counter]."'";
        $resultSubscribed = mysql_query($sqlSubscribed);
        if(mysql_num_rows($resultSubscribed) == 0){ echo "Subscribe";}
        else {echo "deregister";}
        ?>'><br/><?php
        $Teller++;
        }


        }
于 2012-10-10T10:50:15.187 に答える
0

最も簡単な解決策は、上に移動しissetます。アクションは常に最初に処理する必要があることを知っているためです。その後、ビューで作業します

<form action="" method="post" name="frmSubscribe">
<?php

if (isset($_POST['btnSubscribe1'])){

$sqlCheck = "SELECT * FROM Competitionresults WHERE AnimalID='".key($_GET)."'";
$resultCheck = mysql_query($sqlCheck);
if (mysql_num_rows($resultCheck) == 0){

$sql1 = "INSERT INTO Competitionresuls (AnimalID, username) VALUES ('".key($_GET)."','".$_SESSION['User']."')";
$result1 = mysql_query($sql1);
$row=mysql_fetch_array($result1);

}
}

$Counter = 0;
$sql = "Select * from Animals where username='".$_SESSION['User']."' ";
$result = mysql_query($sql);
while($row=mysql_fetch_array($result)){

echo $row['Animalname'];
$Duiven[] = $row['AnimalID'];
$Username[] = $row['username'];

?>
<input type='submit' <?php echo "name= ".$Buttons[$Counter].""; ?> value='<?php 
$sqlSubscribed = "SELECT * FROM Competitionresults WHERE AnimalID='".$Animals[$Counter]."'";
$resultSubscribed = mysql_query($sqlSubscribed);
if(mysql_num_rows($resultSubscribed) == 0){ echo "Subscribe";}
else {echo "deregister";}
?>'><br/><?php
$Teller++;
}
于 2012-10-10T10:52:42.587 に答える