Autor Zpráva
nyllo
Profil
Zdravím.

Sesmolil jsem s pomocí nějakých návodů formulář a kontrolou ale kontrolu bych potřeboval rozšířit o telefon (popřípadě přidat ověření duplicitní hodnoty z existujících zápisů v MySQL)


nyní vypadá takto

 <?php 
 SetLocale(LC_ALL, "Czech");
 $datum = StrFTime("%Y-%m-%d", Time());


include './class/db.php';

    mysql_connect($server, $user_db, $pass_db);
    mysql_select_db($table_db)
        or die("Chyba! Databáze nebo tabulka nebyla nalezena!");
    mysql_query("SET NAMES 'utf-8'"); 

    if(isset($_POST['poslat']))
    {
    
        $jmeno = htmlspecialchars($_POST['jmeno']);
        $prijmeni = htmlspecialchars($_POST['prijmeni']);
        $email = htmlspecialchars($_POST['email']);
        $tel = htmlspecialchars($_POST['tel']);
        $karta = htmlspecialchars($_POST['karta']);
        $date = $datum;
    
        $vloz ="insert into register set jmeno='$jmeno', prijmeni='$prijmeni', email='$email', tel='$tel', karta='$karta', date='$datum';";
        
        
        echo '<script type="text/javascript" for="window" event="onLoad()">
        <!--
        window.location.href="domu"
        //-->
        </script>';
    }
    

    
    function JeEmail ($cislo)
    {
        return ereg("^.+@.+\..+$",$cislo);
    }
    $BudemeZobrazovat=true;
    if (!empty($_POST)) // tak už se odesílalo a musíme kontolovat
    {
        if (!JeEmail($_POST["email"]))
        {
            // kontrolou jsme neprošli
            echo '<div class="alert alert-danger"><b>Tohle nevypadá jako e-mail!</b></div></br>';
        }
        else
        {
            // kontolou jsme prošli
            $BudemeZobrazovat=false;
            $result=mysql_query($vloz);
            echo '<div class="alert alert-success">Karta byla obědnána</div>';
        }
    }

mysql_close();
        
?>


<!-- Formulář -->

<form method="post">

    <input name="jmeno" class="form-control" placeholder="Jméno" value="<?echo $_POST["jmeno"]?>" maxlength="50" /><br />
    <input name="prijmeni" class="form-control" placeholder="Příjmení" value="<?echo $_POST["prijmeni"]?>" maxlength="50" /><br />
    <input name="email" class="form-control" placeholder="E-mail" value="<?echo $_POST["email"]?>" maxlength="50" /><br />
    <input name="tel" class="form-control" placeholder="Telefon" value="<?echo $_POST["tel"]?>" maxlength="50" /><br />
    
    <?php 
$karts = array("VIP karta - 300Kč","Gold VIP karta - 600Kč");
            echo '<select name="karta" class="form-control" type="text">';
            foreach ($karts as $karta) {
                $k = '<option class="form" value="'. $karta . '"';
                if($karta == $_POST["karta"]){ 
                    $k = $k . ' selected="selected"';
                }
                $k = $k . '>'. $karta . '</option>';
                 
                echo $k;
            }
                         
            echo '</select><br>';
            
            ?>
    
    <hr>

    <button type="submit" class="btn btn-success" name="poslat">Obědnat</button>
</form>

PS: jsem začátečník

Předem děkuji za pomoc
janbarasek
Profil
nyllo:
Telefon kontroluj úplně jednoduše, jestli to je číslo a jestli má požadovanou délku:
<?php
$cislo = 123456789;
if (is_numeric($cislo) && strlen($cislo) <= 9) {
  echo 'je to číslo!';
} else {
  echo 'není to číslo :(';
}
?>

Psal jsi, že jsi začátečník. Je to vidět, možná by nebylo na škodu, procvičit si i základy Českého jazyka. Titulek toho Buttonku mě dostal:
<button type="submit" class="btn btn-success" name="poslat">Obědnat</button>
nyllo
Profil
to mi ale bohužel nebude komunikovat se stávajícím systémem ověření
janbarasek
Profil
nyllo:
Kompletní řešení ti tu nikdo zadarmo nedá. My tě maximálně navedeme určitou cestou, nebo poradíme s konkrétní věcí. Celek musíš vytvořit sám.
nyllo
Profil
to by mi stačilo..
David Klouček
Profil
Validovat to můžeš různě, je spousta tvarů tel. čísel. Třeba:
if (preg_match('~^\+?(\d{1,}\s*?){3,}$~', $number)) //..

Na validaci emailu nepotřebuješ regulár, stačí:
if(filter_var($email, FILTER_VALIDATE_EMAIL)) //..
nyllo
Profil
mě by spíše stačila nějaká funkce která se optá zda je vše vyplněno a správně a poté teprve odešle záznam do databáze
pcmanik
Profil
nyllo:
Na to či je niečo vyplnené ti stačí použiť strlen() tým zistíš či je tam aspoň jeden znak. A na validáciu už môžeš použiť to čo ti poradil David Klouček.
nyllo
Profil
Nakonec jsem to vyřešil takto...

if ($o1 && $o2 && $o3 && $o4)


je to asi zbytečně složité ale hlídá vše co chci a zvládnu to rozběhnout.
pcmanik
Profil
nyllo:
Ten kód ti sleduje aj dĺžku reťazcov? Či niesu príliš krátke alebo dlhé a či sú v spravnom tvare? Alebo čo vlastne je v tých premenných? Lebo stačí aby dané premenné existovali a if sa vyhodnotí vždy ako true.
nyllo
Profil
už je to vyřešené

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: