0

私は、ユーザーが自分の写真に写っているのを見て、(私はこの写真に写っています) コールアウトをクリックするフォト コンテストを作成しました。

これにより、入力するフォームがポップアップ表示されます。フォームからデータを収集してデータベースに保存するのに問題はありませんでした。

私の問題は、彼らが写っている写真を参照できるようにする必要があることです.

最初に、写真の名前/ID を最初のページから 2 番目のポップアウト コンペティション エントリ フォーム ページに転送する必要があります。そこから、両方をデータベースに保存できるようにする必要があります。

助言がありますか?セッション変数を使用して、最初のページから 2 番目のページに写真の名前/ID を呼び出してみました。

どんな助けでも大歓迎です。


更新されたコード:

ページ 1: フォト ギャラリーのサンプル。非表示のフォーム フィールドを使用してデータを呼び出してみましたが、これらの非表示のフィールドから写真情報が呼び出されないことは明らかです。

<li>
<a class="thumb" name="007" id="007" href="images/9133440_DSC_0087.jpg" title="Title #6"><img src="images/9133440_DSC_0087_thumb.jpg" alt="Title #6" /></a>
</li>
</ul>
</div>

<div id="inphoto">

<a href="#" onclick="wopen('compentry.php?imageid=<?php echo $imageID; ?>', 'popup', 448, 590); return false;"><img src="assets/inphotobutton.jpg"></a>

</div>

ページ 2: フォーム付きのコンペティション エントリー ページ。

<div id="form">

<form name="epcomp" id="epcomp" method="GET" action="form.php" >

<p class="name"><label>Full Name:</label><br/> <input type="text" name="name" id="name" value="Your Name" onblur="if(this.value == '') { this.value='Your Name'}" onfocus="if (this.value == 'Your Name') {this.value=''}" maxlength="30" required/></p>

<p class="email"><label>Your Email:</label><br/> <input type="email" name="email" id="email" value="Your email" onblur="if(this.value == '') { this.value='Your email'}" onfocus="if (this.value == 'Your email') {this.value=''}" maxlength="60" required /> </p>

<p class="entry"><label>Your favourite festival moment: <span style="font-size:10px;">(Max 50 words)</label> <br/> 

<p><textarea cols="40" rows="5" name="entry" id="entry" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" maxlength="50" required>Enter you answer here...</textarea></p>

<p class="button"><input class="button" type="submit" value="Enter Competition" name="formSubmit"/></p>

<?php echo '<input type="hidden" name="photoId" value="' . $_GET['imageID'] . '">' ?> 

</form>

ページ 3: マイ フォーム データ ページ。

$imageID = $_GET['imageID'];
$varName = $_GET['name'];
$varEmail = $_GET['email'];
$varEntry = $_GET['entry'];

$query = "insert into comp_entry (imageID, name, email, entry) values ('$imageID' , '$varName' , '$varEmail' , ' $varEntry')";

$qresult = mysql_query($query);
4

1 に答える 1

0

inputタグに値はありません。

<form method="POST" action="compentry.php" onClick="wopen('compentry.php', 'popup', 448, 590); return false;">

<input type="hidden" name="photoName">
<input type="hidden" name="photoID">
<input type="image" src="assets/inphotobutton.jpg" name="submit" value="" class="submit" alt="Submit">
</form>

してもいいです:

  1. 取得値を挿入<form method="POST" action="compentry.php?imageid=<?php echo ...; ?>"し、2 番目のフォームで取得します
  2. (タグ<input type="hidden" name="photoId" value="...">を忘れた)を使用して投稿変数を挿入します。value

送信ボタンがないため、例で POST を使用することはまだできません。<input type="image"あなたが必要とする代わりにinput type="submit"。ただし、送信しても別のウィンドウは開かないため、別の方法で変数を渡す必要があります。

したがって、私は最初のオプションにとどまりますが、<form>必須ではありませんので、次のようなコードを作成してください。

<a href="#" onclick="wopen('compentry.php?imageid=<?php
  echo $imageID; // here goes PHP code
?>', 'popup', 448, 590); return false;">Click to open form</a>

コンペティション形式では、 を使用することで、自分がどのような絵を描いているかを知ることができます$_GET['imageid']

編集

目標を達成する方法を決定する必要があります。使用するform場合は、get または post メソッドでパラメーターを渡すことができます。ただし、get メソッドを使用して変数を URL に渡すこともできます。

2 番目の方法の方が簡単なので、タグのイベントでformこのサイトを呼び出してタグ全体を削除し、イメージ ID を渡すように言いましたが、好きなタグを選択できます (最初のコメントから使用することをお勧めします)。aonclickdiv

この行のページを開くと、この呼び出しが行われます。ここで、画像 IDonclick="wopen('compentry.php?imageid=***', 'popup', 448, 590);を挿入する必要があります。***PHPecho関数を提案しましたが、これが通常の方法です。

最初のページはこれ以上必要ありません。要素をクリックすると、ポップアップが作成され、 get メソッドによって imageid 変数を渡して compentry.php にリクエストが送信されます。inputフォーム、メソッド get、アクション compentry.php、非表示フィールド "imageid" valueを作成した場合も同様です。URL compentry.php?imageid= を呼び出すことは、これらすべてのものよりもはるかに簡単であることがわかりますform

これですべてです。準備ができたら、ポップアップ ページをコーディングする必要があります。これはあなたの 2 番目のコメントです。このイメージ ID は によって取得され$_GET["imageid"]ます。したがって、これも多くのフィールドを持つフォームである場合、ここでは post メソッド (get ではない) が推奨されます。

だからこの行

<input type="hidden" name="photoId" value="photoID">

(PHPで)次のように見えるはずです

echo '<input type="hidden" name="photoId" value="' . $_GET['imageid'] .'">

1 ページ目で取得した画像 ID を$_GET["imageid"]2 ページ目の HTML に配置して、最後のページにさらに送信できるようにする必要があります。

概要

  1. フォトギャラリーは を使用してい<div onclick="wopen('compentry.php?imageid=***', 'popup', 448, 590);">ます。でマークされたコードは***PHP によって挿入され、イメージ ID を含みます。
  2. ユーザーがこの div をクリックすると、JavaScript が機能し、新しいポップアップ ウィンドウが開き、ブラウザーは次のように言います: このページのコンテンツを送信してくださいcompentry.php?imageid=***
  3. サーバーはcompentry.phpを開き、描画します<form action="form.php" method="post">(または必要に応じて取得します)
  4. HTML の描画<input type="hidden" name="imageid" value="####">が必要な場所に遭遇し、その場所でサーバー (実際には PHP) がphotogallery から受け取ったもののecho内容になります。$_GET['imageid']
  5. ユーザーが送信ボタンをクリックすると、フォームが送信されます。彼が入力した変数の中にimageidは、同じ名前 (異なる可能性がありますが問題ありません) の非表示の変数がありますが、値はフォト ギャラリーと同じです。
  6. ファイル form.php は、すべての変数を新しい変数として受け取ります。
于 2013-05-20T12:12:57.120 に答える