Jump to content
php.lv forumi

kā var cīnīties


trinklins

Recommended Posts

karoče ir forma ar input type ='text' un input type = 'submit'. pie submitoshas dati no teksta lauka tiek ievadīti datubāzē vai tiek laboti respektīvi Update.

 

problēma ir tāda ka intensīvi spiežot submit pogu dati netiek vienreiz ievadīti, bet tie ievadīti vairākas reizes. Bet ja nospiež vienreiz, laujot redirektēties, tad nospiežam atkārtoti pogu un dati netiek atkārtoti ievadīti. :ph34r:

Link to comment
Share on other sites

<?
 Include("Includes/global.inc.php");
 checkPermissions(1, 1800);

// Has the form been submitted
if ($btnSubmit) {
   $nosaukums  = validateText("Strukturvieniba", $txtNosaukums, 2, 50, TRUE, FALSE);

   // are required fields were filled out
   if (!$strError) {
       // Pick the proper sql statement to query the database
       if ($pk_strukturvieniba) {
          $sql = "UPDATE strukturvieniba SET strukt_nosaukums='$nosaukums' WHERE pk_strukturvieniba=$pk_strukturvieniba";
          $strError = "Ieraksts izlabots veikmīgi.";
       } else {
          $sql = "INSERT INTO strukturvieniba (strukt_nosaukums) VALUES ('$nosaukums')";
          $strError = "Ieraksts izveidots veikmīgi.";
       }
       $result = dbquery($sql);
 redirect("strukturvieniba.php","strError=$strError");
       
   }// End if

// If we are deleting, delete the peripherals tied to the asset
} elseif ($delete AND $sessionSecurity < 1) {
$sqlPraverka = "SELECT pk_strukturvieniba FROM strukturvieniba LEFT JOIN darbavieta on fk_strukturvieniba=pk_strukturvieniba  WHERE fk_strukturvieniba IS NULL  AND pk_strukturvieniba ='$pk_strukturvieniba'";
	 $result=dbquery($sqlPraverka);
   $row = mysql_fetch_array($result);
   $pk_strukturvieniba = $row['pk_strukturvieniba'];
if ( $pk_strukturvieniba ){
 $sql = "DELETE FROM strukturvieniba WHERE pk_strukturvieniba= '$pk_strukturvieniba'";
	 $result = dbquery($sql);
   $strError = "Ieraksts izdzēsts veiksmīgi.";
}else{
 $strError = "Šī struktūrvienība vēl joprojām darbojas, tāpēc tā nevar tikt izdzēsta.";
}

}

// If you're editing load the vars
if ($pk_strukturvieniba) {

 $sql = "SELECT * FROM strukturvieniba WHERE pk_strukturvieniba=$pk_strukturvieniba";
 $result = dbquery($sql);

 $this = mysql_fetch_array($result);
 $pk_srtukturvieniba = $this["pk_strukturvieniba"];
 $nosaukums = $this["strukt_nosaukums"];

}

if ($pk_strukturvieniba) {
   $titlePrefix = "Labot";
   $addInstead = "  (<a href='strukturvieniba.php'>Pievienot jaunu struktūrvienību</a>)";
} else {
   $titlePrefix = "Pievienot";
}

writeHeader("$titlePrefix Struktūrvienību");
declareError(TRUE);
?>
<font color='ff0000'>*</font> Nepieciešamie laiki lai izdarītu ierakstu.<p>

<FORM METHOD="post" ACTION="<? echo $PHP_SELF?>">
<table border='0' cellpadding='1' cellspacing='0' width='400'>
 <tr>
   <td width='100'><font color='ff0000'>*</font> Nosaukums:
     <INPUT TYPE="hidden" NAME="pk_strukturvieniba" VALUE="<? echo $pk_strukturvieniba; ?>">
   </td>
   <td width='300'><INPUT SIZE="30" MAXLENGTH="50" TYPE="Text" NAME="txtNosaukums" VALUE="<? echo antiSlash($nosaukums); ?>"></td>
 </tr>
 <tr><td colspan='2'> </td></tr>
 <tr><td colspan='2'>
<input type="hidden" name="btnSubmit" 	 value="Ievadīt Informāciju">
<input type="submit" name="btnSubmit" 	 value="Ievadīt informāciju"> 
 <A HREF="<?=$_SESSION['linksD'];?>">Atpakaļ</A></td></tr>
</table>
</FORM>

<?
 echo "<b>Struktūrvienības</b> $addInstead<p>";
 $hw = "SELECT * FROM strukturvieniba ORDER BY strukt_nosaukums ASC";
 $sql = dbquery($hw);
 $results = mysql_num_rows($sql);

 if ($results > 0) {
?>
 <TABLE border='0' cellpadding='4' cellspacing='0'>
 <TR class='title'>
   <TD><b>Nosaukums</b>   </TD>
   <TD><b>Iespējas</b></TD>
<?

   while ($result = mysql_fetch_array($sql)) {
     $pk_strukturvieniba = $result['pk_strukturvieniba'];
     $nosaukums = $result['strukt_nosaukums'];

?>
<TR class='<? echo alternateRowColor(); ?>'>
  <TD><i><? echo $nosaukums; ?></i>   </TD>
  <TD>
     <A HREF="strukturvieniba.php?pk_strukturvieniba=<? echo $pk_strukturvieniba; ?>">Labot</A>
<? If ($sessionSecurity < 1) { ?>
     <A HREF="strukturvieniba.php?pk_strukturvieniba=<? echo $pk_strukturvieniba; ?>&delete=yes" onClick="return warn_on_submit('<?=pazinojums(TRUE,"struktūrvienību");?>');">Dzēst</A>
<? } ?>
  </TD>
</TR>
<?
 }
?></table><?
}

writeFooter();
?>

Link to comment
Share on other sites

kā vienmēr palīdz pēc submit pogas noredirektot/no header() oties uz sākumformu, lai tiktu nomesti POST/GET dati.

vai pirms updeita taisīt query: ķipa select 1 from tabula where `kollona_kura_jaaupdeito`='ievadaamaa veertiiba'

ja mysql_affected_rows atgriezh kaut, ko - tad taada shtuka datu baazee jau ir.

Vai arii glabaat kaut kur timeoutu (sessijaa piem.), kur salikt, ka updeitot nedrīks tuvāko 30 sek laikā

u.t.t. u.t.j.

Link to comment
Share on other sites

Vai nevar uzreiz rakstīt kaut ko līdzīgu:

UPDATE tabula SET kol1 = newval1, .., kolN = newvalN WHERE kol1=oldval1 AND ... AND kolN=oldvalN

Tad noupdeitot ar vieniem un tiem pašiem padotajiem laukiem varēs tikai vienreiz.

Protams, tas nozīmē, ka forma padod arī vecos datus (piemēram kā <input type=hidden...>)

Link to comment
Share on other sites

Jā runa iet par insertu. Tātad viņam vajag kautkādu nosacījumu, bet cik es saprotu viņam tajā nosacījumā vajag Selectu, respektivi noselektēt visus datus no tabulas un pārbaudīt vai tas nav vienāds ar ievadāmo vērtību. Ja tā tad lūgums ir tāds parādiet kā sql teikumam to var izdarīt. Nu nemāku :rolleyes:

 

tabula ir strukturvieniba ar diviem laukiem

pk_stukturvieniba -->primārā atslēga

strukt_nosaukums --> teksta lauks

 

INSERT INTO strukturvieniba (strukt_nosaukums) VALUES ('$nosaukums')

Link to comment
Share on other sites

sen neesmu raxtījis ar mysql_* f-jām pa tiešo ;) something like that:

 

$q=mysql_query("SELECT `pk_strukturvieniba` FROM strukturvieniba

WHERE `strukt_nosaukums`='".$nosaukums."'");

$f=mysql_fetch_array($q); //no kvērija rezultāta dabonam masīvu

if (!$f['pk_strukturvieniba'])

/* ja masīva apakšelements, kas atbilst tabulas kolonnai ir tukšs - nav atrasts neviena atbilstoša rindiņa */

mysql_query("INSERT INTO strukturvieniba SET `strukt_nosaukums`='".$nosaukums."'");

else

echo 'Šāds ieraksts jau iraid ar Nr. '.$f['pk_strukturvieniba'];

 

...

$f=mysql_fetch_array($q);

if (!$f['pk_strukturvieniba'])

... ja pareizi atceros, var aizvietot arī ar:

 

if (mysql_affected_rows($q))

// ja "aizskarto" rindu skaits lielāks par nulli - ieraksts iraid

Link to comment
Share on other sites

2 Mr.Venom. Paldies šis joks iet.....

 

 

bet nav tāda fīča ka quverijā pārbaudīt uzreiz, respektīvi:

 

insert into ... bla bla ... Where un tagad seko selekta teikums kas ļauj pārbaudīt vērtības. Nu cik zinu ir tāds joks selekts selektā.

Edited by trinklins
Link to comment
Share on other sites

kaut kā jau ir, BET selekts selektā iekš MySQL parādījies diezgan nesen, tāpēc ar to vēl nevajadzētu brīvi spēlēties.

Jāpadomā, varētu kaut ko izmocīt ar IF konstrukciju. Es būtībā "updeitojamās" vērtības ielieku citā variābli, piem.

 

$tmp="tabula SET `lauks`='vērtība',`lauks2`='vērtība2'"

ja neiet "UPDATE $tmp WHERE kaut kas", tad izpildās "INSERT $tmp"

Koda īsuma dēļ.

Link to comment
Share on other sites

×
×
  • Create New...