Autor Zpráva
novacek90
Profil
Ahoj,
chtěl bych se zeptat, jestli je nějaká možnost zobrazení výsledku PHP pomocí javasriptu nebo nějak. Jde mi o to že mám formulář a výsledky php skriptu (vyhodnocení formuláře) mi vypisuje v jiné stránce a pak mám refresh na stránku kde mám formulář ale chtěl bych to udělat nějak abych nemusel dávat ten refresh, ať již kvůli tomu, abych udržel uživatele déle u sebe na stránce, nebo ergonomii stránek jelikož pokud mu tam vypíšu stránku s chybou a dám mu refresh, tak musí opět zadávat všechna pole apod.

<?php
....

  function JeEmail ($cislo)
  {
    return ereg("^.+@.+\..+$",$cislo);
  }
  $BudemeZobrazovat=true;
  if (!empty($_POST)) // tak už se odesílalo a musíme kontolovat
  {
    if (!JeEmail($_POST["mail_addr"]))
    {
      // kontrolou jsme neprošli
      echo "Prosím zadejte platný e-mail!";
    }
    else
    {
      // kontolou jsme prošli
      $odeslani = mail($address,$subject,$message,$headers);
        if ($odeslani) { // pokud se mail úspěšně odeslal
         echo '<br />Mail byl odeslán. Pro pokračování jděte na <a href="http://www.adresa.cz">www.adresa.cz</a>';
      }  
    }
  }
  
header("Refresh: 5; url=http://www.adresa.cz/podstranka");

?>

A teď mi jde o to jestli se dá nějak udělat to, že např.
echo "Prosím zadejte platný e-mail!";
se mi nezobrazí v nové stránce s tím Refresh, ale rovnou ve stránce, kde je formulář např. pomocí javascriptu

Díky moc za rady
Milan
Šéva
Profil
Ahoj,
pro kontrolu údajů bych asi použil funkci onchange onChange=\"kontrola(this.value)\" a následně něco jako
<script>
function kontrola(promenna)
{
    podminka...
    alert("Není splněna podmínka");
}
</script>

nebo pokud nechceš použít alert, tak to můžes ješte udělat třeba takto
<script>
function kontrola() {
if(podminka!=podminka)
{
document.getElementById('div_01').style.display = 'block'; return(false);
}
}
</script>
<p id='div_01' style='display: none;color:red;' width='100%'><b>Nějaká hláška</b></p>

//nějaký formulář s onchange
novacek90
Profil
Ahoj, dík za radu použil jsem alert vše mi funguje.
Na ten onchange ještě kouknu ;)
novacek90
Profil
Ahoj hele teď sem narazil na chybu.
Vytvořil sem si javascriptovou kontrolu a pak přesměruju na php skript pro odeslání.
Když se mi vypíše že mail byl odeslán tak nic nepřijde.

<script>
function validate(formular)
{
  if(formular.velikost_a.value=="")
  {
    alert ("Vyplňte prosím velikost A.");
    formular.velikost_a.focus();
    return false;
  }
  if(formular.velikost_b.value=="")
  {
    alert ("Vyplňte prosím velikost B.");
    formular.velikost_b.focus();
    return false;
  }
  if(formular.velikost_c.value=="")
  {
    alert ("Vyplňte prosím velikost C.");
    formular.velikost_c.focus();
    return false;
  }
  if(formular.velikost_d.value=="")
  {
    alert ("Vyplňte prosím velikost D.");
    formular.velikost_d.focus();
    return false;
  }
  if(formular.jmeno.value=="")
  {
    alert ("Vyplňte prosím své jméno.");
    formular.jmeno.focus();
    return false;
  }
  if(formular.mail_addr.value=="" || zkontroluj_email(formular.mail_addr.value)==false)
  {
    alert ("Nezadali jste svůj e-mail nebo je ve špatném tvaru.");
    formular.email.focus();
    return false;
  }
  return true;
}
function zkontroluj_email(adresa)
{
  re = /^[^.]+(\.[^.]+)*@([^.]+[.])+[a-z]{2,3}$/;
  return adresa.search(re) == 0;
}    
</script>

propojuju je

<form action="vyhodnoceni.php" method="post" name="formular" onSubmit="return validate(this);">

<?php

    začátek skriptu ....
    
    $odeslani = mail($email,$predmet,$text,$hlavicka); 
        if ($odeslani) { // pokud se mail úspěšně odeslal
         echo '<br />Mail byl odeslán.';
      }  


?>

jde mi o to, že když kontroluju např. velikost A, jestli je v ní nějaká hodnota, tak vše funguje vypíše mi hlášku že není hodnota, ale když kontroluju mail, tak je tu chybka když nechám pole s e-mailem prázdné, tak mi vypíše hlášku že není vyplněno ale i tak mi to přesměruje na ten php skript a napíše odesláno a když vyplním mail, tak mě přesměruje na php skript a vypíše mi hlášku o odeslání. Ale ani v jednom případě mi mail nedojde. S javascriptem si moc netikám a s php sem začátečník tak nevím, kde dělám chybu

Díky za radu
Šéva
Profil
novacek90:
S JS si taky moc netykam, nicméně u toho JS nad začátkem té druhé funkce más return true; a nemáš to v žádné podmínce, což znamená, že ti to ten formulář odešle pokaždé nehledě na to, zda byly podmínky splněny nebo ne... chtěo by to trošku předělat ty podmínky
jenikkozak
Profil
Šéva:
nicméně u toho JS nad začátkem té druhé funkce más return true; a nemáš to v žádné podmínce, což znamená, že ti to ten formulář odešle pokaždé nehledě na to, zda byly podmínky splněny nebo ne... chtěo by to trošku předělat ty podmínky
To není pravda. Funguje to podobně jako v PHP, kdy příkaz return vrací hodnotu a ukončuje funkci.
Zjednodušeně:
function funkce(promenna){
  if(promenna=="hodnota"){
    return false; //rovná-li se obsah proměnné „hodnotě“, vrátí funkce false, dále se neprovádí
  }
  return true; //sem se dostane funkce jen v případě, že výše nevrátila false, teď vrátí true, dál se neprovádí
  alert("ukončeno"); //sem se funkce nedostane
}

novacek90:
Ve skriptu máš asi chybně název položky formuláře na 37.řádku. Má to být email, nebo mail_addr?

K tomu, proč se ti e-mail neodesílá, se dá jen tipnout. Nespoléháš na zapnuté register globals?
novacek90
Profil
A jo chybka má to být mail_addr. Poupravil jsem podmínky postupně a už vše funguje pak taky pár úprav v php a funguje jak má. díky za rady ;)

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: