vitao.web Posted December 8, 2010 Report Share Posted December 8, 2010 (edited) Labdien! Atkal vēršos ar jautājumu, ceru, ka varēsiet palīdzēt. Pašam nesanāk. dbConnect(); // piekonektējos DB $act = $_GET['act']; $id = $_GET['id']; $cat_name = stripslashes($_POST['cat_name']); $description = stripslashes($_POST['description']); if ($act == 'save') { if (empty($_POST['cat_name']) or empty($_POST['description'])) { // parādu visu formu, ar visu kļūdu $errors = '<p class="error">You did not fill in a required field, please review your form and correct the missing information.</p>'; echo output_form($errors); exit; // Cik noprotu šis izslēdz vajadzību pēc else } dbFetch("Insert INTO gallery_cat (cat_name,description) values ('{$cat_name}','{$description}')"); } else { // parādu visu formu šeit echo output_form(); // Scripta beigas } // funkcija lai, <form. .. nav jāraksta dafiga reizes. function output_form($errors=null) { $form = null; if ($errors) { $form = $errors; } $form ="<form method='post' action='?act=save'> <input type='text' name='cat_name' value='$cat_name'/> <input type='text' name='description' value='$description'/> <input type='hidden' name='id' value='$id'/> <input type='submit' class='button' value='Post'/> </div> </form>"; return $form; } dbDisconect(); Edited December 8, 2010 by vitao.web Quote Link to comment Share on other sites More sharing options...
Roberts.R Posted December 8, 2010 Report Share Posted December 8, 2010 Neesmu 100% pārliecināts, bet es domāju, ka pilnīgi pietiek ar if(empty($var1 || $var2)){ // izmet eroru }else{ // viss kārtībā, daram, ko vajag darīt. } pat exit nevajag tur likt, jo tas if jau pārbauda, un attiecīgi aizmet uz vajadzīgo vietu. Quote Link to comment Share on other sites More sharing options...
vitao.web Posted December 8, 2010 Author Report Share Posted December 8, 2010 Neesmu 100% pārliecināts, bet es domāju, ka pilnīgi pietiek ar if(empty($var1 || $var2)){ // izmet eroru }else{ // viss kārtībā, daram, ko vajag darīt. } pat exit nevajag tur likt, jo tas if jau pārbauda, un attiecīgi aizmet uz vajadzīgo vietu. Bet man jau vajag lai arī pārbauda vai ir nospiesta poga Submit! Vajag lai visi lauki aizpildīti un nospiesta poga. :( Quote Link to comment Share on other sites More sharing options...
Roberts.R Posted December 8, 2010 Report Share Posted December 8, 2010 (edited) if($_POST) Dara visu brīnumu. Ja vēlies vēl precīzāk, tad <? if($_POST['save']){ print_r($_POST); } ?> <form action="" method="post"> <input type="submit" name="save" /> </form> Edited December 8, 2010 by Roberts.R Quote Link to comment Share on other sites More sharing options...
vitao.web Posted December 8, 2010 Author Report Share Posted December 8, 2010 Tur jau tas suns aprakts, ka viss saglabājās iekš DB, bet ja lauki nav aizpildīti error nelec ārā! "You did't fill all fields " Bet vnk neglabājās DB tad, bet ja viss ok(ierakstits viss) tad saglabajās. Bet man vjaag to paziņojumu dabūt :( Quote Link to comment Share on other sites More sharing options...
indoom Posted December 8, 2010 Report Share Posted December 8, 2010 (edited) if ($_POST['save']) rādīs kļūdu, kad nebūs $_POST['save']. Submitu var pārbaudīt, piem., ar if ($_SERVER['REQUEST_METHOD'] === 'POST') { // ir posts } Par to kļūdas rādīšanu, norādītajā kodā funckijā nomaini $form = $errors . "<form method='post' action='?act=save'>....</form>"; kā arī funkcijā vajag mainīgos ielikt no ārpuses ar function output_form($errors=null) { global $cat_name, $description, $id; Un visiem mainīgajiem pieliec pārbaudi, ja negribi, lai kļūdas metas. $cat_name = stripslashes(!empty($_POST['cat_name'] ? $_POST['cat_name'] : ''); Ja kas, stripslashes vajag tikai, ja ir ieslēgtas magic quotes. Un pirms liec datubāzē, pieliec vēl mysql_real_escape_string() dbFetch("Insert INTO gallery_cat (cat_name,description) values (' ".mysql_real_escape_string($cat_name)."','".mysql_real_escape_string($description)."')"); Edited December 8, 2010 by indoom Quote Link to comment Share on other sites More sharing options...
Roberts.R Posted December 8, 2010 Report Share Posted December 8, 2010 Tur jau tas suns aprakts, ka viss saglabājās iekš DB, bet ja lauki nav aizpildīti error nelec ārā! "You did't fill all fields " Bet vnk neglabājās DB tad, bet ja viss ok(ierakstits viss) tad saglabajās. Bet man vjaag to paziņojumu dabūt :( Pamēģini ta vienkārši echo $errors; Ja šitā strādās, tad kaut kas nav ar funkciju. Vai arī... pirms funkcijas nav jāliek lieks echo, jo funkcijai jau ir return. Quote Link to comment Share on other sites More sharing options...
vitao.web Posted December 8, 2010 Author Report Share Posted December 8, 2010 (edited) indoom Super! Beigu variants: diemžēl, ja ņemu iekšā to mysql_real_escape_string tad man atkal nestrādā :( dbConnect(); // connecting to DB $act = $_GET['act']; $id = $_GET['id']; $cat_name = stripslashes(!empty($_POST['cat_name']) ? $_POST['cat_name'] : ''); $description = stripslashes(!empty($_POST['cat_name']) ? $_POST['cat_name'] : ''); if ($act == 'save') { if (empty($_POST['cat_name']) or empty($_POST['description'])) { // echo out the ENTIRE FORM here, with the error and form fields intact $errors = '<p class="error">You did not fill in a required field, please review your form and correct the missing information.</p>'; echo output_form($errors); exit; // this line eliminates need for "else" } dbFetch("Insert INTO gallery_cat (cat_name,description) values (' ".($cat_name)."','".($description)."')"); } else { // echo out entire form here echo output_form(); // End of script, no exit needed } // So I wouldn't have to write <form> many times! function output_form($errors=null) { global $cat_name, $description, $id; $form = null; // To squelch undefined variable errors if ($errors) { $form = $errors; } $form = $errors . "<form method='post' action='?act=save'> <input type='text' name='cat_name' value='$cat_name'/> <input type='text' name='description' value='$description'/> <input type='hidden' name='id' value='$id'/> <input type='submit' class='button' value='Post'/> </div> </form>"; return $form; } dbDisconect(); Edited December 8, 2010 by vitao.web Quote Link to comment Share on other sites More sharing options...
indoom Posted December 8, 2010 Report Share Posted December 8, 2010 pēc dbFetch ieliec rindu echo mysql_error(); un paskaties kādu kļūdu rāda, kad nestrādā ar mysql_real_escape_string. Bez mysql_real_escape_string() tu padod savu db urķiem uz paplātes. Šīs rindas vispār nav vajadzīgas. Var jau redzēt, ka nākamajā rindā $form tiek pārrakstīts. $form = null; // To squelch undefined variable errors if ($errors) { $form = $errors; } Kā arī funkcijā, formā, valuēs vajag htmlspecialchars() <input type='text' name='cat_name' value='".htmlspecialchars($cat_name)."'/> <input type='text' name='description' value='".htmlspecialchars($description)."'/> <input type='hidden' name='id' value='".htmlspecialchars($id)."'/> un dbFetchā pirms $cat_names ir lieks speiss ielicies: (' ".($cat_name)."' Quote Link to comment Share on other sites More sharing options...
Kemito Posted December 8, 2010 Report Share Posted December 8, 2010 Vispār jau jāliek ir nevis if($error){echo $error;} Bet gan ieliec if(isset($error)){echo $error;} Un priecājies par burvīgo skatu Quote Link to comment Share on other sites More sharing options...
marcis Posted December 8, 2010 Report Share Posted December 8, 2010 Kemito, vispār jau nav gan. indoom ir iepriekš nodefinējis $error = null; attiecīgi kļūdas paziņojums par neeksistējošu mainīgo netiks mests. Protams, var lietot isset(), taču šeit tas nav obligāti. Tā kā loģiskā izteiksme tiek "kāstota uz boolean" un (bool)null atgriež false, tad rezultāts būs tieši tāds pats kā izteiksmei ar isset(), kas arī atgriezīs false, ja mainīgais būs null. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.