Jistě se pamatujete, jak jsem se ptal na uživ. poštu. Kód mojí pošty vypadá takto:
NE! NENUTÍM VÁS ČÍST CELEJ HTML KÓD! NEČTĚTE HO CELÝ!
<?php
function formular() {
?>
<form method="post" action="registrace.php">
<table width="100%" border="0" cellpadding="4" cellspacing="0">
<tr>
<td width="24%" align="left" valign="top">Příjemce</td>
<td width="76%"><input name="komu" type="text"></td>
</tr>
<tr>
<td width="24%" align="left" valign="top">Nadpis</td>
<td width="76%"><input name="nadpis" type="text"></td>
</tr>
<tr>
<td align="left" valign="top">Text zprávy</td>
<td><textarea name="telo"></textarea></td>
</tr>
<tr>
<td align="left" valign="top"> </td>
<td><input type="submit" name="submit" value="Odeslat"></td>
</tr>
</table>
</form>
<?php
}
function konec() {
?>
</body>
<?php
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<title>Pošta</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<?php include 'http://superbecko.wz.cz/central/grafika.txt';?> \* tento soubor obsahuje určení barvy stránky
<?php
session_start();
if (isset($submit)) {
include 'db.php';
// definice proměnných
$komu = $_POST['komu'];
$nadpis = $_POST['nadpis'];
$telo = $_POST['telo'];
$username = $_SESSION['autor'];
$userid = $_SESSION['userid'];
$komu = stripslashes($komu);
$nadpis = stripslashes($nadpis);
$telo = stripslashes($telo);
$username = stripslashes($username);
$userid = stripslashes($userid);
if((!$komu) || (!$nadpis) || (!$zprava)){
echo '<b>Vyskytly se tyto chyby:</b><br>';
echo '<ul>';
if(!$komu){
echo "<li>Chybí jméno příjemce</li>";
}
if(!$nadpis){
echo "<li>Chybí nadpis!</li>";
}
if(!$zprava){
echo "<li>Chybí text zprávy!</li>";
}
echo '</ul>';
formular();
konec();
exit();
}
mysql_query("SELECT komu FROM posta WHERE komu='. $_SESSION['username'] .'"); \* tohle by mělo zobrazovat seznam přijatých zpráv uživatele
$telo = htmlspecialchars($telo);
$sql = mysql_query("INSERT INTO posta (komu, nadpis, telo, username, userid, datum)
VALUES('$komu', '$nadpis', '$telo', '$username', '$userid', now())") or die (mysql_error());
if(!$sql){
echo '<p>Při odesílání zprávy nastala neočekávaná chyba.</p>';
}
} else {
formular();
konec();
}
?>
Ale je háček v tom, že nejspíš nehodlá fungovat. Chyba je údajně v tomto řádku:
mysql_query("SELECT komu FROM posta WHERE komu='. $_SESSION['username'] .'");
Mělo by to ukazovat přijaté zprávy daného uživatele. Nevím kde v tom je chyba. Prosím poraďte mi:) Děkuji!
Maikis:-)))
NEČTĚTE TEN KÓD! ČTĚTE JEN TEN KÓD DOLE! TEN HORNÍ VÁM JEN UKAZUJI PRO PŘÍPAD, ŽE BY TAM BYLY DALŠÍ CHYBY.
myslím že ten dotaz je špatně položen, zkus toto
mysql_query("SELECT komu FROM posta WHERE komu=" . $_SESSION['username']);
ale stejnak se obávám dalšího problému. Tímto vytváříš dotaz a nikam ho neukládáš a nikde ho tedy ani nevoláš.
Je! To bylo ono! Díky! ještě byla chybka o řádek níž v tom komentáři, ale tu už jsem opravil:) Díky!
Prosímvás? Nevíte PROČ se údaje (viz kód výše) nezapisují do DB? JAK mám udělat, aby se tam zapisovaly?
Nevadí na tom, že je samotné "tělo" vzkazu v databázi primární?
> Nevíte PROČ se údaje (viz kód výše) nezapisují do DB
vypíše to nějakou chybu nebo něco?
*Nevypíše
Nevíte někdo čím by to mohlo být?
Zkus si vypsat to SQL než ho provedeš.
a taky zkus použít fci mysql_error(), uvidíš, jestli to skutečně vrací nějakou chybu nebo ne.
Zapíše se něco do DB, nebo se nazapíše vůbec nic?
Hoď sem strukturu tabulky "posta".
Sloupec Typ Vlastnosti Nulový Výchozí Extra Akce
userid int(25) Ne auto_increment
autor varchar(25) Ne
komu varchar(25) Ne
nadpis varchar(25) Ne
telo text Ne
Zaškrtnout vše / Odškrtnout vše Zaškrtnuté:
Nevim jak mam z SQL vytáhnout ten dotaz:)
Místo:
$sql = mysql_query("INSERT INTO posta (komu, nadpis, telo, username, userid, datum) VALUES('$komu', '$nadpis', '$telo', '$username', '$userid', now())") or die (mysql_error());
dáš:
echo "INSERT INTO posta (komu, nadpis, telo, username, userid, datum) VALUES('$komu', '$nadpis', '$telo', '$username', '$userid', now())"
Zobrazený řetězec dáš do phpMyAdmin a uvidíš.
Vždyď dam je:
$telo = htmlspecialchars($telo);
$sql = mysql_query("INSERT INTO posta (komu, nadpis, telo, username, userid, datum)
VALUES('$komu', '$nadpis', '$telo', '$username', '$userid', now())") or die (mysql_error());
Ty vůbec nečteš, co ti píšu!
Než ten příkaz proženeš mysql_query, nejdříve si ho jen vypiš na obrazovku a zkontroluj. Pak ho zadej do phpMyAdmin a uvidíš, jestli projde, nebo jakou vypíše chybu.
Pardon! Já tadytu zprávu psal dlouho protože jsem u toho lovil kódy a tamta zpráva se mi neobjevila.. už ten kód zkoušim...
hotovo..
naskočila chyba
Parse error: parse error, expecting `','' or `';'' in /3w/wz.cz/s/superbecko/posta.php on line 87
to budou asi uvozovky..
moment..
Na konci řádku 87 ti chybí středník.
děkuju.. chyba je teď 88
Trošku jsem předělal kód:
Tady je novej (kvůli řádkům):
<?php
function formular() {
?>
<form method="post" action="posta.php">
<table width="100%" border="0" cellpadding="4" cellspacing="0">
<tr>
<td width="24%" align="left" valign="top">Příjemce</td>
<td width="76%"><input name="komu" type="text"></td>
</tr>
<tr>
<td width="24%" align="left" valign="top">Nadpis</td>
<td width="76%"><input name="nadpis" type="text"></td>
</tr>
<tr>
<td align="left" valign="top">Text zprávy</td>
<td><textarea name="telo"></textarea></td>
</tr>
<tr>
<td align="left" valign="top"> </td>
<td><input type="submit" name="submit" value="Odeslat"></td>
</tr>
</table>
</form>
<?php
}
function konec()
{
?>
</body>
<?php
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<title>Pošta</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<?php include 'http://superbecko.wz.cz/central/grafika.txt';?>
<?php
if (isset($submit)) {
include 'db.php';
session_start();
$komu = $_POST['komu'];
$nadpis = $_POST['nadpis'];
$telo = $_POST['telo'];
$username = $_SESSION['autor'];
$userid = $_SESSION['userid'];
$komu = stripslashes($komu);
$nadpis = stripslashes($nadpis);
$telo = stripslashes($telo);
$username = stripslashes($username);
$userid = stripslashes($userid);
if((!$komu) || (!$telo) || (!$zprava)){
echo '<ul>';
if(!$komu){
echo "<li>Chybí jméno příjemce</li>";
}
if(!$nadpis){
echo "<li>Chybí nadpis!</li>";
}
if(!$telo){
echo "<li>Chybí text zprávy!</li>";
}
echo '</ul>';
formular();
konec();
exit();
}
mysql_query("SELECT komu FROM posta WHERE komu=" . $_SESSION['username']);
$telo2 = htmlspecialchars($telo);
echo "INSERT INTO posta (komu, nadpis, telo, username, userid, datum) VALUES('$komu', '$nadpis', '$telo', '$username', '$userid', now())";
if(!$sql){
echo '<p>Při odesílání zprávy nastala neočekávaná chyba.</p>';
{
} else {
formular();
konec();
}
?>
</body>
88 je opraveno. bylo tam tohle obráceně: {
Nezapsalo se to:( Tabulka naskočila ale nic se nezapsalo:(
Na řádku 87 teď máš navíc levou složenou závorku.
V čem to píšeš?
Nechci ti mluvit do toho, v jakém editoru to psát, ale vřele doporučuji PSPad.
http://www.pspad.com/cz/
- zdarma - freeware
- český program
- neistaluje se, jen rozbalíš adresář
- zvýrazňuje syntax
- barevně ukazuje párové závorku - super funkce
- ukazuje čísla řádků
- mnoho dalšího
Za zkoušku určitě stojí.
Bezva! díky! to zkusim:))
Ten program jsem už měl a nefungoval:( a ani teď nefunguje:(