При попытке вставить данный php код в tbody вылетает ошибка HTTP ERROR 500 в качестве таблицы использую datatable
<tbody>
<?php
include("menegeradd.php")
if(isset($_POST['submit']))
{
$categori = $_POST['categori']
$strana = $_POST['strana']
$proizvoditeli = $_POST['proizvoditeli']
$postavchiki = $_POST['postavchiki']
$sachita = $_POST['sachita']
$minpromtorg = $_POST['minpromtorg']
$preseyl = $_POST['preseyl']
$nastroyka = $_POST['nastroyka']
$servic = $_POST['servic']
$zip = $_POST['zip']
$proshivka = $_POST['proshivka']
$postavka = $_POST['postavka']
$st_info = $_POST['st_info']
$st_smart = $_POST['st_smart']
$dati = $_POST['dati']
}
if ($categori1 !="" || $categori !="" || $strana !="" || $proizvoditeli !="" || $postavchiki !="" || $sachita !="" || $minpromtorg !="" || $preseyl !="" ||
$nastroyka !="" || $servic !="" || $zip !="" || $proshivka !="" || $postavka !="" || $st_info !="" || $st_smart !="" || $data !="" ||)
{
$query = "SELECT * FROM records WHERE categori ='$categori' OR strana ='$strana' OR proizvoditeli
='$proizvoditeli' OR postavchiki ='$postavchiki'
sachita ='$sachita' OR minpromtorg ='$minpromtorg' OR preseyl ='$preseyl' OR nastroyka ='$nastroyka' servic ='$servic' OR zip ='$zip'
proshivka ='$proshivka' OR postavka ='$postavka' OR st_info ='$st_info' OR st_smart ='$st_smart' OR dati='$data'";
$data = mysqli_query($conn, $query) or die('error');
if(mysqli_num_rows($data) > 0)
{
while($row = mysqli_fetch_assoc($data))
{
$proizvoditeli = $row['$proizvoditeli'];
$strana = $row['$strana'];
$postavchiki = $row['$postavchiki'];
$sachita = $row['$sachita'];
$minpromtorg = $row['$minpromtorg'];
$preseyl = $row['$preseyl'];
$nastroyka = $row['$nastroyka'];
$servic = $row['$servic'];
$zip = $row['$zip'];
$proshivka = $row['$proshivka'];
$postavka = $row['$postavka'];
$dati = $row['$dati'];
$st_info = $row['$st_info'];
$st_smart = $row['$st_smart'];
$categori = $row['$categori'];
?>
<tr>
<td><?php echo $proizvoditeli; ?></td>
<td><?php echo $strana; ?></td>
<td><?php echo $postavchiki; ?></td>
<td><?php echo $proizvoditeli; ?></td>
<td><?php echo $sachita; ?></td>
<td><?php echo $minpromtorg; ?></td>
<td><?php echo $preseyl; ?></td>
<td><?php echo $nastroyka; ?></td>
<td><?php echo $servic; ?></td>
<td><?php echo $zip; ?></td>
<td><?php echo $proshivka; ?></td>
<td><?php echo $postavka; ?></td>
<td><?php echo $dati; ?></td>
<td><?php echo $st_info; ?></td>
<td><?php echo $st_smart; ?></td>
<td><?php echo $categori; ?></td>
</tr>
<?php
}
}
else
{
?>
<tr>
<td>
records not found
</td>
</tr>
<?php
}
}
?>
</tbody>
Ответы (1 шт):
Автор решения: Михаил Ребров
→ Ссылка
- неправильный синтаксис php-кода:
не хватает 16-ти точек с запятой в конце строки
php это не javascript - здесь;в конце инструкции - обязательна - неправильный синтаксис запроса:
не хватает 3ORв разделеWHEREмежду разными условиями - одинарные кавычки не поддерживают подстановку значений переменных:
по этой причине обращения$row['$postavchiki']могут привести к ошибке
т.к. в массиве не будет ключа "$postavchiki"
т.к. в данном случае подстановки значения в строку не будет и ключ будет искаться с знаком$ - более того переменные там вообще не нужны
т.к. в переменной$postavchikiбудет не название колонки в таблице, а значение данного поля в конкретной строке... а нам нужны именно названия колонок
и в данном случае можно просто обойтись без переменных
просто$row['postavchiki']без переменных и знаков доллара
попробуйте это:
<tbody>
<?php
// ";" не было вот здесь ↓
include("menegeradd.php");
if(isset($_POST['submit']))
{
// также точка с запятой отсутствовала
$categori = $_POST['categori']; // ← здесь
$strana = $_POST['strana']; // ← и здесь
$proizvoditeli = $_POST['proizvoditeli']; // ← и здесь
$postavchiki = $_POST['postavchiki']; // ← и здесь
$sachita = $_POST['sachita']; // ← и здесь
$minpromtorg = $_POST['minpromtorg']; // ← и здесь
$preseyl = $_POST['preseyl']; // ← и здесь
$nastroyka = $_POST['nastroyka']; // ← и здесь
$servic = $_POST['servic']; // ← и здесь
$zip = $_POST['zip']; // ← и здесь
$proshivka = $_POST['proshivka']; // ← и здесь
$postavka = $_POST['postavka']; // ← и здесь
$st_info = $_POST['st_info']; // ← и здесь
$st_smart = $_POST['st_smart']; // ← и здесь
$dati = $_POST['dati']; // ← и здесь
}
if ($categori1 !="" || $categori !="" || $strana !="" || $proizvoditeli !="" || $postavchiki !="" || $sachita !="" || $minpromtorg !="" || $preseyl !="" ||
$nastroyka !="" || $servic !="" || $zip !="" || $proshivka !="" || $postavka !="" || $st_info !="" || $st_smart !="" || $data !="" ||)
{
// запрос обернул в HEREDOC
$query = <<<SQL
SELECT *
FROM records
WHERE categori ='$categori'
OR strana ='$strana'
OR proizvoditeli='$proizvoditeli'
OR postavchiki ='$postavchiki'
/* ↓ вот здесь отсутствовал OR */
OR sachita ='$sachita'
OR minpromtorg ='$minpromtorg'
OR preseyl ='$preseyl'
OR nastroyka ='$nastroyka'
/* ↓ и здесь отсутствовал OR */
OR servic ='$servic'
OR zip ='$zip'
OR proshivka ='$proshivka'
/* ↓ и здесь */
OR postavka ='$postavka'
OR st_info ='$st_info'
OR st_smart ='$st_smart'
OR dati='$data'
SQL;
$data = mysqli_query($conn, $query) or die('error');
if(mysqli_num_rows($data) > 0)
{
while($row = mysqli_fetch_assoc($data))
{
// вот в этом блоке знаки доллара в ключах массива были лишними
$proizvoditeli = $row['proizvoditeli'];
$strana = $row['strana'];
$postavchiki = $row['postavchiki'];
$sachita = $row['sachita'];
$minpromtorg = $row['minpromtorg'];
$preseyl = $row['preseyl'];
$nastroyka = $row['nastroyka'];
$servic = $row['servic'];
$zip = $row['zip'];
$proshivka = $row['proshivka'];
$postavka = $row['postavka'];
$dati = $row['dati'];
$st_info = $row['st_info'];
$st_smart = $row['st_smart'];
$categori = $row['categori'];
?>
<tr>
<td><?php echo $proizvoditeli; ?></td>
<td><?php echo $strana; ?></td>
<td><?php echo $postavchiki; ?></td>
<td><?php echo $proizvoditeli; ?></td>
<td><?php echo $sachita; ?></td>
<td><?php echo $minpromtorg; ?></td>
<td><?php echo $preseyl; ?></td>
<td><?php echo $nastroyka; ?></td>
<td><?php echo $servic; ?></td>
<td><?php echo $zip; ?></td>
<td><?php echo $proshivka; ?></td>
<td><?php echo $postavka; ?></td>
<td><?php echo $dati; ?></td>
<td><?php echo $st_info; ?></td>
<td><?php echo $st_smart; ?></td>
<td><?php echo $categori; ?></td>
</tr>
<?php
}
}
else
{
?>
<tr>
<td>
records not found
</td>
</tr>
<?php
}
}
?>
</tbody>
вариант №2
необязательно вытягивать из колонок все значения...
их просто можно проитерировать в цикле foreach
<?php
foreach ($row as $cellValue) { ?>
<td><?php echo $cellValue; ?></td>
<?php
}
?>
и все
Код варианта 2 полностью
<tbody>
<?php
// ";" не было вот здесь ↓
include("menegeradd.php");
if(isset($_POST['submit']))
{
// также точка с запятой отсутствовала
$categori = $_POST['categori']; // ← здесь
$strana = $_POST['strana']; // ← и здесь
$proizvoditeli = $_POST['proizvoditeli']; // ← и здесь
$postavchiki = $_POST['postavchiki']; // ← и здесь
$sachita = $_POST['sachita']; // ← и здесь
$minpromtorg = $_POST['minpromtorg']; // ← и здесь
$preseyl = $_POST['preseyl']; // ← и здесь
$nastroyka = $_POST['nastroyka']; // ← и здесь
$servic = $_POST['servic']; // ← и здесь
$zip = $_POST['zip']; // ← и здесь
$proshivka = $_POST['proshivka']; // ← и здесь
$postavka = $_POST['postavka']; // ← и здесь
$st_info = $_POST['st_info']; // ← и здесь
$st_smart = $_POST['st_smart']; // ← и здесь
$dati = $_POST['dati']; // ← и здесь
}
if ($categori1 !="" || $categori !="" || $strana !="" || $proizvoditeli !="" || $postavchiki !="" || $sachita !="" || $minpromtorg !="" || $preseyl !="" ||
$nastroyka !="" || $servic !="" || $zip !="" || $proshivka !="" || $postavka !="" || $st_info !="" || $st_smart !="" || $data !="" ||)
{
// запрос обернул в HEREDOC
$query = <<<SQL
SELECT *
FROM records
WHERE categori ='$categori'
OR strana ='$strana'
OR proizvoditeli='$proizvoditeli'
OR postavchiki ='$postavchiki'
/* ↓ вот здесь отсутствовал OR */
OR sachita ='$sachita'
OR minpromtorg ='$minpromtorg'
OR preseyl ='$preseyl'
OR nastroyka ='$nastroyka'
/* ↓ и здесь отсутствовал OR */
OR servic ='$servic'
OR zip ='$zip'
OR proshivka ='$proshivka'
/* ↓ и здесь */
OR postavka ='$postavka'
OR st_info ='$st_info'
OR st_smart ='$st_smart'
OR dati='$data'
SQL;
$data = mysqli_query($conn, $query) or die('error');
if(mysqli_num_rows($data) > 0)
{
while($row = mysqli_fetch_assoc($data))
{
?>
<tr>
<?php
foreach ($row as $cellValue) { ?>
<td><?php echo $cellValue; ?></td>
<?php
}
?>
</tr>
<?php
}
}
else
{
?>
<tr>
<td>
records not found
</td>
</tr>
<?php
}
}
?>
</tbody>