Jump to content
php.lv forumi

Nerāda erroru!


vitao.web

Recommended Posts

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 by vitao.web
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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. :(

Link to comment
Share on other sites

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 by indoom
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by vitao.web
Link to comment
Share on other sites

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)."'

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...