Autor Zpráva
xaverista
Profil
Zdravím, omlouvám se za případné chyby a ,, neuplnost,, kódu (ten funguje), píšu teď z mobilu.
Takže teď k otázce. Mám systém, kdy uživatel zadá kód, který jim připíše ,, peníze,, a pokud je kod správný přibude jim částka podle zadaného kódu a script Toaster (notifikace) jim vypíše, že správně zadali kód a kolik získali. Problém je s tím, když chci at, že zadali špatně kod, který neexistuje. Protože mi tu notifikaci vypíše několikrát. Vše je propojeno s databazi. V DB sloupce kod a castka...
$vysledek = mysql_query("SELECT * FROM kody ORDER BY kredit DESC",$spojeni);
while ($kod = mysql_fetch_array($vysledek){
if($_POST['zadanykod'] == $kod['kod']){
//Probíhají úkony jako updatovani tabulky tedy přečtení peněz a vypsání OK hlášky 
}
}
Když ovšem za if dam else, vypíše se mi třeba Chybová hláška 9x z 10 (1 kod je tedy spravne).Jak to eliminovat na vypsání 1 chybové hlášky?

Děkuji všem za nápady xaverista.
juriad
Profil
Filtruj už na úrovni databáze:
$dotaz = "SELECT * FROM kody WHERE kod = '" . mysql_real_escape_string($POST['zadanykod']) . "'";
$vysledek = mysql_query($dotaz);
if ($kod = mysql_fetch_array($vysledek) {
// OK
} else {
// wrong
}
Tomáš123
Profil
xaverista:
Alebo používaj break a medzi hodnotu ku ktorej sa po ukončení cyklu vrátiš:
<?php
  $vysledek = mysql_query("SELECT * FROM kody ORDER BY kredit DESC",$spojeni);
  while ($kod = mysql_fetch_array($vysledek){
    if($_POST['zadanykod'] == $kod['kod']){
      //probíhají úkony jako updatovani tabulky tedy přečtení peněz a vypsání OK hlášky
      $shoda = true;
    }
  }
  if($shoda !== true) {
    //kód bloku else
  }
?>
To iba ako alternatíva, lepšie rada ide od [#2] juriada.
xaverista
Profil
Ok díky, váhal jsem mezi tímto.
Jinak.ještě jde nějak v mysql dotazu udelat toto? V PDO jsem to normálně dělal
$vloz = mysql_query("INSERT INTO  test(uzivatel,nic) VALUES(?,?)");//nevím jak ten dotaz přesně je... Myslím že je to i ochrana proti sql injection, mam mám pravdu? 
Děkuji :-)

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