Autor | Zpráva | ||
---|---|---|---|
marek888 Profil |
#1 · Zasláno: 6. 9. 2013, 20:02:04
Dobrý večer. Mám sloupec date. Mám nasteven typ date, poté mám v paremetrech/transformaci napsáno NOW(). Nevím proč, ale když přidám příspěvek, tak se místo data vypíše NULL. Děkuji předem za odpovědi.
|
||
juriad Profil |
ukaž dotaz, kterým přidáváš hodnotu; nemáš tam třeba NOW() v uvozovkách (apostrofech)?
|
||
marek888 Profil |
#3 · Zasláno: 6. 9. 2013, 20:05:19
Ne mám tam pouze napsáno NOW()
|
||
Tori Profil |
marek888:
„poté mám v paremetrech/transformaci napsáno NOW()“ V jakých parametrech - výchozí hodnota? A nevkládáte to takhle? INSERT INTO TABLE (datum) VALUES ('NULL') - pokud se má použít výchozí hodnota, tak do INSERTu hodnotu pro ten sloupec vůbec nemusíte dávat. Pokud se má vložit NULL , tak bez uvozovek.
|
||
marek888 Profil |
#5 · Zasláno: 7. 9. 2013, 19:55:02
Asi teď budu vypadat jako blbec, ale předtím sem to asi nevysvětli moc pečlivě. Mám databázi a v databázi mám sloupeček datum. Když přidám nějký ten příspěvek, tak mi na hlavní stránce, kam ty data vypisuju se objeví jenom předem napsané : Upload: a za tímto žádné datum. Ani NULL ani nějaké číslice. Nevím co s tím je. Když se podívám do obsahu databáze, tak tam je napsáno NULL a nic více. Dištak mohu poskitnout foto. Děkuji všem za odpovědi. Marek
|
||
Kajman Profil |
#6 · Zasláno: 7. 9. 2013, 20:25:35
Můžete ukázat vzor insertu, který při použití NOW() do sloupce datum nevloží? Změní se něco při použití CURDATE() místo NOW()?
|
||
marek888 Profil |
#7 · Zasláno: 7. 9. 2013, 20:40:01
Myslíte toto? :
$q = mysql_query("SELECT * FROM `prispevky` WHERE `obsah` IS NOT NULL ORDER BY `id`DESC") or die(mysql_error()); |
||
Kajman Profil |
#8 · Zasláno: 7. 9. 2013, 20:48:36
Ne, myslím sestavený insert příkaz, kterým vkládáte nějaký konkrétní řádek.
|
||
marek888 Profil |
#9 · Zasláno: 7. 9. 2013, 20:55:55
To bude nejspíše toto, a pokud ne, tak sem..
echo "<p class='datum'>Upload: " . $r['datum'] . "</p>"; |
||
han5vk Profil |
To prvé čo si napísal je výber hodnoty z databázy, nie vloženie. To druhé je ešte väčší nezmysel, HTML odstavec s dátumom uploadu, taktiež vytiahnutie z DB, nie vloženie. Hľadaj niečo ako
mysql_query("INSERT INTO prispevky(datum) VALUES (NOW())"); |
||
marek888 Profil |
#11 · Zasláno: 7. 9. 2013, 21:09:17
Mě ten sloupeček $datum normálně vypisuje, akorát nevím proč, když přidám nějaký příspěvek, tak ne.
|
||
Kajman Profil |
Ale my nemáme věšteckou kouli! Buď ukažte kód, kterým přidáváte nějaký příspěvek, nebo zapoměňte na odpověď.
|
||
marek888 Profil |
|||
Rfilip Profil |
#14 · Zasláno: 7. 9. 2013, 22:52:03
Na obrázku 1x1px toho opravdu vidíme hodně :).
|
||
han5vk Profil |
Fakt zaujímavý a neuveriteľne otravný hosting obrázkov, čudujem sa že to ľudia ešte používajú. Keď som klikol na odkaz pred hodinou a pol, zobrazil sa mi normálne, stĺpec typu DATE názvu datum, select "nulový" nastavený na null, pole "výchozí" nastavené na NULL a Parametry/transformace nastavená na NOW() v starej verzii phpMyAdmina.
|
||
Tori Profil |
Zkopírovala jsem screenshot sem: http://img163.imageshack.us/img163/9066/eywb.png
"Parametry transformace" slouží jen pro zobrazení dat v PhpMyAdmin, k ničemu jinému. Data v DB to nezmění, ani nenastaví výchozí hodnotu slouce. |
||
marek888 Profil |
#17 · Zasláno: 8. 9. 2013, 12:21:15
Ahoj, to se omlouvám, že odkaz není funkční, ale mě funguje bez problémů, což je takové podivuhodné. Jenom to datum se mi tam zobrazuje, protože to jsou starčí komentáře, tak sem tam k nim přidal tadum ručně, jinak se mi tam nic neoběví. Pro ukázku sem tam přidal nový komentář.
|
||
Tori Profil |
#18 · Zasláno: 8. 9. 2013, 12:24:22
marek888:
Aha. A jak teda vkládáte nové příspěvky? (viz [#10]) |
||
marek888 Profil |
#19 · Zasláno: 8. 9. 2013, 12:40:28
Takto
$q = mysql_query("SELECT * FROM `prispevky` WHERE `obsah` IS NOT NULL ORDER BY `id`DESC") or die(mysql_error()); while ($r = mysql_fetch_array($q)) { echo "<div class='comentare'>"; echo "<p class='titulek'>" . $r['titulek'] . "</p>"; echo "<p class='autor'>" . $r['autor'] . "</p>"; echo "<p class='obsah'>" . $r['obsah'] . "</p>"; echo "<p class='datum'>Upload: " . $r['datum'] . "</p>"; echo "</div><br>"; |
||
han5vk Profil |
Ty este furt nechapes co je vkladanie novych prispevkov do databazy (co je nieco ako kod v [#10]). To co nam sem davas je vypis uz ulotenych clankov na stranku. Co robis, kedchces napisat novy clanok?
|
||
marek888 Profil |
<form name="myForm" action="pridat.php" method="POST"> <select name="autor"> <option value="Honza Havelka">Honza Havelka</option> <option value="Viki Kučerová">Viki kučerová</option> <option value="Lukaš Douběta">Lukaš Douběta</option> <option value="Pandora Fields">Pandora Fields</option> <option value="Programmer Marek Douběta ©">Programmer Marek Douběta ©</option> </select><autor<br><br> <p>Maximální délka titulku je 30 znaků!</p> <script language="javascript"> <!-- function CountChars(field,cntfield) { if (field.value.length >= 0) cntfield.value = field.value.length; } // --> </script> <p> <textarea name="titulek" onkeydown="CountChars(document.myForm.titulek,document.myForm.one)" onkeyup="CountChars(document.myForm.titulek,document.myForm.one)"></textarea> <titulek<br> <input readonly="readonly" type="text" name="one" size="3" maxlength="3" value="0"> Počet znaků </p><br><br> <p>Maximální délka obsahu je 1000 znaků!</p> <script language="javascript"> <!-- function CountChars(field,cntfield) { if (field.value.length >= 0) cntfield.value = field.value.length; } // --> </script> <p> <textarea name="obsah" onkeydown="CountChars(document.myForm.obsah,document.myForm.two)" onkeyup="CountChars(document.myForm.obsah,document.myForm.two)"></textarea> <Obsah<br/> <input readonly="readonly" type="text" name="two" size="3" maxlength="3" value="0"> Počet znaků </p> <input type="submit" value="odelat"> </form> <?php if (isset($_POST['submit'])) { //Overi jestli je odeslano, jinak bz vzpsalo chybu $autor = $_POST['autor']; $titulek = $_POST['titulek']; $obsah = $_POST['obsah']; echo 'Autor: ' . $_POST['autor'] . '<br>Titulek: ' . $_POST['titulek'] . '<br>Obsah: ' . $_POST['obsah']; //Vypis } ?> |
||
Tori Profil |
#22 · Zasláno: 8. 9. 2013, 12:54:47
marek888:
A jak vypadá skript pridat.php? |
||
marek888 Profil |
#23 · Zasláno: 8. 9. 2013, 13:01:51
<?php $db_host = "-------"; $db_username = "--------"; $db_pass = "-----"; $db_name = "----"; @mysql_connect("$db_host", "$db_username", "$db_pass") or die("nepripojeno k databazi Mysql"); @mysql_select_db("$db_name") or die("Nespravna databaze, či tabulka!!"); @mysql_query("insert into prispevky (id,autor,titulek,obsah) values(NULL,'" . mysql_real_escape_string($_POST['autor']) . "', '" . mysql_real_escape_string($_POST['titulek']) . "', '" . mysql_real_escape_string($_POST['obsah']) . "')"); echo mysql_error(); echo $_POST['autor']; echo $_POST['titulek']; echo $_POST['obsah']; if ($autor == "") { echo "Nebylo vyplneno pole AUTOR."; } else { } if ($titulek == "") { echo "Nebylo vyplneno pole TITULEK."; } else { } if ($obsah == "") { echo "Nebylo vyplneno pole OBSAH."; } else { } ?> |
||
Kajman Profil |
marek888:
Sláva. Podívejte se na řádek 9. Sloupec datum tam vůbec nevkládáte, proto se použije defaultní hodnota, kterou máte nastavenou na NULL. Doplňte si vkládání onoho sloupce... @mysql_query("insert into prispevky (id,datum,autor,titulek,obsah) values(NULL, NOW(), '" . mysql_real_escape_string($_POST['autor']) . "', '" . mysql_real_escape_string($_POST['titulek']) . "', '" . mysql_real_escape_string($_POST['obsah']) . "')"); |
||
Amunak Profil |
marek888:
Chyba je v tom, že to datum nikde nenastavuješ. Pokud tomu sloupci datum nastavíš (v PHPMyAdmin) typ na TIMESTAMP a výchozí hodnotu na CURRENT_TIMESTAMP, nemusíš se o to dál starat. A taky smaž z toho insertu (v pridat.php, ř. 9) id, a NULL, je to tam zbytečné. Alternativně vkládej sloupec datum a nastav ho v dotazu nebo předej něco z PHP. Může to pak vypadat třeba takto: mysql_query(' INSERT INTO prispevky (`datum`, `autor`, `titulek`, `obsah`) VALUES( NOW(), "' . mysql_real_escape_string($_POST['autor']) . '", "' . mysql_real_escape_string($_POST['titulek']) . '", "' . mysql_real_escape_string($_POST['obsah']) . '"' . ')' ); - když v PHP vkládáš proměnné, neuzavírej je ani do uvozovek ani do apostrofů (řádky 7, 8). Místo "$db_host" jen $db_host apod. - zakazovat výpis chybových hlášek zavináčem je prasárna. - používat or die taky není úplně ideální - místo funkcí mysql_ (které jsou zastaralé) je lepší používat buď PDO nebo funkce mysqli_ |
||
marek888 Profil |
#26 · Zasláno: 8. 9. 2013, 13:32:25
Když sem chtěl přidat příspěvek takto upravený, tak mi to vyhodilo tento error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Programmer Marek Douběta ©', 'Test #1 date', 'Test #1 date')' at line 1Programmer Marek Douběta ©Test #1 dateTest #1 date |
||
Kajman Profil |
#27 · Zasláno: 8. 9. 2013, 13:58:03
marek888:
Tak to jste to blbě upravil, nejspíše tam máte špatně apostrofy, ukažte novou verzi. |
||
marek888 Profil |
#28 · Zasláno: 8. 9. 2013, 14:07:55 · Upravil/a: marek888
Nejak sem se nad tím zamyslel a napsal jsem to takto:
@mysql_query("insert into prispevky (id,autor,titulek,obsah,datum) values(NULL,NOW(),'" . mysql_real_escape_string($_POST['autor']) . "', '" . mysql_real_escape_string($_POST['titulek']) . "', '" . mysql_real_escape_string($_POST['obsah']) . "')"); Orava, Pardon, to sem pouze špatně napsal. Už to funguje tak jak má. Velice vam děkuji. Bez vás bych sem to nikdy nedodělal ! Dějuji. |
||
Časová prodleva: 11 let
|
0