Я хочу проверить этот '<?php if ($loggedin) : ?>' php, если код условия внутри кода JavaScript, чтобы показать одну из кнопок, выделенных ниже жирным шрифтом в search-box.php, кстати, у меня есть идея сделать это: я могу использовать этот php $ loggedin код за пределами этого js и сохраните переменную js с true или false и, соответственно, я могу показать кнопку, используя переменную js, но я не хочу этого делать, потому что я хочу скрыть код кнопки со стороны клиента, поэтому мне нужно его поместить в php. Я хочу поместить эту кнопку в код result+= js, потому что он будет отображаться как вывод на веб-странице search-box.php при поиске в текстовом поле.
файл search-backend.php
<?Php
require "config2.php"; // Database Connection
///////
//// Collect options from table ///
@$search_text = $_GET['txt'];
//echo $search_text;
/////////// Start of preparation for Paging //////
@$end_record = $_GET['endrecord'];//
//$end_record=20;
if (strlen($end_record) > 0 AND (!is_numeric($end_record))) {
echo "Data Error 1";
exit;
}
$limit = 5; // Number of records per page
if ($end_record < $limit) {
$end_record = 0;
}
switch (@$_GET['direction']) // Let us know forward or backward button is pressed
{
case "fw":
$start_record = $end_record;
break;
case "bk":
$start_record = $end_record - 2 * $limit;
break;
default:
//echo "Data Error";
//exit;
$start_record = 0;
break;
}
if ($start_record < 0) {
$start_record = 0;
}
$end_record = $start_record + $limit;
////////// End of preparation for paging /////
$search_text = trim($search_text);
$message = '';
$query = '';
$query2 = '';
$kt = preg_split("/[\s,]+/", $search_text);//Breaking the string to array of words
// Now let us generate the sql
while (list($key, $val) = each($kt)) {
if (!ctype_alnum($val)) {
$message .= " Data Error 2 ";
//echo "Data Error";
$main = array('value' => array("message" => "$message"));
exit(json_encode($main));
}
if ($val <> " " and strlen($val) > 0) {
$query .= " keyyo like '%$val%' or ";
$query2 .= " keyyo like '%$val%' and ";
}
}// end of while
$query = substr($query, 0, (strLen($query) - 3));
$query2 = substr($query2, 0, (strLen($query2) - 4));
// this will remove the last or from the string.
$q = "select count(id) from users where confirmcode='y' and " . $query;
$q2 = "select count(id) from users where confirmcode='y' and " . $query2;
$query = 'select `id`, `subject` from users where ' . $query . " limit $start_record,$limit ";
$query2 = 'select `id`, `subject` from users where ' . $query2 . " limit $start_record,$limit ";
///////////////End of adding key word search query //////////
//echo $query;
$message .= $query;
$records_found = $dbo->query($q)->fetchColumn(); // Number of records found
$records_found2 = $dbo->query($q2)->fetchColumn(); // Number of records found
$records_found_total = $records_found + $records_found2;
$row = $dbo->prepare($query);
$row->execute();
$result = $row->fetchAll(PDO::FETCH_ASSOC);
$row2 = $dbo->prepare($query2);
$row2->execute();
$result2 = $row2->fetchAll(PDO::FETCH_ASSOC);
$result = array_merge($result2);
//$nume=count($result);
if (($end_record) < $records_found_total) {
$end = "yes";
} else {
$end = "no";
}
if (($end_record) > $limit) {
$startrecord = "yes";
} else {
$startrecord = "no";
}
$main = array(
'data' => $result,
'value' => array(
"no_records" => "$records_found",
"no_records2" => "$records_found2",
"message" => "$message",
"status1" => "T",
"endrecord" => "$end_record",
"limit" => "$limit",
"end" => "$end",
"startrecord" => "$startrecord"
)
);
echo json_encode($main);
//// End of data collection from table ///
?>
файл search-box.php
<?php $loggedin = isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true; ?>
<html>
<head>
<title>Ajax keyword search</title>
<META NAME = "DESCRIPTION" CONTENT = " ">
<META NAME = "KEYWORDS" CONTENT = "">
<link rel = "stylesheet" href = "style.css" type = "text/css">
<script type = "text/javascript">
function ajaxFunction(val) {
var httpxml;
try {
// Firefox, Opera 8.0+, Safari
httpxml = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
httpxml = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpxml = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
alert("Your browser does not support AJAX!");
return false;
}
}
}
function stateChanged() {
if (httpxml.readyState == 4) {
/////////////
var myarray = JSON.parse(httpxml.responseText);
//alert(httpxml.responseText);
// Before adding new we must remove previously loaded elements
for (j = document.getElementById('subject').length - 1; j >= 0; j--) {
document.getElementById('subject').remove(j);
}
var str = '';
var result = '';
for (i = 0; i < myarray.data.length; i++) {
str += ''; // Storing options in variable
result += +myarray.data[i].id + ',' + myarray.data[i].subject + '<br>';
result += ("<?php **if ($loggedin) { echo "<button>Push</button>"; } else { echo "<button>Pop</button>";} ?>");
**
}
///////////
document.getElementById("subject").innerHTML = str;
document.getElementById("result").innerHTML = result;
if (myarray.value.status1 != 'T') {
document.getElementById("msg").innerHTML = "About " + myarray.value.no_records2 + " & " + myarray.value.no_records + " results " + " Message : " + myarray.value.message;
} else {
document.getElementById("msg").innerHTML = "About " + myarray.value.no_records2 + " & " + myarray.value.no_records + " results ";
}
var endrecord = myarray.value.endrecord
document.getElementById("navigation").innerHTML = "<table width=700><tr><td width=350><input type=button id=\'back\' value=Prev onClick=\"ajaxFunction('bk'); return false\"></td><td width=350 align=right><input type=button value=Next id=\"fwd\" onClick=\"ajaxFunction(\'fw\'); return false\"></td></tr></tr> </table>";
myForm.st.value = endrecord;
if (myarray.value.end == "yes") {
document.getElementById("fwd").style.display = 'inline';
} else {
document.getElementById("fwd").style.display = 'none';
}
if (myarray.value.startrecord == "yes") {
document.getElementById("back").style.display = 'inline';
} else {
document.getElementById("back").style.display = 'none';
}
}
}
var url = "search-backend.php";
var str = document.getElementById("keyword").value;
var myendrecord = myForm.st.value;
url = url + "?txt = " + str;
url = url + "&endrecord = " + myendrecord;
url = url + "&direction = " + val;
url = url + "&sid = " + Math.random();
//document.getElementById("txtHint").innerHTML=url
httpxml.onreadystatechange = stateChanged;
httpxml.open("GET", url, true);
httpxml.send(null);
document.getElementById("msg").innerHTML = ":)...";
document.getElementById("msg").style.display = 'inline';
////////////////////////////////
}
</script>
</head>
<body>
<div id=msg style = "position:absolute; width:300px; height:25px;
z-index:1; left: 400px; top: 0px;
border: 1px none #000000"></div>
<br><br><br>
<form name = "myForm">
<input type=hidden name=st value=0>
<input type = "text" onkeyup = "ajaxFunction('');" name = "keyword" id = "keyword" list = "subject" size=70/>
<datalist id = "subject">
</datalist>
<br><br>
<div class='t1' id='result'>
</div>
</form>
<div class='t1' id='navigation'>
</div>
</body>
</html>
вывод кода search-box.php:



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вероятно, вы могли бы упростить код, чтобы показать только вашу проблему. Интересно, поможет ли этот код? Обновлено: (хороший комментарий, @Munim Munna): это элементарный пример передачи условия PHP в javascript на странице. Простите, если это слишком элементарно. Я прокомментировал код.
<?php
// change "true" to "false" to see the other condition.
$loggedin = (true) ? 1 : 0; // this is the result condition of your extensive processing
?>
<html><!-- normal HTML structure -->
<head>
<script>
window.onload = function() { // an elementary example of checking a condition supplied from the server (PHP)
"use strict";
var elt = document.getElementById("div1"); // the element to store the results
if (<?php echo $loggedin ?>) { // the PHP variable is inserted
// you can do your "highlighting" or "hiding" or whatever here
elt.innerHTML = "Is logged in"; } // if true
else {
// you can do your "highlighting" or "hiding" or whatever here
elt.innerHTML = "Is NOT logged in"; } // if false
}
</script>
</head>
<body>
<div id = "div1">
</div>
</body>
</html>
Пожалуйста, добавьте некоторые пояснения к предоставленному коду и избегайте вопросов в ответ. от Очередь на публикацию низкого качества
@Munim Munna Я не знаю, заставит ли вас редактировать "@Munim Munna" в моем ответе или нет, поэтому я также комментирую. Спасибо.
Нет, ответ на редактирование не отправил уведомление, но вы неправильно поняли мой предыдущий комментарий. Под объяснением я не имел в виду объяснять каждую строку вашего кода, сами строки кода говорят сами за себя, но в ответах должно быть небольшое введение о том, в чем была проблема, если таковая была, какой подход предлагается и реализуется в следующем коде. , Помогает людям понимать лучше и быстрее.
Большое спасибо @dcromley, эта логика кода сработала и решила мою проблему .. :)
@Munim Munna - Пожалуйста. Обычный ответ здесь - «принять» ответ (или как там это слово).
Это не совсем понятно, о чем вы спрашиваете - PHP выполняется на стороне сервера, а JS выполняется на клиенте. Вы можете выполнить PHP и сохранить его в глобальной переменной JS - вы сохраните значение, а не код PHP.