Как установить и снять флажки в базе данных, используя Explode Implode - PullRequest
0 голосов
/ 18 мая 2018

Это классическая проблема, связанная с флажками, я пытался найти ответ, но не смог.Пожалуйста, помогите.

Я пытался публиковать и редактировать флажки в и из базы данных, используя php mysqli.Вот что я сделал.

Сначала я создал соединение и сохранил его как koneksi.php

$con = mysqli_connect("localhost","username","password","database_table");

// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

Затем я создал profile.php

**// I created a function to call different tables**

function GetCheckboxes($table, $key, $Label, $Nilai='') {
$s = "select * from $table order by id_course";
$r = mysqli_query($con, $s);
 $_arrNilai = explode(',', $Nilai);
  $str = '';
  while ($w = mysqli_fetch_array($r)) {
    $_ck = (array_search($w[$key], $_arrNilai) === false)? '' : 'checked';
    $str .= "<div>
                <input type='checkbox' name='".$key."[]' value='$w[$key]' 
$_ck>
                $w[$Label]

 </div> ";
  }
  return $str;
}


**// I called the user's checked checkboxes from 'users' table on 'user_course' column **

$sql  = mysqli_query($con,"SELECT * FROM users WHERE user_email='$_SESSION[emailuser]'");
    $r    = mysqli_fetch_array($sql,MYSQLI_BOTH); 


**// and displayed them associated from 'main_course' table. 
//The checkboxes lists are taked from 'main_course' table 
//and the checked value are taken from 'users' table on 'user_course' column**

echo"<label><h4>Course you are applying for:</h4></label>";
$d = GetCheckboxes('main_course', 'course_seo', 'course_name', $r[user_course]);

    echo " $d ";    

Это моя таблица, из которой я буду получать данные курса.В данном случае это таблица main_course.http://prntscr.com/jjgoqm

И это таблица «пользователей», где я беру и сохраняю проверенное значение флажков, используя implode () http://prntscr.com/jjhnu7

И это результат после того, как флажкивыбран и сохранен в таблице «пользователи» в столбце «user_course».http://prntscr.com/jjhrbe Он работает на php mysql, но когда я изменил его на mysqli, он не работает, и получилось вот так http://prntscr.com/jjhv82 Все прошло.Он работал на MySQL, но не работал на MySQL

Пожалуйста, что происходит?

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Хорошо, благодаря Нику, я могу снова заставить работать код.Я опубликую изменения для тех, кто хочет узнать больше.Вот оно.

    **// I created a function to call different tables**

function GetCheckboxes($table, $key, $Label, $Nilai='') {
global $con;
$s = "select * from $table order by id_course";
$r = mysqli_query($con, $s);
 $_arrNilai = explode(',', $Nilai);
  $str = '';
  while ($w = mysqli_fetch_array($r)) {
    $_ck = (array_search($w[$key], $_arrNilai) === false)? '' : 'checked';
    $str .= "<div>
                <input type='checkbox' name='".$key."[]' value='$w[$key]' 
$_ck>
                $w[$Label]

 </div> ";
  }
  return $str;
}


**// I called the user's checked checkboxes from 'users' table on 'user_course' column **

$sql  = mysqli_query($con,"SELECT * FROM users WHERE user_email='$_SESSION[emailuser]'");
    $r    = mysqli_fetch_array($sql,MYSQLI_BOTH); 


**// and displayed them associated from 'main_course' table. 
//The checkboxes lists are taked from 'main_course' table 
//and the checked value are taken from 'users' table on 'user_course' column**

echo"<label><h4>Course you are applying for:</h4></label>";
$d = GetCheckboxes('main_course', 'course_seo', 'course_name', $r['user_course']);

    echo " $d "; 
0 голосов
/ 19 мая 2018

Я вижу две проблемы.Первое (что, скорее всего, приводит к тому, что ваш код не работает) заключается в том, что $con находится вне области действия функции GetCheckboxes.Вам нужно либо добавить его в качестве параметра, либо добавить оператор global $con; в начало этой функции, т. Е.

function GetCheckboxes($table, $key, $Label, $Nilai='') {
  global $con;
  $s = "select * from $table order by id_course";
  $r = mysqli_query($con, $s);
  ...

Секунда (менее важно, так как это вызовет только ошибку уровня NOTICE), вваш вызов GetCheckboxes, $r[user_course] должен быть $r['user_course'].

Если вы включите Отчет об ошибках PHP (error_reporting(E_ALL);), вы увидите ошибки, которые вызывают ваш кодне функционировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...