Ahoj,
prosím o radu: "Proč se mi děje, co se mi děje"? Viz screenshot.
Uvítám nápady, jak to dát do cajku, aby se neignorovalo vypisování ostatních sloupečků u existujících hodnot v poli $row["nazev"]
Děkuji všem.
Ahoj,
prosím o radu: "Proč se mi děje, co se mi děje"? Viz screenshot.
Uvítám nápady, jak to dát do cajku, aby se neignorovalo vypisování ostatních sloupečků u existujících hodnot v poli $row["nazev"]
Děkuji všem.
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
/* Database connection start */
require('../../nastaveni.php');
$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error());
/* Database connection end */
// storing request (ie, get/post) global array to a variable
$requestData= $_REQUEST;
$columns = array(
// datatable column index => database column name
/*0 => 'id',
1 => 'nazev_firmy',
2 => 'nazev_pobocky',
3 => 'ic',
4 => 'dic',
5 => 'ulice',
6 => 'cp',
7 => 'mesto',
8 => 'psc'*/
0 => 'id',
1 => 'prijmeni',
2 => 'jmeno',
3 => 'login',
4 => 'firma',
5 => 'email',
6 => 'mobil',
);
// getting total number records without any search
$sql = "SET NAMES utf8;";
$sql = "SELECT id, skupina, prijmeni, jmeno, login, firma, email, mobil";
$sql.=" FROM uzivatele";
$query=mysqli_query($conn, $sql) or die("chyba ordie soubor /admin/firmy/data.php");
$totalData = mysqli_num_rows($query);
$totalFiltered = $totalData; // when there is no search parameter then total number rows = total number filtered rows.
//$sql = "SELECT id, nazev_firmy, nazev_pobocky, ic , dic, ulice, cp, mesto, psc";
$sql = "SELECT id, skupina, prijmeni, jmeno, login, firma, email, mobil";
$sql.=" FROM uzivatele WHERE 1=1";
if( !empty($requestData['search']['value']) ) { // if there is a search parameter, $requestData['search']['value'] contains search parameter
$sql.=" AND ( id LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR jmeno LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR skupina LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR prijmeni LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR pozice LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR mobil LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR email LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR login LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR firma LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR pobocka LIKE '".$requestData['search']['value']."%' )";
}
$query=mysqli_query($conn, $sql) or die("employee-grid-data.php: get employees");
$totalFiltered = mysqli_num_rows($query); // when there is a search parameter then we have to modify total number filtered rows as per search result.
$sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]." ".$requestData['order'][0]['dir']." LIMIT ".$requestData['start']." ,".$requestData['length']." ";
/* $requestData['order'][0]['column'] contains colmun index, $requestData['order'][0]['dir'] contains order such as asc/desc */
$query=mysqli_query($conn, $sql) or die("chyba ordie soubor /admin/firmy/data.php");
$data = array();
while( $row=mysqli_fetch_array($query) ) { // preparing an array
$nestedData=array();
$nestedData[] = $row["id"];
$id = $row["skupina"];
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {die("Connection failed: " . $conn->connect_error);}
$sql = "SELECT nazev FROM `skupiny` WHERE id= ".$id."";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$nazev = $row["nazev"];
}
} else {
$nazev = "Chyba: #15618";
//$nazev = $sql;
}
$conn->close();
$nestedData[] = $nazev;
//$nestedData[] = $row["skupina"];
$nestedData[] = $row["prijmeni"];
$nestedData[] = $row["jmeno"];
$nestedData[] = $row["login"];
$nestedData[] = $row["firma"];
$nestedData[] = $row["email"];
$nestedData[] = $row["mobil"];
$nestedData[] =
'
<div style="display: inline-block;width: 100%;text-align:center;">
<i class="pe-7s-edit clickable" onclick="updateFunction('.$row["id"].')" ></i>
<i class="pe-7s-trash clickable" onclick="deleteFunction('.$row["id"].')" ></i>
</div>
';
$data[] = $nestedData;
}
$json_data = array(
"draw" => intval( $requestData['draw'] ), // for every request/draw by clientside , they send a number as a parameter, when they recieve a response/data they first check the draw number, so we are sending same number in draw.
"recordsTotal" => intval( $totalData ), // total number of records
"recordsFiltered" => intval( $totalFiltered ), // total number of records after searching, if there is no searching then totalFiltered = totalData
"data" => $data // total data array
);
echo json_encode($json_data); // send data as json format
?>
#3 fix
$nestedData[] = $nazev;
patří dovnitř cyklu.
BTW: Proč tu databázi v cyklu otevíráš a znovu zavíráš, když ji máš otevřenou? To ji chceš uštvat? Proč ten výpis neuděláš jedním SQL dotazem?
#4 Kit
V hlavním cyklu, který vytváří pole pro předání JSONem je a proč by musel být i v tom druhém cyklu, který převádí číslo na název uživatelské skupiny nechápu, mělo by to fungovat stejně, ale udělám to tak.
Proč otevírám a zavírám spojení s databází nevím, dobrý postřeh, děkuji.
Výpis udělat jedním dotazem, to asi myslíš nějaký typ JOINu mezi tabulkou uzivatele a tabulkou skupiny? To by mi podstatně ulehčilo práci.
Tedy to předělám dle tvých rad, děkuji za tvůj čas.
#5 fix
SELECT id, skupina, prijmeni, jmeno, login, firma, email, mobil, nazev
FROM uzivatele LEFT JOIN `skupiny` ON uzivatele.skupina=skupiny.id;
Je to postavené, tak že je nezbytné, aby každý uživatel byl v nějaké skupině. Nemělo by nastat, že by existoval uživatel bez skupiny, ale pokud by nějak nastalo, tak by tomu uživateli nic nefungovalo a celý web by měl rozbitý. Nicméně adminovi by se v té tabulce zobrazila ta chybová hláška, což je lepší, Takže LEFT JOIN jsi zvolil dobře, děkuji.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku