#1 před 3 lety

coinage
Člen
Registrovaný: 1. 6. 2009
Příspěvky: 5

Kontrola formuláře před uložením do DB

Zdaravím, mám problémek s kontrolou formuláře před vložením do databáze…

Mám formulář

<form action="gcin.php" method="POST">
  <p><strong>Název:</strong>
    <input size="50" maxlength="100" type="text" name="name" />&nbsp;
  <strong>Cislo GC:</strong>
    <input size="10" maxlength="10" value="GCXXXXX" type="text" name="gc" />
  </p>
  <p><strong>Typ:</strong>
  <select name="typ">
<option>zeme</option>
<option>dopis</option>
<option>multi</option>
<option>mys</option>
<option>virtual</option>
  </select>&nbsp;
   <strong>N:</strong>
    <input size="3" value="49" maxlength="3" type="text" name="N1" />°
    <input size="8" maxlength="8" type="text" name="N2" />
  &nbsp;
  <strong>E:</strong>
    <input size="3" value="016" maxlength="3" type="text" name="E1" />°
    <input size="8" maxlength="8" type="text" name="E2" />
  </p>
  <p><strong>Další info:</strong>
    <input size="100" maxlength="500" type="text" name="popis" />
  </p>
    <br>
    <input type="submit" value="vložit"/>
  </p>
 </form>

po potvrzení formuláře se mi vše vloží do db pomocí

<?php
// Načtení konfigurace
require "config.php";
// Výběr databáze a spojení s databází
MySQL_Select_DB($db_name, $spojeni) or Die(MySQL_Error());

$name = $_REQUEST["name"];
$gc = $_REQUEST["gc"];
$typ = $_REQUEST["typ"];
$N1 = $_REQUEST["N1"];
$N2 = $_REQUEST["N2"];
$E1 = $_REQUEST["E1"];
$E2 = $_REQUEST["E2"];
$popis = $_REQUEST["popis"];

// Zapsání dat do tabulky uzivatele
$sql="INSERT INTO $table (name, gc, typ, N1, N2, E1, E2, popis) VALUES ('$name', '$gc', '$typ', '$N1', '$N2', '$E1', '$E2','$popis')";

$vysledek = MySQL_Query($sql,$spojeni);

if (IsSet($vysledek)):
echo "Hotovo";
else:
echo "nepodařilo se";
endif;
MySQL_Close($spojeni);
?>

Zároveň se mi do DB uloží datum, kdy došlo k zápisu…

A teď k problému.

  1. Ať dělám co dělám, nemůžu zjistit, jak zkontrolovat pole gc tak, aby se to porovnalo s databazí a hodilo hlášku, že daná hodnota tam již je. Dále toto pole chci mít takové, že jde zadávat pouze velká písmena a čísla.
  2. Ještě bych chtěl, aby výpis z db umožňoval zobrazení posledních příspěvků ne starších jak 5dnů s ikonkou nové…

Děkuji za odpověďi … popř uvítám i úpravu kodu.

PS: Jsem úplný začátečník v PHP!!

Editoval coinage (1. 6. 2009 12:26)

 

#2 před 3 lety

phx
Moderator
Registrovaný: 17. 4. 2008
Příspěvky: 878

Re: Kontrola formuláře před uložením do DB

Ad 1) unikatni klic nad sloupeckem, a porovnavat zda strtoup($gc) == $gc nebo pomoci regularniho vyrazu.
Ad 2) to je otazka spis na SQL. Ale pouzijes podmiknu na datum.

Chtelo by to jit po mensich krocich a zkusit si projit nekolik tutorialu.

Umis v necem programovat nebo jsi i obecne programator zacatecnik?

 

#3 před 3 lety

coinage
Člen
Registrovaný: 1. 6. 2009
Příspěvky: 5

Re: Kontrola formuláře před uložením do DB

TOTÁLNÍ LAMA, JSEM RAD ZE JSEM DAL ASPON TOHLE DOHROMADY… DÍKY ZA JAKOUKOLIV RADU S UKÁZKOU…

 

#4 před 3 lety

danaketh
Člen
Registrovaný: 27. 12. 2008
Příspěvky: 23

Re: Kontrola formuláře před uložením do DB

  1. Vypni si Caps Lock ;)
  2. Přidej si do tabulky sloupec „datum“ (například – pojmenování je na tobě), nastav ho jako datetime. Při vkládání ho vyplňuj pomocí NOW() a z databáze pak data dostaneš pomocí SELECT * FROM tabulka WHERE datum > NOW() – INTERVAL 5 DAY

Insert:

<?php
$sql="INSERT INTO $table (name, gc, typ, N1, N2, E1, E2, popis, datum) VALUES ('$name', '$gc', '$typ', '$N1', '$N2', '$E1', '$E2','$popis', NOW())";
?>

Select:

<?php
$sql="SELECT * FROM $table WHERE datum > NOW() - INTERVAL 5 DAY";
?>

Editoval danaketh (1. 6. 2009 17:39)


Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.

 

#5 před 3 lety

coinage
Člen
Registrovaný: 1. 6. 2009
Příspěvky: 5

Re: Kontrola formuláře před uložením do DB

Tak to bych pochopil, ale jak udelam to, ze se mi ukaze v celym tom seznamu co se vypise ten obrazek u tech zaznamu, ktery nejsou starsi 5 dnu…
Tohle je ten hlavnu problem, a tam kde je to starsi, nepotrebuju nic…

 

#6 před 3 lety

danaketh
Člen
Registrovaný: 27. 12. 2008
Příspěvky: 23

Re: Kontrola formuláře před uložením do DB

Převeď si datum na unixovej čas (strtotime) a odečti to od time(). Vyjde ti nějaké číslo. Tohle číslo budeš porovnávat s počtem vteřin, které odpovídají 5 dnům (60*60*24*5). Dokud je menší, tak není záznam starší 5 dnů…

<?php
$time = time();
$five = 60*60*24*5;
foreach ($result as $row)       {
        $rtime = strtotime($row['datum']);
        if ( ($time - $rtime) < $five ) {
                echo 'huráááá... tady vyblinkáme ikonu';
        }
        else    {
                echo 'tak nic, tohle už je starý';
        }
}
?>

(S)prostá matematika ;) Teď jen jestli jsem tam někde nesek nějakou chybu. Snad ne…

Editoval danaketh (2. 6. 2009 19:42)


Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.

 

#7 před 3 lety

coinage
Člen
Registrovaný: 1. 6. 2009
Příspěvky: 5

Re: Kontrola formuláře před uložením do DB

Tak vypis jsem doplnil o tohle

$date = Date("Y-m-j");
$a = strtotime($date);
$b = strtotime($row['date']);
$c = $a - $b;
if ($c < 345601){
  echo "<td><img src=tajne/img/new.gif></img></td>";}
else{
  echo "<td>&nbsp;</td>";
}

a uz mi to funguje… starsi 5 dnu nemaj ikonku a ten zbytek jo…
Kazdopadne jsem byl nakopnut zde…

Ted uz jen to overeni toho formularoveho pole , aby mi to vyhodilo hlasku, ze je jiz zadano v databazi aje to…

Diky vsem

Editoval coinage (3. 6. 2009 9:11)

 

Zápatí