2016-06-01 9 views
-1

로그인이 포함 된 인터넷 사이트를 프로그래밍해야합니다. 내가 이미했고 잘 작동했다. 로그인 한 후 4 가지 카테고리 (자연, 사람, 물건, 기호)에 대해 4 개의 HTML 버튼을 설정했습니다. 4 개의 단추 중 하나를 클릭하면 Whatsapp Emojis가있는 테이블이 표시되고 그 옆에 확인란이 표시됩니다. WhatsApp 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-물건 다른 3 개 종류에서

<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'); 
    } 

?> 

코드는 여기로 거의 같은 모양. 세션에 어떤 것을 저장할 수 없습니다. 스크립트 "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/)는 라이브러리입니다. 그리고 많은 [others] (https://en.wikipedia.org/wiki/List_of_JavaScript_libraries)가 있습니다. – Mikey

0

세션은이 문제를 해결하기위한 좋은 해결책이 아닙니다. 세션은 실제 로그인 세션을위한 것이지 영원한 세션을위한 것이 아닙니다. 임시 값을 테이블에 저장하고 작업이 완료되면 삭제하십시오.

Deutsch : 문제는 세션 문제를 해결하는 데 도움이됩니다. 세션은 실제 사람에 의해 관리되며 온라인 게임 및 게임 활동에는 본 프로그램이 적용되지 않습니다. Sprich는 Session weg에게 세션을 시작합니다. SQL 데이터베이스를 사용하여 데이터베이스를 작성하는 중 SQL Server를 사용하는 경우 SQL Server 데이터베이스를 사용하여 SQL Server 데이터베이스를 업데이트 할 수 있습니다.

+0

당신이 독일 사람이 되길 바래요. 다이렉트 체크 박스가 나올 때까지 기다려주세요. 옵션을 선택하십시오. – michi1893