Jump to content
php.lv forumi

problēmas ar switch un id


eude

Recommended Posts

Kamēr visu taisīju un testēju uz sava datora tikmēr viss bija kārtībā. Taču uzliekot uz hosta (hostplex.eu) sākās problēmas, bet nevaru izdomāt, kas tieši ir pie vainas.

Tātad, man ir index fails, kurā ir galvenais switch ($f), ar kuru es rādu visu ko vēlos, šajā switchā ietilpst arī admina panelis, kurš, savukārt, pats satur citu switchu sevī. Skelets izskatās šāds:

$f = $_GET['f'];
switch($f){
[...]
case 'acp':
$o = $_GET['o'];
switch($o){
[šeit ir visas admina funkcijas]
}
break;
[...]
}

Tālākam piemēram ņemšu rakstu sekciju.

Manis rakstīto rakstu var apskatīt jebkurš, tāpēc tas ir ārpus otrā switcha, visi id un citi zvēri ir kārtībā, visu rāda.

Bet kad es cenšos labot vai dzēst kādu rakstu, tad man rāda, ka nepieciešams raksta id, lai gan id ir norādīts adresē.

Adrešu piemēri:

Vienkārši skatoties rakstu http://[domēns]/raksts/7/

Un cenšoties labot šo rakstu http://[domēns]/raksts/labot/7/

Es lietoju mod_rewrite. (gabals no htaccess faila zemāk).

RewriteRule ^raksts/([0-9]+)/$ ./?f=raksts&rid=$1 [QSA]
RewriteRule ^raksts/labot/([0-9]+)/$ ./?f=acp&o=editnews&rid=$1 [QSA]

Tā notiek ar visu, ko cenšos izmainīt caur admina paneli jeb visu, kas ir iekš otrā switcha.

Kamēr skatās rakstus, darbus galerijā tikmēr viss strādā, kā vajag.

Kas varētu būt par problēmu? Otrs switch? Hosts?

Link to comment
Share on other sites

par to, lai beigās vienmēr būtu / esmu parūpējies iekš mod rewrite. esmu uzlicis, ka, ja nav beigās /, tad viņš redirecto uz adresi, pieliekot beigās / :)

 

nu man jau rāda, ka ir id :/

Array ( [f] => acp [o] => editnews [rid] => 7 )

bet lapas vidū rāda manis veidoto kļūdas paziņojumu, ka vajag id, lai labotu rakstu. :/

 

dzēšana tomēr darbojas, nedarbojas tikai labošana.

Edited by eude
Link to comment
Share on other sites

par to, lai beigās vienmēr būtu / esmu parūpējies iekš mod rewrite. esmu uzlicis, ka, ja nav beigās /, tad viņš redirecto uz adresi, pieliekot beigās / :)

lol, es parasti daru tieši otrādi. ja beigās ir /, tad ņemu to nost

vienīgi ja ir arī parastie parametri (dažreiz tos vajag), tad gan ja beigās nav /, tad pielieku to klāt (lai starp path un "?" būtu /). bet tas tā, gaumes jautājums ^^

 

kr4 man ir viens standarta/universālais mod rewrite jebkurai web applikācijai (pārējā loģika/processings iekš php)

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]

RewriteCond %{QUERY_STRING} ^$
RewriteRule (.+)/$ $1 [R,L]

RewriteCond %{QUERY_STRING} .+
RewriteRule (.*[^/])$ $1/ [R,NE,L]

RewriteRule ^([a-z0-9-/]+?)/?$ ?nice=$1 [QSA]

nu man jau rāda, ka ir id :/

Array ( [f] => acp [o] => editnews [rid] => 7 )

bet lapas vidū rāda manis veidoto kļūdas paziņojumu, ka vajag id, lai labotu rakstu. :/

zna4it ar skeletu būs par maz, lai varētu tev palīdzēt ;)

kodu (kas pieņem lēmumu rādīt tevis veidoto kļūdas paziņojumu) studijā! :))

Edited by 2easy
Link to comment
Share on other sites

labot rakstu

	case 'editnews':
$rid = $_GET['rid'];
	if($id==''){echo '<h3>Kļūda</h3><div class="left-c">Vajag raksta id, lai to labotu!</div>';}
	else{
	$result = mysql_query("SELECT * FROM news WHERE id=$rid") or die(mysql_error());  
	$row = mysql_fetch_array( $result );
	$post = $row['post'];
	$post = str_replace("<","<","".$post."");
	$post = str_replace(">",">","".$post."");
	echo '<h3>Labot rakstu</h3><div class="left-c">
			<form action="/raksts/labots/'.$rid.'/" method="post">
			Virsraksts<br /><input name="title" type="text" style="width:250px;" value="'.$row['title'].'"/><br />
			Raksts<br />
			<script>edToolbar("post"); </script>
			<textarea name="post" id="post" class="ed">'.$post.'</textarea><br />
			<input name="Submit" type="submit"  value="Labot"/>
			</form></div>';
	}
break;

un dzēst

	case 'deletenews':
$rid = $_GET['rid'];
	if($rid==''){echo '<h3>Kļūda</h3><div class="left-c">Vajag raksta id, lai to dzēstu!</div>';}
	else{
	mysql_query("DELETE FROM news WHERE id='".$rid."'") 
	or die(mysql_error());  
	echo '<h3>Raksti</h3><div class="left-c">Raksts dzēsts!</div>';
	}
break;

 

edit: tikko pamanīju, ka man pie labošanas ir $id, nevis $rid. :D

tagad viss strādā.

pat nezinu kāpēc man tur pazuda r burts, jo failos, kas man stāv uz PC ir tur rid.

var slēgt ciet, paldies tik un tā ;)

Edited by eude
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...