Autor Zpráva
Zdenda23
Profil *
ahoj, zkoušim trošku učit se sql. Zkusil jsem si vkladat data do DB, ale nejdou mi vypsat na stránce. Mám to tak to.

<?php
$s = "blabla";
$j = "zkouska";
$h = "*****";
$d = "zkouska";
soubor pripoj.php
mysql_connect($s, $j, $h)
             or die("Nepodařilo se připojit k databázi");
mysql_select_db($d)
               or die("Nepodařilo se zvolit databázi");
?>
soubor vypis.php
<?php include("pripojeni_k_db.php");?>
<?
$vypis=mysql_query("SELECT * FROM Komentare WHERE Jmeno_komentare LIKE jedna");
echo "$vypis";
?>



Jo malem bych zapoměl chci vypsat jen data, které ve sloupci Jmeno_komentare mají slovo jedno
juriad
Profil
Jmeno_komentare = 'jedna'
Každá řetězcová hodnota musí být uvozená apostrofy.

LIKE se obvykle používá pro hledání podřetězců pomocí %; pokud chceš řádky s hodnotou přesně 'jedna', použij =.
Zdenda23
Profil *
Tak sem to udělal takto
<?php include("pripojeni_k_db.php");?>
<?
$vypis=mysql_query("SELECT * FROM Komentare WHERE Jmeno_komentare = 'jedna'");
echo "$vypis";
?>
a na stránce to napsalo Resource id #4
V tabulce mam
ID Jmeno_komentare Jmeno Obsah
1 jedna Zdenda Zkousime 1
2 jedna Kaca Kaca 1
3 dva Petr Petr 2

tak a mělo by to vypsat na stránkách tak to. Bez ID
jedna Zdenda Zkousime 1
jedna Kaca Kaca 1

a to
3 dva Petr Petr 2
by to vůbec nemělo vypsat.
juriad
Profil
Aha, přehlédl jsem tu podstatnější chybu.
mysql_query nevrací přímo výsledky, jednotlivé řádky musís procházet postupně; rovnou jsem dopsal formátování do tabulky.

$vypis=mysql_query("SELECT * FROM Komentare WHERE Jmeno_komentare = 'jedna'");

# See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
echo "<table>";
while ($radek = mysql_fetch_assoc($vypis)) {
  echo "<tr>";
    echo "<td>" . $radek['ID'] . "</td>";
    echo "<td>" . $radek['Jmeno_komentare'] . "</td>";
    echo "<td>" . $radek['Jmeno'] . "</td>";
    echo "<td>" . $radek['Obsah'] . "</td>";
  echo "</tr>";
}
echo "</table>";
Zdenda23
Profil *
Dobře, děkuju ti. Tak vše vyřešeno :)
Zdenda23
Profil *
Jak vyřešit to aby se ředky vypysovali od nejnovějšího (směrem nahoru) po nejstarší (směrem dolu)
$vypis=mysql_query("SELECT * FROM Komentare WHERE Jmeno_komentare = 'jedna'");
 
# See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
echo "<table>";
while ($radek = mysql_fetch_assoc($vypis)) {
  echo "<tr>";
    echo "<td>" . $radek['ID'] . "</td>";
    echo "<td>" . $radek['Jmeno_komentare'] . "</td>";
    echo "<td>" . $radek['Jmeno'] . "</td>";
    echo "<td>" . $radek['Obsah'] . "</td>";
  echo "</tr>";
}
echo "</table>";
juriad
Profil
Prostě rozšíříš SQL dotaz o další klauzuli.
Předpokládám, že tabulka Komentáře má sloupec Datum, který je typu DATETIME.
SELECT * FROM Komentare WHERE Jmeno_komentare = 'jedna' ORDER BY Datum DESC

Pokud tam takový sloupec nemáš, ale ID má AUTO_INCREMENT, můžeš řadit podle ID:
SELECT * FROM Komentare WHERE Jmeno_komentare = 'jedna' ORDER BY ID DESC



Mimochodem, je dobrou praxí názvy tabulek a sloupců mít malými písmeny a jednotlivá slova názvu oddělovat podtržítkem.
Mít jen první písmeno velké je hodně netypické.
Zdenda23
Profil *
Děkuju, no je ale mě se to tak líbí v přehledu no. Jinak datum generuju pomocí $Datum = Date("j/m/Y H:i:s", Time()); takže zvolim řazení podle id
juriad
Profil
Jakého typu máš sloupeček Datum v databázi?
Pokud to není DATETIME či TIMESTAMP či INT (preferovaný by měl být DATETIME), tak si zaděláváš na problémy (některé dotazy v budoucnu nebude téměř vůbec možné realizovat)
Hodně těžko budeš sestavovat třeba dotaz na výpis všech komentářů za poslední hodinu.
Zdenda23
Profil *
typu varchar na 4O znaků, tam pomocí Date vložim datum a pak to jen vypisu. Nene nic jiného s tim určitě realizovat nehodlám.
juriad
Profil
Zdenda23:
OK, je to tvoje volba; jen varuji před možnými komplikacemi. Data v databázi by měla být ideálně prostá jakéhokoli formátování – o to by se měla starat až prezentační vrstva.
Mohl bys třeba chtít zobrazovat datum jako tady na diskusi, nahradit datum za slova dnes, včera, předevčírem.
Zdenda23
Profil *
Já to chápu, že mi nepudou pak udělat různé blbůstky jako dnes napsáno, nebo vypsat na první stranu jen dnešní komenty a na druhou včerejší apod. Jenže bude to jen stránka taková týmová, kde prostě jen bude čistě kniha. Kde jednoduše vloží vzkaz a jednoduše se zobrazí. Nic víc nechcem. :) Ale děkuju ti za upozornění.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: