мне нужно получить данные из базы данных и использовать их в php, если заявление - PullRequest
1 голос
/ 06 июля 2019

У меня есть системная регистрация на курсы, и я застрял с этой проблемой. Я хочу, чтобы администратор имел возможность скрыть форму для регистрации от студентов (это как включение или выключение системы) и когда он хочетсделать его доступным снова

Способ, который я пытался решить, - это наличие на странице администратора переключателя, который передает в базу данных (с ajax) значение 0 или 1, что мне нужно, чтобы каким-то образом получить это значение, сохранитьэто к переменной php и использовать его в операторе if, например

html + ajax

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>OnClick Insert Radio Button value into Database using PDO in 
Jquery Ajax PHP | SoftAOX Tutorial</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"> </script>
</head>
<body>
<h1> On Click Insert Radio Button Value into Database</h1>
<input type="radio" name="status" value= "1" >on<br/><br/>
<input type="radio" name="status" value= "0">off<br/><br/>

<h3 id="result"></h3>
<br/>
<script>
$(document).ready(function(){
$('input[type="radio"]').click(function(){
var status = $(this).val();
$.ajax({
url:"insert.php"
method:"POST",
data:{status:status},
success: function(data){
$('#result').html(data);
}
});
});
});
</script>
  </body>
</html>

insert.php

<?php

//Insert Data
$hostname = "localhost";
$username = "root";
$password = "";
$databasename = "onlinecourse";
try {
    $conn = new PDO("mysql:host=$hostname;dbname=$databasename", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    if (isset($_POST["status"])) {
        $query = "UPDATE CRS SET status =  (:status)";
        $statement = $conn->prepare($query);
        $statement->execute(
            array(
                'status' => $_POST["status"]
            )
        );
        $count = $statement->rowCount();
        if ($count > 0) {
            echo "Data Inserted Successfully..!";
        } else {
            echo "Data Insertion Failed";
        }
    }
} catch (PDOException $error) {
    echo $error->getMessage();
}

файл, в котором я хочуоператор if для перенаправления

<?php

session_start();
include('includes/config.php');

error_reporting(0);


if(strlen($_SESSION['login'])==0)
{   
header('location:index.php');
}
else{
date_default_timezone_set('Asia/Kolkata');// change according timezone
$currentTime = date( 'd-m-Y h:i:s A', time () );
if(isset($_POST['submit']))
{
$sql=mysqli_query($con,"SELECT * FROM  students where 
pincode='".trim($_POST['pincode'])."' && 
StudentRegno='".$_SESSION['login']."'");
$num=mysqli_fetch_array($sql);

if($num>0)
{
 //statement for button

$_SESSION['pcode']=$_POST['pincode'];


if($status == "1") {
header("location:enroll.php"); //when system is on 
}
else {
    header("location:close.php"); //when system is off
}
}
else
{
$_SESSION['msg']="Error :Wrong Pincode. Please Enter a Valid Pincode !!";
}
}
?>

Ответы [ 2 ]

1 голос
/ 06 июля 2019

A переключатель при нажатии отправляет в скрипт PHP строку с содержанием его свойства значение .

Как данные с радиомаяка :

<input type="radio" name="status" value= "1" >on<br/><br/>
<input type="radio" name="status" value= "0">off<br/><br/>

radio , как и флажок , ничего не отправляет в сценарий PHP, если не выбран ни один из параметров.

Вы можете сделать:

$status = $_POST['status'] ?? "0"; 
if($status = "1") {
    header("location:enroll.php"); //when system is on 
    exit;
} else {
    header("location:close.php"); //when system is off
    exit;
}

Если вы не знакомы с ?? , который я использовал в коде, взгляните на нуль-оператор объединения . Если ваша версия PHP <7.0, вы можете использовать вместо нее <a href="https://www.php.net/manual/pt_BR/language.operators.comparison.php#language.operators.comparison.ternary" rel="nofollow noreferrer"> троичный оператор .

0 голосов
/ 06 июля 2019

Я не очень знаком с ajax, но вы можете сделать что-то подобное. Просто подумайте, что есть поле с именем statues_of_registration_form и это поле по умолчанию в 0 (которое отключено) в signup_confirm_table.

Затем на странице администратора вы можете позволить администратору изменять статус следующим образом.

admin.php

<form action="action.php" method="post">
 <label> Change the visibility of the signup page</label>
   <select name="change_visibility">
    <option value="1">Show</option>
    <option value="0">Hide</option>
   </select>
  <button type="submit" name="submit">Confirm</button>     
</form>

<?php
if(isset($_POST['submit']){

  $sql = "UPDATE signup_confirm_table SET statues_of_registration_form = '".$_POST['change_visibility']."';
  $result= $dbconnection->query($sql);

   if(isset($result)){

    echo "<script>
    alert('Form status updated');
    window.location='admin.php';
    </script>";
}else{
    if(mysqli_errno($con)){
        echo "Error:".mysqli_error($con);
    }  
 }

 }
?>

Теперь администратор может установить для поля statues_of_registration_form значение 0 или 1. Далее в вашем signup.php проверьте статус перед загрузкой страницы, как показано ниже.

signup.php

<html>
<head></head>
<body>
<?php
 $sql = "SELECT statues_of_registration_form FROM signup_confirm_table";
 $result= $dbconnection->query($sql);
 $row = mysql_fetch_array($result);

 if( $row['statues_of_registration_form'] == 1 ) { ?>
 //if status of the form = 1 put your form here
  <form>
   <input type="text"/>
  </from>
 <?php 
}else{
  echo "<script>
        alert('Registration form disabled by the admin.');
        window.location='signup.php';
        </script>";
?>
</body>
</html>

Обратите внимание, что это только пример. Вам настоятельно рекомендуется использовать подготовленные заявления в sql. Надеюсь, вы сможете что-то из этого извлечь. Спасибо

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