Autor Zpráva
marek888
Profil
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
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
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
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
Myslíte toto? :
                        $q = mysql_query("SELECT * FROM `prispevky` WHERE `obsah` IS NOT NULL ORDER BY `id`DESC") or die(mysql_error());
Kajman
Profil
Ne, myslím sestavený insert příkaz, kterým vkládáte nějaký konkrétní řádek.
marek888
Profil
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
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
No, tu mám obrázek http://www.gophoto.it/view.php?i=http://2i.cz/2i/i/522b8c11/492e6bd2de27dfa2d0df8084cb80960f/a3584963b0.f.png#.Uit-1j9Bmnc
Rfilip
Profil
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. Markovi888 už se to datum zobrazuje, takže asi už je problém vyřešený.
marek888
Profil
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
marek888:
Aha. A jak teda vkládáte nové příspěvky? (viz [#10])
marek888
Profil
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>&lt;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> &lt;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> &lt;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
marek888:
A jak vypadá skript pridat.php?
marek888
Profil
<?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
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
marek888:

Tak to jste to blbě upravil, nejspíše tam máte špatně apostrofy, ukažte novou verzi.
marek888
Profil
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']) . "')");
Datum to napsalo akorát pouze 0000-00-00.


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.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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