При попытке вставить данный 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 шт):

Автор решения: Михаил Ребров
  1. неправильный синтаксис php-кода:
    не хватает 16-ти точек с запятой в конце строки
    php это не javascript - здесь ; в конце инструкции - обязательна
  2. неправильный синтаксис запроса:
    не хватает 3 OR в разделе WHERE между разными условиями
  3. одинарные кавычки не поддерживают подстановку значений переменных:
    по этой причине обращения $row['$postavchiki'] могут привести к ошибке
    т.к. в массиве не будет ключа "$postavchiki"
    т.к. в данном случае подстановки значения в строку не будет и ключ будет искаться с знаком $
  4. более того переменные там вообще не нужны
    т.к. в переменной $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>
→ Ссылка