Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:

Ahoj.
Nějakou dobu už sedím nad tím, proč mi nefunguje toto:

$odesilacEmailu->odesli(trim($nabidka['email']), 'Nová reakce na nabídku ', '<p>Přijata nová reakce na podanou nabídku z webu.</p>'
                   . '<p><strong>Jméno a příjmení: </strong>'.$_POST['jmeno'].'<br>'
                   . '<strong>Email: </strong>'.$_POST['email'].'<br>'
                   . '<strong>Telefon: </strong>'.$_POST['telefon'].'<br></p>', 'noreply@neco.cz');
           $this->pridejZpravu('Váš zájem o nabídku byl úspěšně odeslán!');
           $this->presmeruj('nabidka/'.$nabidka['ID_nabidka'].'/');

K tomu mám v šabloně v modal okně tento formulář (pro jistotu celá šablona):

<div class="obsah-subpage">
    <div class="subpage-content">
        <h3>Nabídka č. <?= $nabidka['ID_nabidka'] ?></h3>
        <hr>
        <p style="font-size: 15px">Typ produktu: <a style="color: #217399; text-transform: uppercase;font-weight: bold"><?= $nabidka['typ_produktu'] ?></a></p>
        <p style="font-size: 15px">Celková výše: <a style="color: #217399; text-transform: uppercase;font-weight: bold"><?= number_format($nabidka['celkova_vyse'],0,',',' ') ?> Kč</a></p>
        <hr>
        <div class="subpage-box-levy">
        <p>Lokalita: <?= $nabidka['lokalita'] ?></p>
        <p>Datum vložení nabídky: <?php SetLocale(LC_ALL, "Czech");echo($datum=date( "d.m.Y H:i",strtotime($nabidka['vlozeno'])));?></p>
        <p>Splatnost (v letech): <?= $nabidka['splatnost'] ?></p>
        </div>
        <div class="subpage-box-pravy">

        </div>
        <div style="clear: both"></div>
    </div>
    <div class="subpage-nabidka">
        <div class="nabidka-content">
    <button type="button" class="btn btn-default btn-nabidka"><a data-toggle="modal" data-target="#nabidka">Mám zájem o nabídku!</a></button>
    </div>
    </div>
</div>

<div id="nabidka" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">MÁM ZÁJEM O NABÍDKU</h4>
      </div>
      <div class="modal-body">
          <form name="nabidka" class="form-horizontal" role="form" method="post">
              <div class="form-group">
                <label class="control-label col-sm-2" for="jmeno">Jméno a příjmení:</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" name="jmeno" placeholder="Zadejte vaše jméno a příjmení" value="">
                </div>
              </div>
              <div class="form-group">
                <label class="control-label col-sm-2" for="email">Email:</label>
                <div class="col-sm-10">
                    <input type="email" class="form-control" name="email" placeholder="Zadejte vaši emailovou adresu" value="">
                </div>
              </div>
              <div class="form-group">
                <label class="control-label col-sm-2" for="telefon">Telefon:</label>
                <div class="col-sm-10">
                    <input type="tel" class="form-control" name="telefon" placeholder="Zadejte vaše telefonní číslo" value="">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <button type="submit" class="btn btn-default">Uložit</button>
                </div>
              </div>
          </form>
      </div>
    </div>
  </div>
</div>

OdesilacEmailu je v pohodě, ten stejný mi jinde funguje. Jde o to, že když vyplním formulář a odešlu, nenapíše to žádnou hlášku, mail mi nepřijde a přesměruje to na domena.cz/nabidky//

Podstránka nabidky slouží k výpisu všech, pokud je za lomítkem nějaké číslo, vyhledají se pouze příslušné typy, právě dle čísla, ale to je v tuto chvíli jedno, to stejně funguje.

Neví někdo, proč mi to nechce odesílat a proč to přesměrovává právě na domena.cz/nabidky// ??

Díky

 
Odpovědět 21. března 23:18
Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:

Hned ten první úryvek kodu je celý v

if($_POST)
 
Nahoru Odpovědět 21. března 23:30
Avatar
Odpovídá na Michal Kuba
Dominik Gavrecký:

Hneď si tam doplň funkciu isset(). Co ti vráti $nabidka ked si ju dumpnes ?

Nahoru Odpovědět 21. března 23:46
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Michal Kuba
Dominik Gavrecký:

Chybu by som hľadal za tou $nabidka. Kedže vyzera to tak ze script sa vykoná ale hodnoty z pola nejakým spôsob nevie prečítať teda akoby tam neboli a to by vysvetľovalo aj zle presmerovanie aj ten mail.

Nahoru Odpovědět 21. března 23:51
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Dominik Gavrecký
Michal Kuba:

Nabidka funguje dobře. Do šablony se vše načítá správně, když si dám print_r($nabidka), vypíše to celé pole, když si to dám ale do bloku if($_POST) tak to nevypíše nic.. Takže tam bude někde chyba, když to jakoby nepustí dovnitř ifu?

 
Nahoru Odpovědět 22. března 0:11
Avatar
Odpovídá na Michal Kuba
Dominik Gavrecký:

Kazdopadne používaj if(isset(Post)){}. No ja osobne z týchto par riadkov tam chybu nenájdem.

sry za kod som na mobile

Nahoru Odpovědět  +2 22. března 0:16
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Michal Kuba
Dominik Gavrecký:

Ja ked používam post riešim to takto.

if(isset($_POST['submit'])){
  $test = $_POST['firstname'];
  echo $test;
}

A už len ďalej pracujem s premennou ...

Nahoru Odpovědět  +1 22. března 0:19
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Dominik Gavrecký
Jiří Gracík:

Ještě lepší je mít pole povolených a zároveň požadovaných hodnost a proti němu kontrolovat post, když už jsme u té bezpečnosti.

Nahoru Odpovědět  +1 22. března 2:31
Creating websites is awesome till you see the result in another browser ...
Avatar
Odpovídá na Jiří Gracík
Dominik Gavrecký:

To je tiež super nápad ďakujem určite to niekedy vyskúšam.

Nahoru Odpovědět 22. března 7:05
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Dominik Gavrecký
Michal Kuba:

Fak nevím co sem už dát za kód, protože i když vložím tu podmínku isset submit a zkusím si vyechovat pouze proměnnou s jedním POSTem, nedělá to nic.. Furt stejný problém jako na začátku - bez hlášky, přesměruje se to jinam než co je v tom bloku IF, který se ani nezačne provádět..

 
Nahoru Odpovědět 22. března 10:01
Avatar
Odpovídá na Michal Kuba
Dominik Gavrecký:

Problém je v tom že sa do podmienky nepredá $_POST. Čo máš v Odeslimail ?

Nahoru Odpovědět 22. března 10:06
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Dominik Gavrecký
Michal Kuba:

No odesilacemailu je právě potom začleněný až v tom bloku IF, který se ani nevykoná.. když nechám jen podmínku if POST a zkusím něco vyechovat, pořád stejný problém.. Ještě nikdy jsem se nesetkal s tím, že by se mi nepovedlo POST, resp. že by se skript tvářil, že se to neprovedlo..

 
Nahoru Odpovědět 22. března 10:10
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Dominik Gavrecký
Michal Kuba:

Pořád googlim, ale nevím, proč zrovna tady se mi podmínka s POSTem ani nezapne, ale v ostatních případech na jiných kontrolerech ano.. Stalo se to už někomu třeba? :)

 
Nahoru Odpovědět 22. března 22:11
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Jiří Gracík
Michal Kuba:

Ani když jsem různě vyměnil v inputech pořadí name, id a type, tak nic.. Pro jistotu celý kontroler, tam by to ale mělo být ok, snad:

class NabidkaKontroler extends Kontroler {
    public function zpracuj($parametry){
       $spravceClanku= new SpravceClanku();
       $odesilacEmailu= new OdesilacEmailu();
       $nabidka=$spravceClanku->vratNabidku($parametry[0]);
       $this->data['nabidka']=$nabidka;

       if($_POST)
       {

           $odesilacEmailu->odesli(trim($nabidka['email']), 'Nová reakce na nabídku ', '<p>Přijata nová reakce na podanou nabídku z webu.</p>'
                   . '<p><strong>Jméno a příjmení: </strong>'.$_POST['jmeno'].'<br>'
                   . '<strong>Email: </strong>'.$_POST['email'].'<br>'
                   . '<strong>Telefon: </strong>'.$_POST['telefon'].'<br></p>', 'noreply@domena.cz');
           $this->pridejZpravu('Váš zájem o nabídku byl úspěšně odeslán!');
           $this->presmeruj('nabidka/'.$nabidka['ID_nabidka'].'/');

       }

       $this->hlavicka = array(
                        'titulek' => 'Domena.cz - Nabídka',
                        'klicova_slova' => '',
                        'popis' => ''
                );
       $this->pohled = 'nabidka';

   }
}
 
Nahoru Odpovědět 22. března 23:29
Avatar
CZkiniCZ
Člen
Avatar
CZkiniCZ:

Ješte to může být hostingem. To se mi totiš stalo na endoře (žádná chybová hláška ale mail nedorazil) ukázalo se že změnily podmínky a ve freečku odesílání mailů nepovolují a musel jsem přejít na placenou službu. Zkontroluj si jestly to je umožněné na tvém balíčku.

Editováno 23. března 3:08
Nahoru Odpovědět 23. března 3:06
Age of the geek.
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na CZkiniCZ
Michal Kuba:

Určitě je, na jiných podstrankach to funguje jak má

 
Nahoru Odpovědět 23. března 7:34
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na CZkiniCZ
Michal Kuba:

Tak asi vím, kde je problém.. Mám v šabloně layoutu celého webu (rozlozeni) jeden formulář, který slouží k přesměrování na dané nabídky, po vybrání nějaké kategorie. To obsluhuje SmerovacKontroler (je to dle zdejšího MVC).

A právě tady ta nabídka je ve své podstránce a patrně se ten POST zpracovává ve Smerovaci a proto to nastavuje domena.cz/nabid­ky//, mezi poslední dvě lomítka to nedoplní číslo podle formuláře ze šablony.. Nefunguje mi to totiž ani na jiné podstránce, kde je formulář, dělá to stejnou chybu..

Když se to snažím zpracováváat vše přes Smerovac, nejde to, ani když nastavím ve formu action..

Nevíte někdo, jak to udělat, když mám v layoutu formulář, který se plní ve Smerovaci a potom mám v jednotlivých podstránkách jiný form, a ten se vyřizuje v jiných kontrolerech? Díky

 
Nahoru Odpovědět 23. března 10:20
Avatar
Jan Bezdíček
Redaktor
Avatar
Odpovídá na Michal Kuba
Jan Bezdíček:

Kdyz neco delas "na vsech strankach" musis to delat v tom routeru (smerovaci) a proste to MUSI jit ... pokud to dela vetsi problemy, tak se mozna zamyslet nad jinym provedenim

 
Nahoru Odpovědět 23. března 10:32
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Jan Bezdíček
Michal Kuba:

No, ale jak to mám do něj nasměrovat? Když dám do action SmerovacKontro­ler.php tak to nefunguje.. A ptám se na if(isset($_POS­T[nazev_formu­lare]))? nebo jinak? Samozřejmě mám ve fromu atribut name :)

 
Nahoru Odpovědět 23. března 10:37
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Jan Bezdíček
Michal Kuba:

Když to z formu nasměruji na Smerovac, vyhodí to chybu:
Class 'Kontroler' not found in SmerovacKontro­ler.php on line 7

To je ten řádek nazačátku, který vypdá takto:

class SmerovacKontroler extends Kontroler
 
Nahoru Odpovědět 23. března 10:44
Avatar
Jan Bezdíček
Redaktor
Avatar
Jan Bezdíček:

pres SmerovacKontroler to jde vzdy ... Smerovac urcuje, ktery controller se ma zavolat PO smerovaci. Action uplne vypust, smaz ten atribut z formu. Davat name celemu formulari je pro me taky celkem nezvyklost, vetsinou se to dela tak, ze se da name pouze submitu. Kazdopadne kdyz to shrnu, tak byl mel mit ciste jen

<form method="POST">

poté někde v inicializační metodě ve Smerovaci (run / init nebo neco co se vzdy spusti) zkus vepsat

var_dump($_POST);

a odesli formular

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 23. března 10:45
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Jan Bezdíček
Michal Kuba:

Funguje to, nevím proč jsem o takto jednoduše nezkusil hned a místo toho tu složistost furt větvil.. Do db to ukládá, při pokusu odeslat mail to hodí sice úspěch, ale mail nepřijde, to už bude ale jen drobnost :)

 
Nahoru Odpovědět 23. března 10:54
Avatar
Jan Bezdíček
Redaktor
Avatar
Odpovídá na Michal Kuba
Jan Bezdíček:

Pokud ses na localhostu, tak asi nemas zadny postovni server. Kazdopadne pro maily doporucuju pouzivat super knihovnu pro PHP zvanou PHPMailer, lze v ni specifikovat SMTP server a dalsi vychtavky :) takze z localhosto to klidne muzes posilat pres google ci seznam. Kazdopadne kdybys mel problem, neboj se ozvat :) zdejsi MVC system pro me byl taky zacatkem a dnes je z nej pomalu uz framework :D

 
Nahoru Odpovědět  +1 23. března 11:06
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Jan Bezdíček
Michal Kuba:

Dělám to normálně na hostingu, byl problém že jsem nedosazoval žádnou adresu, jelikož jsem to předával neexistující proměnou.

 
Nahoru Odpovědět 23. března 11:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 24 zpráv z 24.