Autor Zpráva
alik
Profil *
ahoj,chci se zeptat,mám skript,který odešle nějaký text do databáze,ale ještě předním jsem si dal pomocí header přesměrování na jinou stránku,kterou chci aby se ukázala když se to odešle to tý databáze..
ale je tu problém,když tam mám chybu,tak se mě ta chyba neukáže,jelikož jako jeho první funkce je přesměrování,to přesměrování tudíž musím dát uplně nakonec,kdyby se tam nějaká ta chyba vloudila tak abych oní věděl...
no,ale na konec mám dát jaký přesměrování?když tam dám stejný: header() tak to stejně odešle i s chybou,a další přesměrování mě moc nenapadá...nevíte jakým skriptem bych to vyřešil? díky za vaše rady
Anonym
Profil *
mám skript,který odešle nějaký text do databáze,ale ještě předním jsem si dal pomocí header přesměrování na jinou stránku
pokud je header před nějakým databázovým dotazem, dotaz se nemůže provést

když tam mám chybu,tak se mě ta chyba neukáže,jelikož jako jeho první funkce je přesměrování,to přesměrování tudíž musím dát uplně nakonec,kdyby se tam nějaká ta chyba vloudila tak abych oní věděl...

pokud je první ten dotaz a končí klasicky "or die (mysql_error());", potom se při chybě vypíše error a header se nemůže odeslat (header zkolabuje, když je před ním výpis na obrazovku), takže se dá chyba v klidu přečíst

ale na konec mám dát jaký přesměrování?když tam dám stejný: header() tak to stejně odešle i s chybou
pokud je před tím headerem ještě jiný header, tak k tomu druhému skript logicky nemůže dojít, protože už byl přesměrovaný jinam
AM_
Profil
pošli sem ukázku kódu, asi na druhé řádce jsem se ztratil. Ne vše dává nějaký programátorský smysl, jakým způsobem header() co odešle i s chybou mi vůbec není jasné, máš v tom trochu bordel.
Obecný postup při ukládání dat je takovýto:
- formulář nasměruješ na nějaký PHP skript, který obsahuje obsluhu (často na sebe sama, aby v případě špatně vyplněného formuláře bylo snadné znovu zobrazit formulář s vyplněnými daty)
- skript na zpracování: postará se o uložení a následně VŽDY přesměruje (ať už na stejnou stránku nebo jinou), aby se zamezilo dvojímu odeslání dat při refreshi.

Pseudokód:
<?php
if (formular_odeslan())
{
  if (validni()){
    uloz_data();
    header('location: odeslano.php');
    die(); //zastavi dalsi zpracovani skriptu, protoze po odeslani header se pouze presmeruje prohlizec a skript bezi dal, coz nebyva zadouci
  } else $chyba = ' Spatne vyplneny formular';
}
?>
<html>
...
<?php if (isset($chyba )) echo $chyba; ?>
<form ...>
formular
</form>
alik
Profil *
Anonym:
oh,chápu:) a dokonce tu chybu ukáže když tam nějakou udělám...
ale potřeboval bych ještě s něcím pomoct..
mám tam skript na poslání emailu, ty udaje,který zadal předtím..
pošle to jen když tam zadám email,předmět,text a zprávu...
jenže když chci do zprávy dopsat proměnou např heslo,jméno,věk apod...tak to napíše chybu...možná to dělám špatně,email dělám dnes po 1...
(skript jsem našel na http://tvorba-webu.zdarek.com/)
a vypadá takto:
<?
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];

if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
Mail("vase@adresa.com", $predmet, $zprava, "From: " . $email);
echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
} 
?>

jak by to mělo vypadat kdybych tam chtěl přidat do zprávy proměnou $heslo a $jmeno?
alik
Profil *
AM:
už to je dobrý,už mě tohle funguje..:) ale ted mám problém s emailem..
AM_
Profil
$zprava = $_POST['zprava']."jmeno: $jmeno heslo:$heslo";
alik
Profil *
AM:
nejde,jako odešle to,v pořádku,ale v emailu se oběví jen
jmeno:
heslo:
jinač nic jic jinýho..(jako myslím že se tam neoběví to,co jsem napsal do pole s jmenem a heslem)
AM_
Profil
no musíš nějak vykouzlit ty proměnné $jmeno a $heslo :) ty zatím nikde nemáš. A to můj kód udělá, přidá do těla zprávy $jmeno a $heslo, ale kde se ty proměnné vezmou, neřeší... jestli chceš vzít hodnoty z formuláře, musíš je do těch proměnných přiřadit.
alik
Profil *
aha,dobře díky:)
ještě jedna věc...potřeboval bych aby se mě na stránce zobrazovala tabulka clanek řádek cislo a 2 řádek cislo2 ,
vím jak by se to dalo ale nejde to...
pomocí where,jenže to mě nefunguje..
$sql= mysql_query("select * from clanek WHERE cislo='2' AND top='1'");

takhle to nefunguje,nevíš proč?...
AM_
Profil
alik:
tabulka clanek řádek cislo a 2 řádek cislo2
nerozumím jazyku tvého kmene.

Tvůj dotaz naprosto správně vybere řádek z tabulky "clanek", kde platí, že cislo=2 a top=1. Pokud máš v databázi něco jiného, tak to samozřejmě nefunguje, ale z tohohle nevyvěštím, proč...
Anonym
Profil *
cislo='2' AND top='1' jsou sloupce v tabulce?
Jak ta tabulka vypadá? Má nějaké id?
alik
Profil *
AM:
prostě že má zobrazit v tabulce clanek 2 sloupce.. první je cislo a druhý je cislo2.
jenže když tam mám ten where cislo='2' AND cislo2='1'
tak to napíše chybu
Parse error: syntax error, unexpected T_LNUMBER in /DISK3/WWW/cyprus-bazar.com/www/kategorie/kat/auta/index.php on line 59


Anonym:
ano,jsou to sloupce,ano id mají také(id_clanku)
Anonym
Profil *
Jestli máš PHPMYAdmina dej tam SQL a vlož tam to
select * from clanek WHERE cislo='2' AND top='1'
a pak napiš, jestli ti to něco vypsalo, ať alespoŇ víme, jestli je chyba v dotazu nebo jinde
alik
Profil *
Anonym:
už to jde...zapoměl jsem tam dát apostrov...
:D
Anonym
Profil *
Ten bazar si programuješ celý sám nebo je to úprava nějakého skriptu? Určitě bych jako odkaz dal i ty obrázky (to se týká, jak kategorií, tak i detailu inzerátu). Člověk podvědomě kliká na obrázky a ne na ten maličký odkaz nad obrázkem.
alik
Profil *
Anonym:
skoro vše jsem udělal sám,(až na ten email..a to je asi vše)
k těm kategorii,určo to tam udělám:) ted dělám inzeráty (top) už to mám hotový skoro,akorát to v administraci musím ještě nastavit
Anonym
Profil *
Vypadá to pěkně - taky bych si chtěl udělat inzertní portál, ale potřeboval bych grafika a kodéra.
Co se týče mailů, nevím proč, ale já jsem měl s funkcí mail vždy problémy - nechtělo mě to z hostingu odesílat.
Proto jsem si našel zdarma knihovnu phpmailer.
Je to super a umí to spoustu věcí.
Stačí nahrát na webhosting tyto dva soubory do stejného adresáře jako je php skript, který je využívá:

class.smtp.php
class.phpmailer.php

a potom se mail odešle takto:

require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->CharSet = 'utf-8'; 
$mail->IsSMTP(); 
$mail->SMTPAuth = true;
$mail->Host = 'smtp.tvuj-hosting.cz'; 
$mail->Username = 'info@tvujmail.cz'; 
$mail->Password = 'hesloSMTPserveru z hostingu';
$mail->From = $_POST['email']; 
$mail->FromName = 'Tvoje jméno'; 
$mail->AddAddress($_POST['email']); 
$mail->Subject = 'Zpráva z rubriky “'.$_POST['predmet'].'”';
$body=str_replace(array("\r\n", "\r", "\n"), "<br />", $_POST["zprava"]).chr(13).chr(10);
$mail->Body = $body;
$mail->AddReplyTo($_POST['email'], "");
$mail->WordWrap = 160;
if(!$mail->Send()) echo 'Omlouváme se, zpráva nebyla odeslána.!<br />Chybová hláška: ' . $mail->ErrorInfo;

Nikdy se mi nestalo, že by něco neodeslal nebo to nepřišlo.
POZOR!!! Před každým odesláním bych raději testoval, jestli není emailová adresa vadná.

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:

0