Jump to content
php.lv forumi

īsti nezinu kā izskaidrot


eregi

Recommended Posts

Tātad īsti nezinu kā izskaidrot savu jautājumu/problēmu, bet centīšos to te uzskribilēt.

 

Ņemu no tabulas row'a Id ārā un ik pa brīdīm kāds id ir izdzēsts - iztrūkst, piemēram.

 

| Id | 
1
2
3
5
8

Un pa cik visu laiku vajadzēja dabūt to Id ( nedrīkstēja būt tukšums ) taisījos dabūt next id.

Variants, kurš strādāja bij

$id = 1;
$a = mysql_query("SELECT Id FROM db.table WHERE Id='$id'");
$b = mysql_fetch_array($a);

if(empty($b['Name']))
{
$a = mysql_query("SELECT Id FROM db.table WHERE Id>'$id'");
$b = mysql_fetch_array($a);
$id = $b['Id'];
}

 

Šāds variants strādā, bet vizuāli man nepatīk, pirms tā mēģināju šādu variantu -

	$id = 1;	
$a = mysql_query("SELECT Id FROM db.table WHERE Id='$id'");
$b = mysql_fetch_array($a);
while(epmty($b['Id']))
{
	$id++;
}

 

šāds variants izgāzās, php pēc 30 sec beidza apstrādāt skriptu. Mācoties esmu izlaidis tātad kādu php soli, bet šķiet, ka problēma bij, ka jaunais $id netika iekļauts qvērijā. pareizi?

 

Kurš variants šādā gadījumā būtu labāks?

 

++ mysql_query vietā izmantoju savu funkciju -

function dbQuery($line)
{
global $queryCount;
$queryCount++;
return mysql_query($line);
}

 

Tad jautājums tāds, īsa skripta beigās man sanāk, ka dbQuery ir lietots 83 reizes, vai tas ir normāli? Skripts izvelk 5 aptaujas, un attēlo jautājumus + rezultātus.

 

 

++ Sagribējās, lai mani pakritizē ( labā nozīmē ) t.i, lai iemācītos kaut ko jaunu, lai labotu kļūdas un savu programmēšanas stilu, so šeit būs divi skripti (haotiski un varbūt es varēju labāk, bet laiks neatļāva), kurus pa nakti uztaisīju vienai lapai.

Tabulas

pirmā tabula - votes
| Id | Q | A1 | A2 | A3 | A4 | A5 | A6|

Q - Jautājums.
Ax - Atbilžu varianti.

otrā tabula - users
| Id | Name | Surname | A1 | A2 | A3 | A4 | A5 | A6 |

Ax - laukos glabāju atbildes, kur x tur votes Id.

 

so šeit pirmais skripts, kurš attēlo kopējos rez - http://paste.php.lv/7805?lang=php

un šis attēlo, par, ko katrs lietotājs ir balsojis - http://paste.php.lv/7806?lang=php

 

paldies un bye

Edited by eregi
Link to comment
Share on other sites

Pēc idejas IDus nedrīkst lietot atkārtoti - ja reiz bija ieraksts ar ID 6 un viņš tika dzēsts, tad nākamais ieraksts iet ar ID 7. Tas ir tāpēc, ka datubāzē ar daudzām tabulām šāds ID jau var tikt izmantots kā norāde kaut kur citur. Ja izveidosi jaunu ierakstu ar ID 6, tad var sanākt nepareiza saistība, tas ir, zūd integritāte.

 

Piemēram, kā tu domā, kāpēc skripts ar dažām rindām varētu darboties ilgāk par 30 sekundēm ??? (patiesībā bezgalīgi, vienkārši php pārtrauc darbu, ja redz, ka iet virs 30 sek.)

Link to comment
Share on other sites

×
×
  • Create New...