Diskuze: vypíeanie výber položiek z výmeru
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
<?php
include('db.php');
//if($_POST['id']){
$id='1';
if($id==0){
}else{
echo "<form><select >";
echo "<option>Skupina</option>";
$sql = mysqli_query($con,"SELECT * FROM city
WHERE
country_id='$id'");
while($row = mysqli_fetch_array($sql))
{
echo '<option
value="'.$row['city_id'].'">'.$row['city_name'].'</option>';
}
echo "</select>";
echo "</form>";
}
if
{
echo '<option
value="'.$row['city_id'].'">'.$row['city_id'].'</option>';
}
echo "</select>";
echo "</form>";
}
//}
?>
google = mysqli prepared statement example
$stmt = $mysqli->prepare("SELECT * FROM myTable WHERE name = ?");
$stmt->bind_param("s", $_POST['name']);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows === 0) exit('No rows');
while($row = $result->fetch_assoc()) {
$ids[] = $row['id'];
$names[] = $row['name'];
$ages[] = $row['age'];
}
var_export($ages);
$stmt->close();
Nebo aspon takto
$name = $mysqli->real_escape_string($_POST['name']);
$mysqli->query("SELECT * FROM myTable WHERE name='$name'");
3. Musis se naucit pouzivat javascript request jestli chces pouzivat
kaskadovy filtr. Nebo pouzit javascriptovou verzi a vybirat to ze vsech polozek.
Samozrejme, pres php to muzes delat take, ale ma to sva proti.
4. Musis se naucit encodovat promenne, co tlacis do html podle pravidel html,
opet riziko chyb a prilezitost pro hackera
5. Musis se naucit googlovat!
google = php multiple select example
6. Musis se naucit psat spravny html kod. Ne nejakou miniverzi, ktera funguje
mozna pro nejaky lajdacky skolni priklad, ale uz nikde jinde.
php reseni by mohlo vypadat nejak tatko:
<?php
function escapeHtml($str='') {return htmlspecialchars((str) $str);} // escapuje kod pro vypis do html kodu
function escapeSqlValue($value) {return $mysqli->real_escape_string(value);} // escapuje hodnotu pro vyppis do sql stringu, prikazu
// funkce, co vypise select s vyuzitim escapeHtml
function ciselnikDraw($data=array(), $selected=array(), $name='', $id='')
{
$out = '...<select name="'.escapeHtml($name).'">';
$out .= '...<option...>...';
...
return $str;
}
// funkce, co vrati data pro ciselnik, at uz z databaze nebo php pole nebo odjinud
function ciselnikGet($mysqli=null, $name='', $where='')
{
$out = array();
if ($name=='city')
...
// coz by mohl byt tvuj kod
// https://www.php.net/manual/en/mysqli.query.php
{
if($where>0)
{
$id_sql = escapeSqlValue($where);
$query = "SELECT * FROM city WHERE country_id='$id_sql' ";
return ciselnikGetSql($mysqli, $query);
}
}
return $out;
}
function ciselnikGetSql($mysqli=null, $query='')
{
$out = array();
$result = $mysqli->query($query);
if ($result!==false)
{
while($row = mysqli_fetch_array($result)!==false)
{$out[] = $row;}
$result->close();
}
return $out;
}
$data_city = ciselnikGet('city', $_POST['country']);
$data_ulice = ciselnikGet('ulice', $_POST['city']);
$data_prijmeni = ciselnikGet('prijmeni', $_POST['ulice']);
$str = '';
$str .= ciselnikDraw($data_city , 'city');
$str .= ciselnikDraw($data_ulice , 'ulice');
$str .= ciselnikDraw($data_prijmeni , 'prijmeni');
echo $str;
jeste jedna uprava
<?php
function escapeHtml($str='') {return htmlspecialchars((str) $str);} // escapuje kod pro vypis do html kodu
function escapeSqlValue($value) {return $mysqli->real_escape_string(value);} // escapuje hodnotu pro vyppis do sql stringu, prikazu
// funkce, co vypise select s vyuzitim escapeHtml
function ciselnikDraw($data=array(), $selected=array(), $name='', $id='')
{
$out = '...<select name="'.escapeHtml($name).'">';
for ($data as $row)
{
list($id, $name) = $row;
$out .= '...<option... value="'.escapeHtml($id).'">'.escapeHtml($name).'</option>';
}
...
return $str;
}
// funkce, co vrati data pro ciselnik, at uz z databaze nebo php pole nebo odjinud
function ciselnikGet($mysqli=null, $name='', $where='')
{
$out = array();
if ($name=='city')
...
// coz by mohl byt tvuj kod
// https://www.php.net/manual/en/mysqli.query.php
{
if($where>0)
{
$id_sql = escapeSqlValue($where);
$query = "SELECT id_city as id, city_name as name FROM city WHERE country_id='$id_sql' ";
return ciselnikGetSql($mysqli, $query);
}
}
return $out;
}
function ciselnikGetSql($mysqli=null, $query='')
{
$out = array();
$result = $mysqli->query($query);
if ($result!==false)
{
while($row = mysqli_fetch_array($result)!==false)
{$out[] = $row;}
$result->close();
}
return $out;
}
$data_city = ciselnikGet('city', $_POST['country']);
$data_ulice = ciselnikGet('ulice', $_POST['city']);
$data_prijmeni = ciselnikGet('prijmeni', $_POST['ulice']);
$str = '';
$str .= ciselnikDraw($data_city , 'city');
$str .= ciselnikDraw($data_ulice , 'ulice');
$str .= ciselnikDraw($data_prijmeni , 'prijmeni');
echo $str;
\---
Zobrazeno 4 zpráv z 4.