Autor Zpráva
Balin.Tomas
Profil *
Prosím o pomoc, mám vytvořenou funkci
function emailpocet ()
{
  if (!isset($_SESSION['tarif']) and ($_SESSION['uzivatel']))return false;
  $vysledek=mysql_query("select tarif_id from tarif where tarif_id='".$_SESSION['tarif']."' and email_pocet<=(SELECT SQL_CALC_FOUND_ROWS COUNT uzivatel_id from email where uzivatel_id='".$_SESSION['uzivatel']."')");
  if(mysql_num_rows($vysledek) == 1 ) return tre;
else return false;
}

kterou používám zde
if(isset($_POST['pridat_email'])){
    $email_t=trim($_POST['email_t']);
    if (!muzepridatemail ()) {$bl="administrace-email&Alert=12"; 
					header("location: $bl");   
          }elseif (!emailpocet ()) {$bl="administrace-email&Alert=15"; 
					header("location: $bl");  
    }else{ 
            if (!JeEmail($_POST["email_t"])) {
          $bl="administrace-email&Alert=6"; 
					header("location: $bl");
          }elseif (kontrolaemail($_POST['email_t'])) { 
          $bl="administrace-email&Alert=2"; 
					header("location: $bl");
          }else{
          $VlozData=mysql_query("INSERT INTO email (uzivatel_id,email_t) VALUES ('".$_SESSION['uzivatel']."', '".$_POST['email_t']."')") or die (mysql_error());   
          $bl="administrace-email&Alert=4"; 
					header("location: $bl");
          }    
    }

Mělo by to fungovat takto Dvě tabulky: TARIF se sloupci "tarif_id" a "email_pocet" a druhá tabulka EMAIL "uzivatel_id" a "email".
V Tabulce tarif je kolik emailu se muze u příslušného tarifu přidat.Když chce uživatel přidat email, zkontroluje se v tabulce tarif -$_SESSION['tarif'] kolik emailu může mít, podle toho se zkontroluje v tabulce email kolik jich uživatel - $_SESSION['uzivatel'] má a podle toho mu dovolí nebo nedovolí přidat email.
Problém je že to nefunguje.Chyba se žádná neukazuje a email přidává stále.
Děkuji za každou radu
joe
Profil
1. Zdá se mi, že na to jdeš moc složitě. V db u řádku uživatele bych si uložil, jaký tarif má. Možná, že to tak máš, jenom se v tom nějak nevyznám.
2. Máš tam překlep
if(mysql_num_rows($vysledek) == 1 ) return true;

3. Nejsem si jistý, jestli můžeš použít konstrukci SQL_CALC_FOUND_ROWS COUNT v poddotazu. Znám jen samostatné použití a následně vybrání počtu selectem, takže tam možná má být jen COUNT (uzivatel_id)
4. Piš názvy funkcí tak, aby odpovídaly. emailpocet(), od toho by se dalo čekat, že to vrátí nějaký počet a ne boolean.
5. V čem se liší funkce JeEmail() a kontrolaemail()?
6. Vkládání nového řádku závisí jen na funkci muzepridatemail(), pokud bude TRUE a bude správný email, pak se řádek vloží. Zřejmě by měla být volána před vložením funkce emailpocet()
7. Posíláš do databáze nezabezpečená data
8. Zdá se mi zbytečné zavádět proměnnou pro přesměrování, když ji hned na následujícím řádku použiješ.
9. Po "location: ..." by místo ... měla následovat celá url adresa, tj. včetně http na začátku
10. Ujasni si konvenci při psaní kódu.
(11. Jdu spát, jen nevím jestli z toho usnu ;-))

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