#javascript #php #mysql
#javascript #php #mysql
Вопрос:
Я бы хотел поместить свой код в javascript var таким образом :
function myFunction(){
var switch = document..(etc..)....style.backgroundcolour;
var somethink2 = 'red'; <----- I tell about it
switch = somethink2;
}
и после этого мой цвет фона будет переключаться после использования функции.
Я не могу этого сделать с помощью PHP-кода (мое кодовое соединение с базой данных sql), потому что у меня нет «и «.
«dane» (в getElementById()) в моем приведенном ниже коде есть, и я хочу поместить этот PHP-код в этот div.
Ребята, пожалуйста, помогите мне 🙂
С уважением!
function swap(){
var zawartosc =
<?php $a4="SELECT silnik FROM marki WHERE model = 'A4'";
$result2 = mysqli_query($connection,$a4);
echo "<br>";
echo "<table border='1'>"; // I WANT PUT THIS LIKE A TEXT
while ($row = mysqli_fetch_assoc($result2)) {
echo "<tr>";
foreach ($row as $field => $value) {
echo "<td>" . $value . "</td>";
}
echo "</tr>";
}
echo "</table>";
?>
document.getElementById("dane").innerHTML = zawartosc;
}
Комментарии:
1.
var somethink2 = '<?php echo $var;?>';
2. @ArtisticPhoenix Не забывайте об экранировании JavaScript.
3. Но у меня есть проблема в линии, как это: <?php $a4=»SELECT silnik FROM marki WHERE model like ‘A4’ «; and when i use to much » and ‘ and i cant do it 🙁
4. Вы также можете поместить произвольные данные в свой HTML, используя атрибуты данных , чтобы ваш JavaScript мог извлекать эти данные и использовать их для любых целей, которые вы имеете в виду. Это разделение часто чище, чем PHP, пишущий JavaScript.
5. Использовать
HEREDOC
вместо"
илиNOWDOC
вместо'
See php.net/manual/en/… Это слишком абстрактно для ответа, Т. Е. У вас недостаточно кода, чтобы знать, как это сделать.
Ответ №1:
Что-то вроде этого:
$a4="SELECT silnik FROM marki WHERE model = 'A4'";
$result2 = mysqli_query($connection,$a4);
$html = [];
$html[] = "<br>";
$html[] = "<table border='1'>"; // I WANT PUT THIS LIKE A TEXT
while ($row = mysqli_fetch_assoc($result2)) {
$html[] = "<tr>";
foreach ($row as $field => $value) {
$html[] = "<td>" . $value . "</td>";
}
$html[] = "</tr>";
}
$html[] = "</table>";
$html = json_encode($html); //'["<br>","<table border='1'>", ...]'
?>
document.getElementById("dane").innerHTML = <?php echo $html;?>.join("n"); //no quotes needed
//document.getElementById("dane").innerHTML = ["<br>","<table border='1'>", ...].join("n");
Или вы можете просто обращаться с ним как с обычной строкой, но это не то, что я бы предпочел делать.
$html = implode($html);
?>
document.getElementById("dane").innerHTML = "<?php echo $html;?>"; //careful with quotes here
Другими словами, не выводите данные из PHP напрямую, вместо этого создайте массив. Это намного чище, так как вы можете объединить это в одну переменную, а затем использовать ее.
Например:
//timeout for demonstration purposes
setTimeout(function(){
document.getElementById("dane").innerHTML = [
"<br>",
"<table border='1'>",
"<tr>",
"<td>foo</td>",
"<td>bar</td>",
"</tr>",
"<tr>",
"<td>biz</td>",
"<td>baz</td>",
"</tr>",
"</table>"
].join("n");
},500);
table{width:100px;}
<div id="dane"></div>
Мне нравится использовать join
(это как implode) для многострочных строк в JS (даже в моих плагинах). В этом случае он хорошо работает json_encode
с.
По сути, мы преобразуем этот массив HTML в строку JSON, которая становится реальным массивом в JS, затем мы позволяем JS выполнять imploding
with join
. В основном потому, что массивы не требуют использования кавычек, поэтому это позволяет избежать любых проблем, если у нас есть кавычки в нашем html.
Рассмотрим это (используя только строки):
<?php
//HEREDOC
$html = <<<HTML
<table border='1' style="color:red;" >
HTML;
?>
document.getElementById("dane").innerHTML = '<?php echo $html;?>';
document.getElementById("dane").innerHTML = "<?php echo $html;?>";
Что становится следующим:
document.getElementById("dane").innerHTML = '<table border='1' style="color:red;">'; //syntax error
document.getElementById("dane").innerHTML = "<table border='1' style="color:red;">"; //syntax error
Из того, что я вижу "
, на данный момент вам может сойти с рук, но если вы поместите их в свой HTML, у вас, вероятно, будут проблемы (если вы просто используете строки). Использование join позволяет избежать этого
document.getElementById("dane").innerHTML = ["<table border='1' style="color:red;">"].join("n"); //json_encode knows how to escape " for json.
Надеюсь, это поможет!