2016-02-01 2 views
0

ОБНОВЛЕНИЕ - я обновил свой вопрос и добавил свой код. Я знаю, что функции mysql * устарели в версии 7 PHP. Я запускаю версию 5.5. Я хочу продолжать использовать эти функции. Мой код в настоящее время вставляет мои 14 флажков в отдельный столбец для каждого (exlcuding myIDID, который хранит идентификатор зарегистрированных пользователей). Я хочу, чтобы вставить имя моего флажка в мой столбец eNISATID и значение моего флажка (1 или 0) в мой столбец eNISAT_watch вместе с идентификатором пользователя из сеанса.Вставьте несколько флажков в две колонки в таблице

Я новичок в PHP. Я смотрю, как вставить два значения для каждого флажка в мою таблицу в отдельной строке. У меня есть 14 флажков, которые я бы назвал 1, 2, 3, 4, 5 и т. Д. (Которые будут вставляться в столбец eNISATID). Я хочу, чтобы каждое имя флажка вставлялось в мой столбец «eNISATID» (1-14), а также значение 1 или 0 в «eNISAT_watch» в зависимости от того, был ли выбран флажок.

Моя таблица имеет следующую структуру:

  • eNISATanswersID (автоинкрементируемого)
  • (идентификатор пользователя, который вошел в систему) «user_id»
  • eNISATID (Я хочу, чтобы это было имя мой флажок, 1-14)
  • eNISAT_watch (значение или 1 или 0, в зависимости, если флажок выбран или нет)

Может ли кто-нибудь помочь, как лучше всего подойти к этому?

Спасибо

<?php 
session_start(); 
include_once 'dbconnect.php'; 

if(!isset($_SESSION['user'])) 
{ 
header("Location: index.php"); 
} 
$res=mysql_query("SELECT * FROM users WHERE user_id=".$_SESSION['user']); 
$userRow=mysql_fetch_array($res); 

if(isset($_POST['submit'])) 
{ 
header("Location: eNISATVids.php"); 

    $userID=$_SESSION['user']; 
    $cb_names = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14'); 
foreach ($cb_names as $cb) { 
    $cb_val = isset($_POST['$cb']) ? 1 : 0; 
    $sql = "INSERT INTO enisatanswer (user_id, eNISATID, eNISAT_watch) VALUES ('$userID', '$cb', $cb_val)"; 
    mysql_query($sql) or die(mysql_error()); 
} 
if($query==true) 
    { 
     echo'<script>alert("Your choices have inserted Successfully \n \n Please click on Display eNISAT Tutorials at the buttom of the page to view your videos ")</script>'; 
    } 
else 
    { 
     echo'<script>alert("Failed To Insert")</script>'; 
    } 
} 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Welcome - <?php echo $userRow['username']; ?></title> 
/<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 
<body> 
<div id="header"> 
<div id="left"> 
    <label>NHSCT eNISAT Tutorials</label> 
    </div> 
    <div id="right"> 
    <div id="content"> 
     Welcome <?php echo $userRow['forename']; ?>&nbsp;<a href="logout.php?logout">Sign Out</a> 
     </div> 
    </div> 
</div> 
<br> 
<p align="center"><img src="title.jpeg" width="400"height="100" alt="title.jpeg"> 
<br> 
<br> 
<center> 
<h2>Please select the tasks you require assistance with, before clicking DISPLAY ENISAT TUTORIALS:<h2> 
<br> 
<table align="center" height="0" width="70%" border="1" bgcolor = "white"> 
    <form action="" method="post" 

    <tr> 
     <td colspan="2">Tick each relevant box:</td> 
    </tr> 
    <tr> 
     <td>How to login</td> 
     <td><input type="checkbox" name="1" value="1"></td> 
    <tr> 
     <td>How to manage your worktray</td> 
     <td><input type="checkbox" name="2" value="1"></td> 
    <tr> 
     <td>How to change your visual settings (Colours and text size)</td> 
     <td><input type="checkbox" name="3" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to change your own password on the system</td> 
     <td><input type="checkbox" name="4" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to logout of the system</td> 
     <td><input type="checkbox" name="5" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to search for a client on the system</td> 
     <td><input type="checkbox" name="6" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to start an assessment</td> 
     <td><input type="checkbox" name="7" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to finalise an assessment</td> 
     <td><input type="checkbox" name="8" value="1"></td> 
    <tr> 
     <td>How to print an assessment</td> 
     <td><input type="checkbox" name="9" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to create a client and referral manually through Find on H+C</td> 
     <td><input type="checkbox" name="10" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to submit a referral from LCID (LCID Users only)</td> 
     <td><input type="checkbox" name="11" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to submit a referral from Soscare (Soscare Users only)</td> 
     <td><input type="checkbox" name="12" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to reassign a referral on eNISAT</td> 
     <td><input type="checkbox" name="13" value="1"></td> 
    </tr> 
    <tr> 
     <td>How to close a referral on eNISAT</td> 
     <td><input type="checkbox" name="14" value="1"></td> 
    </tr> 
    <tr> 
     <td <td><button name="submit" type="submit" onclick="window.location.href='eNISATVids.php'">Display eNISAT Tutorials</button></td> 
</tr> 
</table> 
</div> 
</form> 
</body> 
</html> 

UPDATE - Может кто-нибудь помочь мне с моим вторым запросом. Я сопоставил eNISATID (имя флажка от enisatanswer) до eNISATID (PRIMARY KEY из enisatquestion, чтобы однозначно идентифицировать строку для видео) в качестве внешнего ключа.

Вот мой код для отображения моих видеороликов из моей таблицы enisatquestion на основе вставленных флажков. Я попробовал два разных запроса, как показано. Один из них закомментирован //.

<?php 

    session_start(); 
    include_once 'dbconnect.php'; 

    if(!isset($_SESSION['user'])) header("Location: index.php"); 

    $res=mysql_query("SELECT * FROM users WHERE user_id=".$_SESSION['user']); 
    $userRow=mysql_fetch_array($res); 

    $userID=$_SESSION['user']; 

    //$query = "SELECT eNISATQuestion, eNISATVideo FROM enisatquestion INNER JOIN enisatanswer ON eNISATID = eNISATID WHERE user_id = $_SESSION['user'] AND eNISAT_watch = 1"; 
    $query = "SELECT eNISATQuestion, eNISATVideo FROM enisatquestion, enisatanswer.eNISATID = enisatquestion.eNISATID AND user_id = $userID"; 
    $result = mysql_query($query); 
    /* A default message if the query fails or there are no records */ 
    $enisatquestion='<h2>Sorry, there are no records</h2>'; 


    if($result) {/* if there is a recordset, proceed and generate html table */ 
     $enisatquestion = "<table >"; 
     while ($row = mysql_fetch_assoc($result)) { 
      $enisatquestion .= "<tr><td><a href='{$row['eNISATVideo']}'>{$row['eNISATQuestion']}</a></td></tr>"; 
     } 
     $enisatquestion .= "</table>";  
    } 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Welcome - <?php echo $userRow['username']; ?></title> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 
<body> 
<div id="header"> 
<div id="left"> 
    <label>NHSCT eNISAT Tutorials</label> 
    </div> 
    <div id="right"> 
    <div id="content"> 
     Welcome <?php echo $userRow['forename']; ?>&nbsp;<a href="home.php?home">Return to Homepage</a>&nbsp;&nbsp;<a href="logout.php?logout">Sign Out</a> 
     </div> 
    </div> 
    <br> 
    <br> 
    <br> 
    <br> 
<p align="center"><img src="title.jpeg" width="400"height="100" alt="title.jpeg"> 
<br> 
<br> 

    <center> 
    <h2>Click on the each link to open your tutorial in Windows Media Player<h2> 
    <br> 
    <?php 
     /* output the html table here, below your header */ 
     echo $enisatquestion; 
     /* 
      If the query failed then the default gets displayed 
     */ 
    ?> 
</div> 
</body> 
</html> 
+0

Мы не здесь, чтобы написать код для вас с нуля, мы поможем вам исправить ваш код. Пожалуйста, покажите, что вы пробовали. – Barmar

+0

Привет @Barmar, спасибо за ваш ответ. Я добавил свой код, причина, по которой я не был в первую очередь, заключается в том, что я думал, что это усложнит ситуацию, извинится за мою ошибку. Мой код в настоящее время вставляет значения флажка в 14 отдельных столбцов, как указано в моем обновлении. Мне нужно вставить имя флажка в один столбец (eNISATID) и вставить значение этого флажка в другой столбец (eNISAT_watch). Спасибо за любую помощь – scubbastevie

ответ

1

Используйте массив, содержащий имена всех флажков. Перебирайте имена и проверяйте, был ли представлен соответствующий флажок, или нет (отображаются только отмеченные флажки).

$cb_names = array('Log', 'Worktray', 'Visual', ...); 
foreach ($cb_names as $cb) { 
    $cb_val = isset($_POST[$cb]) ? 1 : 0; 
    $sql = "INSERT INTO tableName (user_id, eNISATID, eNISAT_watch) 
      VALUES ('$userID', '$cb', $cb_val)"; 
    mysql_query($sql) or die(mysql_error()); 
} 
+0

Привет @Barmar. Спасибо за ваш ответ, очень ценим. Я обновил свой код, чтобы отразить ваш ответ, хотя он не полностью функционирует. Мой идентификатор пользователя вставляется в каждую строку, как и мой eNISATID (мне нужно, чтобы это были числа 1-14) вставляло 14 строк с цифрами 1-14, но eNISAT_watch вставляет все нули, а не 1 для выбранных флажков. Вы можете помочь с этим? Many Thanks – scubbastevie

+0

Извините, у меня была ошибка. 'isset ($ _ POST ['$ cb'])' должен быть 'isset ($ _ POST [$ cb])' без кавычек. – Barmar

+0

Привет @Barmar, большое вам спасибо, ваше предыдущее предложение отлично работало. Сейчас я нахожусь в моей последней проблеме. Я добавил код для своей второй страницы, где хочу отображать только видео hrefs из моей таблицы на основе вставок флажков с моей предыдущей страницы. Вы можете помочь с моим окончательным запросом? Я попробовал два отдельных запроса, второй не отображает никаких записей, только отображает текст - Извините, нет записей. – scubbastevie

Смежные вопросы