Autor Zpráva
tom5
Profil *
Dobrý den,
potřebuji vytvořit něco na přidání článků na stránky,ale něco opravdu absolutně primitivního.. Jsem začátečním, umím html, css - php teprv začínám.. Jde o to že by existoval např. stránka pridavani.php, na ktere by bylo třeba jen textarea a tlačítko odeslat, bez nějakých hesel atd.. články by se měli přidávat např. do aktuality.php tak, aby se to řadilo od nejnovějšího po nejstarší.
Poradíte mi prosím? Nevím kde začít..
Díky moc
Someone
Profil
Buďto PHP -> Práce se soubory a nebo PHP -> Databáze (MySQL)
tom5
Profil *
Myslíte že je lepší to dělat se se soubory nebo s databázemi? Já se v tom nevyznám.. a sql neznám vůbec


A jakou možnost byste radil abych zkusil? Já se v tom opravdu nevyznám..
Again
Profil *
V dnešní době a zvláště na články jsou lepší databáze. Můžeš začít studovat MySQL, jedná se o nejznámější databázi a nalezneš ji na skoro každém webhostingu. Samozřejmě lze to řešit i přes soubory, ale je to značně nepraktické a složité.
Giga
Profil *
Ja by som to povedal takto: primítivne pridávanie článkov sa dá "lacno" vyriešiť súbormi. Pre ďalší vývoj stránky a funkcie "s pridanou hodnotou" je lepšia databáza.
tom5
Profil *
O tech databazich jsem si něco přečetl, ale úplně to nechápu..
Databáze je vlastně tabulka s informacemi?
A jestli ano, potřebuji více než jeden sloupec, pokud mi jde jen o přidání článku?
Giga
Profil *
No to sú práve tie "pridané hodnoty"
-autor článku
-názov článku
-dátum pridania
-kľúčové slová
-počet zobrazení
- ...

ktoré pohodlne a hlavne "triediteľne" uložíš do databázy.
martin1312
Profil
podla toho, aké informácie chceš ukladať, napr. autor, čas vloženia článku, kategoria, tagy,... minimálne to však budu dva strĺpce: ID a text
Giga rýchlejší
tom5
Profil *
Nebyl by prosím někdo tak ochotný a udělal nebo odkázal na nějaký malinký příklad kde bych to pochopil?

Zatím to chápu takhle:
1) v html udělám třeba <div id="aktuality"></div>, kam se ty aktuality budou vkládat,
2) vytvořím databázi kde budou sloupce např. ID, článek, datum,
3) udělám formulář kde se data pošlou do té databáze a
4) zobrazím data v tom divu aktuality
Je to alespoň teoreticky správně?
kajaman
Profil
tom5:
potřebuji vytvořit něco na přidání článků na stránky

pokud něco takového potřebuješ, tak můžeš použít něco hotového, co už někdo vytvořil a co funguje, nějaké CMS, třeba MNews.

Pokud se chceš učit programovat webové aplikace v PHP a MySQL... prošel sis nějaké základy (literatura, seriály)?

EDIT: abych tedy odpověděl, mohlo by to v základu vypadat nějak takhle:
1, databáze většinou obsahuje více tabulek, ale pro jednoduchost stačí jedna tabulka se sloupečky id, clanek a datum
2, potom potřebuješ formulář, do kterého uživatel zadá ten článek a odešle
3, formulář míří na skript, který ta data (překontroluje a) uloží do databáze
4, při výpisu nějaký skript sáhne pro ta data do databáze a vypíše je na obrazovku (třeba v tom divu :))
Medvídek
Profil
martin1312:
Giga rýchlejší
To bych netvrdil, práce s filesystémem bude stále rychlejší, než s db.
(Tím nechci tvrdit, že je to lepší cesta právě pro aktuality)
martin1312
Profil
Medvídek:
rychlejší som myslel tak, že rýchlejšie reagoval - všimni si cca rovnaky obsah odpovede
tom5
Profil *
Jak moc velká blbost je tohle? Samozřejmě to nefunguje, a to jsem se u toho i inspiroval jinde :D je to fakt jen pokus..

<?
$id = $_POST["id"];
$clanek = $_POST["clanek"];
$datum = StrFTime("%d %m %Y");
$db="aktuality";
$tb="tabulka";
$spojeni=mysql_connect("localhost","ja","xxx");
mysql_select_db($db, $spojeni);
mysql_query("INSERT INTO $tb values ($id, $clanek, $datum)", $spojeni);

$co="SELECT * FROM tabulka";
$navrat=mysql_db_query("aktuality", $co, $spojeni);
echo("<table border=\"1\">");
for ($i=0;$i<mysql_num_fields($navrat); $i++){
echo("<td><strong>".mysql_field_name($navrat, $i)."</strong></td>");
}
while (list($a, $b, $c) = mysql_fetch_row($navrat)){
echo("<tr><td>$a</td><td>$b</td><td>$c</td></tr>");
}
echo("</table>");
?>
Again
Profil *
Musíš začít tím, že si vytvoříš databázi na webhostingu a potom do ní vložíš tabulku "clanky", která bude obsahovat jednotlivé záznamy. V této tabulce budeš muset mít sloupce - id, nazev, text,datum apod.

Potom se do databáze připojíš přes PHP:
 $spojeni = mysql_connect("server","uživatel","heslo" ); // jednotlivé údaje pro připojení do databáze (najdeš na webhostingu)
  mysql_select_db("databáze", $spojeni); // výběr databáze

Až budeš připojený, vytvoříš si jednoduchý formulář pro zadávaní aktualit, který může obsahovat např: název článku, text a předáš tyto informace ke zpracování. Potom v php tyto údaje zpracuješ a zapíšeš do databáze. Jak článek budeš chtít zobrazit, tak zase vyšleš dotaz do databáze a článek či články zobrazíš.

Ten tvůj kód nedává smysl, pokud ani nevíš jak funguje. Nejprve se nauč něco o sql příkazech - SELECT, UPDATE, INSERT, DELETE. Zjisti si, jak se vytváří databáze a potom až začni něco psát ...
tom5
Profil *
Databázi na webhostingu vytvořenou mam, i v ní tabulku se třema sloupečkama
Jak se připojit k databázi také chápu, nevím jak napsat že třeba data z textarea se uloží do sloupečku článek..
Again
Profil *
Předpokládejme formulář, který má textarea s názvem "text" a jednoduché pole s názvem "nazev". Tyto data odešleme ke zpracování a v PHP bude následující kód:

<?php
  $nazev = $_POST['nazev']; // nutno všechny proměnné na vstupu ošetřit
  $text = $_POST['text'];
  
    mysql_query("INSERT INTO `TABULKA` (`nazev`,`text`)VALUES('$nazev','$text')  ") or die (mysql_error()); // uložení záznamu do databáze
            

?>

K uložení záznamu do databáze slouží INSERT, vyhledej si něco o SQL dotazech, jak jsem psal výše - INSERT, SELECT, DELETE, UPDATE ...
tom5
Profil *
Díky moc, zapisování do db už funguje, ale nevím proč tam nejde diakritika, můsí se tam někde nastavit jiné kódování znaků?
Někdo tu taky psal že je potřeba sloupec ID, na co je dobrý?
Again
Profil *
U připojení k databázi je třeba nastavit kódování, které musí být shodné s nastavením u databáze.

mysql_query("SET NAMES 'utf8'"); // utf8 značí kódování

Sloupec id je důležitý právě při získávaní záznamů z databáze, pomocí id můžete identifikovat jedinečnost daného článku. V praxi lze použít třeba na výpis
jednotlivých článků - př: article.php?id=IDCLANKu, místo IDCLANKU můžete mít jednotlivé články:

article.php?id=1
article.php?id=2
article.php?id=3

U prvního příkladu se vypíše článek s č.1, u druhého článek s č.2 apod.
tom5
Profil *
Díky, kódování znaků jde, id snad taky chápu..
ještě dotaz, když mam proměnou
$datum = StrFTime("%d/%m/%Y");
a použiju jí v uložení do db:
mysql_query("INSERT INTO `tabulka` VALUES('$nazev','$text','$datum')  ") or die (mysql_error());
Datum se v databázi ukáže jako 0000-00-00. Jak se to dělá správně?
Again
Profil *
V databázi musíte mít u sloupce "datum" nastaveny typ DATE pro datum nebo DATETIME pro datum i čas, potom stačí
použit funkci NOW() viz: následující odkaz.
tom5
Profil *
Velmi jste mi pomohl, díky..
ještě dotaz: jde nějak udělat aby tam fungovali entery? To znamená že když se zmáčkne v textarea enter, bylo by tam <br />?
Když místo toho enteru napíšu <br /> tak to funguje, ale s tim enterem by to bylo lepší
martin1312
Profil
pomocou funkcie str_replace() nahradis znak "\n" za "<br />", problem vsak moze nastat ak osetrujes vystup cez htmlspecialchars(), ktory ti prevedie > < na entity, neviem ako to mas urobene.
tom5
Profil *
ošetřené to ještě nemám vůbec, zatím jsem se to jen snažil zprovoznit..

Tohle je HTML
<!DOCTYPE HTML>
<html lang="cs">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
  <title></title>
</head>
<body>

<form action="script.php" method="post">
  <input type="text" id="nazev" name="nazev" /><br />
  <textarea id="text" name="text"></textarea>
  <input type="submit" value="Odeslat!" />
</form>

</body>
</html>

A tohle ten script:

<!doctype html>
<html>
<head>
    <link href="styl.css" rel="stylesheet" type="text/css" />
    <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
</head>
<body>
<?php
$spojeni = mysql_connect("localhost","peklis","123456");
if (!$spojeni)
  {
  die('Nelze se spojit: ' . mysql_error());
  }
mysql_query("SET NAMES 'utf8'");
mysql_select_db("aktuality", $spojeni);
$sql="INSERT INTO bladex (nadpis, clanek, datum)
VALUES
('$_POST[nazev]','$_POST[text]',NOW())";

if (!mysql_query($sql,$spojeni))
  {
  die('Chyba: ' . mysql_error());
  }
echo "přidáno";

mysql_close($spojeni)
?>

<?php
$spojeni = mysql_connect("localhost","peklis","123456");
if (!$spojeni)
  {
  die('Nelze se spojit: ' . mysql_error());
  }
mysql_query("SET NAMES 'utf8'");

mysql_select_db("aktuality", $spojeni);
$vypis = mysql_query("SELECT * FROM bladex ORDER BY datum DESC");
echo "<table border='1'>
<tr>
<th>název</th>
<th>článek</th>
<th>datum</th>
</tr>";
while($row = mysql_fetch_array($vypis))
  {
  echo "<div id=\"clanek\">";
  echo "<h1>" . $row['nadpis'] . "</h1>";
  echo "<p>" . $row['clanek'] . "</p>";
  echo "<br /><br />" . $row['datum'];
  echo "</div>";
  }
mysql_close($spojeni);
?>
</body>
</html>


to str_ replace() se používá při vstupu nebo výstupu?


s tim mi trošku pomoh kamoš ale taky to moc neumí..

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: