Diskuze: Generování tabulky
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
![Avatar](images/img/person.png)
Člen
![Avatar](images/img/person.png)
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Jo a ještě jsem se chtěl zeptat co je špatně na tomhle kódu že
nefunguje
<?php
session_start();
require_once "../scripts/connect_to_mysql.php";
if(isset($_GET['edit'])) {
$q = "SELECT * FROM `pages` WHERE `id` = '".$_GET['edit']."'";
$r = mysqli_query($q);
while ($row = mysqli_fetch_array($r)) {
$id = $row['id'];
$title = $row['pagetitle'];
$link = $row['linklabel'];
}
echo $id."<br />";
echo $title."<br />";
echo $link."<br />";
}
?>
Tohle bych řešil přes triggery (záleží na databázi). Podle mě je to ale špatný návrh a měl bys to udělat jinak.
Na tom kódu je špatně víc věcí. Neošetřuješ vstup ani výstup a taky vypisuješ hodnoty mimo cyklus. Zkus se podívat tady na nějaké tutoriály o PHP http://www.itnetwork.cz/…ogramy-v-php
Myslím si, že v tom kódu bude SQL injection fungovat velmi dobře
Místo mysqli_fetch_array() patří asi mysqli_fetch_assoc(). Nevím to jistě, ovladač MySQLi jsem přeskočil.
Triggery asi nebudou potřebné, ale tabulky by se skutečně měly dělat raději po řádcích.
Vymyslel jsem toto, to generuje tabulku, ale neodkazuje to
<?php
$sqlCommand = "SELECT id, linklabel FROM pages WHERE showing='1' ORDER BY pageorder ASC";
$query = mysqli_query($myConnection, $sqlCommand) or die(mysqli_error());
echo '<table width="50%" border="1">';
while ($row = mysqli_fetch_array($query)){
$pid = $row["id"];
$menuDisplay = '';
$linklabel = $row["linklabel"];
$menuDisplay .= '<a href="edit_page.php?pid=' . $pid . '">' . $linklabel . '</a><br />';
echo '<tr>';
echo '<td valign="top" bgcolor="#D5FFD5" style="border:#6B450C thin solid; line-height:1.5em;>'.$menuDisplay.'</td>';
echo '</tr>';}
echo '</table>';
mysqli_free_result($query);
?>
Na první pohled tam nevidím problém, zkus si vypsat třeba linklabely normálně pod sebe bez tabulky, jestli tam máš vůbec nějaká data. Když něco debuguješ, jde se vždy od jednoduchého ke složitému, ne že to ladíš od konce.
Zobrazeno 13 zpráv z 13.