2016-06-01 14 views
-1

ログインが含まれているインターネットサイトをプログラムする必要があります。私がすでにやったことはうまくいく。ログインした後、4つの異なるカテゴリ(自然、人物、オブジェクト、シンボル)の4つのHTMLボタンを設定します。 4つのボタンの1つをクリックするとWhatsapp Emojisの表が表示され、その横にチェックボックスが表示されます。 WhatsApp Emojisの画像はローカルに保存されています。これらのEmojisのパスはSQLデータベースにあります。画像の番号もデータベースに保存されています。画像の番号もチェックボックスの名前です。つまり、絵文字1にはチェックボックス1、絵文字2にはチェックボックス2があります。他のカテゴリをクリックすると、最後のカテゴリの最後の絵文字の最後の番号からピクチャ番号が続きます。PHPセッションでチェックボックスの値を保存する

これはすべて問題なく動作します。今私の問題に。

たとえば、カテゴリ「自然」のチェックボックスをオンにして別のカテゴリをクリックすると、「自然」に戻るとチェックボックスがオフになります。

私の考え方:セッションにチェックボックスを保存してください。私はそれがどのように動作するのか知っていますが、この場合、4つの異なるカテゴリがあり、チェックボックスをセッションに保存できないため、絶対に機能しません。

私は各カテゴリごとに別のスクリプトを持っています!ボタンはこのスクリプトにつながります!

は、ここで(申し訳ありませんが、それはドイツ語)PICTURE

objekte.php

<?php 
session_start(); 
?> 

CSS、それがどのように見えるかの写真です -

<h1>Kategorie bitte w&auml;hlen!</h1> 

<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='_GET'> 
<?php 
    $vorname = $_SESSION['firstname']; 
    $nachname = $_SESSION['lastname']; 
    echo "<p id='loggedAs'>Eingeloggt als: " .$vorname. " ".$nachname." "; 
?> 
<?php 
    echo "<button type='submit' name='ausloggen'>Ausloggen</button>"; 
?> 
</form> 
</p> 


<form action="natur.php" method="_GET"> 
<input type='submit' name='NaturVonObjekte' value='Natur'> 
</form> 
<form action="objekte.php" method="_GET"> 
<input type='submit' name='ObjekteVonObjekte' value='Objekte'> 
</form> 
<form action="personen.php" method="_GET"> 
<input type='submit' name='PersonenVonObjekte' value='Personen'> 
</form> 
<form action="symbole.php" method="_GET"> 
<input type='submit' name='SymboleVonObjekte' value='Symbole'> 
</form> 
<?php 
    if(isset($_GET['ObjekteVonNatur']) && isset($_GET['Natur'])){ 
     echo "Bin hier"; 
     $natur = $_GET['Natur']; 
     $_SESSION['naturbilder'] = $natur; 
    } 

    echo "<pre>"; 
    print_r($_SESSION); 
    echo "</pre>\n"; 

    if(isset($_GET['ObjekteVonNatur']) || isset($_GET['ObjekteVonObjekte'])||isset($_GET['ObjekteVonPersonen'])||isset($_GET['ObjekteVonSymbole'])){ 

     $db_link = @mysqli_connect ("localhost", "root", "", "emojiwahl"); 

     if (mysqli_connect_errno()){ 
      printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error()); 
      exit(); 
     } 

     $sql = "SELECT * FROM emoji WHERE EKat = 1"; 
     $erg = mysqli_query($db_link, $sql); 

     if (! $erg){ 
      die('Ungültige Abfrage: Vorname nicht vorhanden' . mysqli_error("1")); 
     } 

     echo '<table border="1">'; 

     if (mysqli_num_rows($erg) != "0"){ 
      echo "<tr>"; 
      for($i = 0; $i<7; $i++){ 
       echo "<th>Grafik</th> <th>Auswahlbox</th>"; 
      } 
      echo "</tr>"; 
     } 

     for($ii = 0; $ii<7;$ii++){ 
      while($zeile = mysqli_fetch_assoc($erg)){ 
       echo "<tr>"; 
       echo "<td><img src='".$zeile["EPfad"]."'></img></td>"; 
       echo "<td><input type='checkbox' name='".$zeile["ENr"]."' ></td>"; 
       for($ii = 0; $ii<6; $ii++){ 
        if($zeile = mysqli_fetch_assoc($erg)){ 
         echo "<td><img src='".$zeile["EPfad"]."' value='".$zeile["ENr"]."'></img></td>"; 
         echo "<td><input type='checkbox' value='".$zeile["ENr"]."' name='objekte[]' ></td>"; 
       } 
      } 
       echo "</tr>"; 
      } 
     } 
    } 
    if(isset($_GET['ausloggen'])){ 
     session_destroy(); 
     header('Location:Anmeldung.php'); 
    } 
?> 

natur.php

スタッフ
<?php 
session_start(); 
?> 

CSS-スタッフ

<form action="natur.php" method="_GET"> 
<input type='submit' name='NaturVonNatur' value='Natur'> 
</form> 
<form action="objekte.php" method="get"> 
<input type='submit' name='ObjekteVonNatur' value='Objekte'> 
</form> 
<form action="personen.php" method="_GET"> 
<input type='submit' name='PersonenVonNatur' value='Personen'> 
</form> 
<form action="symbole.php" method="_GET"> 
<input type='submit' name='SymboleVonNatur' value='Symbole'> 
</form> 

<?php 

    echo "<pre>"; 
    print_r($_SESSION); 
    echo "</pre>\n"; 

    if(isset($_GET['NaturVonNatur']) || isset($_GET['NaturVonObjekte'])||isset($_GET['NaturVonPersonen'])||isset($_GET['NaturVonSymbole'])){  
     $db_link = @mysqli_connect ("localhost", "root", "", "emojiwahl"); 

     if (mysqli_connect_errno()){ 
      printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error()); 
      exit(); 
     } 

     $sql = "SELECT * FROM emoji WHERE EKat = 0"; 
     $erg = mysqli_query($db_link, $sql); 

     if (! $erg){ 
      die('Ungültige Abfrage: Vorname nicht vorhanden' . mysqli_error("1")); 
     } 

     echo '<table border="1">'; 
     if (mysqli_num_rows($erg) != "0"){ 
      echo "<tr>"; 
      for($i = 0; $i<7; $i++){ 
       echo "<th>Grafik</th> <th>Auswahlbox</th>"; 
      } 
      echo "</tr>"; 
     } 

     for($ii = 0; $ii<7;$ii++){ 
      while($zeile = mysqli_fetch_assoc($erg)){ 
       echo "<tr>"; 
       echo "<td><img src='".$zeile["EPfad"]."'></img></td>"; 
       echo "<td><input type='checkbox' value='".$zeile["ENr"]."' name='Natur[]'></td>"; 
       for($ii = 0; $ii<6; $ii++){ 
        if($zeile = mysqli_fetch_assoc($erg)){ 
         echo "<td><img src='".$zeile["EPfad"]."'></img></td>"; 
         echo "<td><input type='checkbox' value='".$zeile["ENr"]."' name='Natur[]'></td>"; 
        } 
       } 
       echo "</tr>"; 
      } 
     } 
    } 

    if(isset($_GET['ausloggen'])){ 
     session_destroy(); 
     header('Location:Anmeldung.php'); 
    } 

?> 

他の3つのカテゴリーからのコードはこことほぼ同じに見えます。セッションに何かを保存することはできません。スクリプト "natur"から、 "objekt"というスクリプトの中で、チェックボックスの値をセッションに格納することは何もありません。

+0

これを解決するために、私たちはいくつかのマークアップとコードを見る必要があります。 –

+0

申し訳ありませんが、コードは@JayBlanchardです。 – michi1893

+0

チェックボックスの状態をどれくらい長く保持したいのですか?チェックボックスのいくつかを確認してページを更新する場合と同様に、ページに戻ったときにこれらのチェックボックスをチェックする必要がありますか? – Mikey

答えて

0

あなたのページが表示されている間だけチェックボックスの状態を保持したい場合は、最初からすべてのイメージをクエリし、それらのカテゴリに基づいてページの隠しテーブルに配置することをお勧めします。 JavaScriptを使用してボタンを表示/非表示にします。もちろん、イメージが狂っているなら、これは良い選択肢ではありません。

var buttons, tables; 
 

 
function toggleImages() { 
 
    var button = this; 
 
    // show/hide table depending on whether button's name matches the table's ID 
 
    for (i = 0, len = tables.length; i < len; i++) { 
 
     tables[i].style = tables[i].id === button.name ? 'display: table' : 'display: none'; 
 
    } 
 
} 
 

 
window.onload = function (e) { 
 
    buttons = document.getElementsByTagName('button'); 
 
    // add event listener to all buttons 
 
    for (i = 0, len = buttons.length; i < len; i++) { 
 
     buttons[i].addEventListener('click', toggleImages); 
 
    } 
 
    tables = document.getElementsByTagName('table'); 
 
} 
 

 
// note: easier and safer to do all this with jQuery
<button name="natures">Natur</button> 
 
<button name="objects">Objekte</button> 
 
<button name="persons">Personen</button> 
 

 
<table id="natures" style="display: none;"> 
 
    <tr> 
 
     <th>Picture</th><th>Checkbox</th> 
 
     <th>Picture</th><th>Checkbox</th> 
 
     <th>Picture</th><th>Checkbox</th> 
 
    </tr> 
 
    <tr> 
 
     <td>Image 1</td><td><input type="checkbox" value="1" ></td> 
 
     <td>Image 2</td><td><input type="checkbox" value="2" ></td> 
 
     <td>Image 3</td><td><input type="checkbox" value="3" ></td> 
 
    </tr> 
 
</table> 
 

 
<table id="objects" style="display: none;"> 
 
    <tr> 
 
     <th>Picture</th><th>Checkbox</th> 
 
     <th>Picture</th><th>Checkbox</th> 
 
     <th>Picture</th><th>Checkbox</th> 
 
    </tr> 
 
    <tr> 
 
     <td>Image 7</td><td><input type="checkbox" value="7" ></td> 
 
     <td>Image 8</td><td><input type="checkbox" value="8" ></td> 
 
     <td>Image 9</td><td><input type="checkbox" value="9" ></td> 
 
    </tr> 
 
</table> 
 

 
<table id="persons" style="display: none;"> 
 
    <tr> 
 
     <th>Picture</th><th>Checkbox</th> 
 
     <th>Picture</th><th>Checkbox</th> 
 
     <th>Picture</th><th>Checkbox</th> 
 
    </tr> 
 
    <tr> 
 
     <td>Image 4</td><td><input type="checkbox" value="4" ></td> 
 
     <td>Image 5</td><td><input type="checkbox" value="5" ></td> 
 
     <td>Image 6</td><td><input type="checkbox" value="6" ></td> 
 
    </tr> 
 
</table>

あなたも、ページを離れた後、あなたのチェックボックスの状態を保持したい場合は、あなたの最良のオプションはで値を格納するために、おそらくです:ここでは

は、迅速なイラストですデータベースはFileXのように言った。

チェックボックスの状態を保持する必要があるかどうかによって、チェックボックスの状態を保存し、localStorageに取得することもできます。ただし、あまりにも多くを保存する場合、これはあなたのブラウザのパフォーマンスに影響を与える可能性があります。

+0

ありがとう、それは動作します! – michi1893

+0

私は質問があります...私はウェブプログラミングでは新しく、jQueryとJavaScriptの違いは分かりません。あなたはウェブプログラミングで本当に経験があるようですので、私が助けてくれれば非常に感謝しています。ありがとう:) – michi1893

+0

まず、JavaScriptはプログラミング言語です。ほとんどのプログラミング言語には、事前に書き込まれた関数とオブジェクトのコレクションであり、再利用できるライブラリがあります。 JavaScriptの場合、[jQuery](https://jquery.com/)はライブラリです。そしてたくさんの[その他](https://en.wikipedia.org/wiki/List_of_JavaScript_libraries)があります。 – Mikey

0

セッションは、この問題を解決する良い方法ではありません。 セッションは実際のログインセッション用であり、これまでのセッション用ではありません。 一時的にテーブルに値を保存し、アクションが完了したら値を削除します。

Deutsch: 問題のセッションの問題を解決してください。 セッションは、オンラインゲームとオンラインゲームの間で行われます。セッションを開始する前に、Sprichがセッションを開始しました。 SQLを使用すると、SQLテーブルが作成されます。SQLテーブルは、SQL Serverデータベースに格納され、SQL Serverデータベースに格納されます。

+0

私はあなたがドイツ人であることを願っています: ダイレクトチェックボックスは、あなたがドイツ人であることを希望します。オプションを選択すると、オプションが表示されます。 – michi1893

関連する問題