webForumDet fria alternativet

krångel i min adminstration av mysql-tabell.

PHP

8 svar · 288 visningar · startad av Tinwëlint

Medlem sedan maj 2004451 inlägg
Frågan#1

Det här skriptet som jag har byggt utifrån Internetworlds php/mysql-publiceringssystemskola (som jaf egentligen inte har någon aning om kvaliteten på. Kvaliteten på html-koden däri var i alla fall urusel.) fungerar inte som det ska (inte alls i stort sett).
Jag har kollat igenom flera gånger nu och kan inte förstå varför det inte fungerar om det inte är något grundläggande fel (eller möjligtvis sql-syntaxfel). Hoppas någon kan se ganska lätt vad felet kan tänkas vara.

Sidan ligger här:
http://www.degerfors-afk.net/news_admin.php

Och bifogas som phps.

De svenska bokstäverna blir fel eftersom jag inte har encodat om till UTF-8 än.

Medlem sedan dec. 1999757 inlägg
#2

Syftet med tidningars skolexempel är förmodligen att man ska få lite inblick i hur grunderna fungerar och vad som händer vid olika förfaranden.

Ditt skript borde rimligen inte fungera på normalt konfigurerade webbservrar.

Du får gå igenom hela din fil och kolla upp alla variabler som skickas med URL och metoden POST från formulären och sedan fixa till dessa.

Exempelvis:

// efter submit
if ($edit_news && $action=="add") {
	$sql="insert into news (date, name, header, summary, content) values (\"$date\", \"$name\", \"$header\", \"$summary\", \"$content\")";
	$rs=mysql_query($sql, $conn);
}

bör se ut något liknande

// efter submit
if ($_POST['edit_news'] && $_POST['action'] == 'add') {
	$sql = "insert into news (date,name,header,summary,content) 
			values 
			(" . addslashes($_POST['date']) . "," . addslashes($_POST['name']) . "," . addslashes($_POST['header']) . "," . addslashes($_POST['summary']) . "," . addslashes($_POST['content']) . ")";
  	$rs = mysql_query($sql, $conn);
}

Innan du går igenom hela filen så kan du testa att lägga till raden

extract($_REQUEST);

i början av ditt skript.

Jag noterade även längre ned att koden

<input type=\\"hidden\" name=\"action\" value=\"add\" />
<input type=\"hidden\" name=\"newsid\" value=\"$newsid\" />
<input type=\"hidden\" name=\"action\" value=\"$action\" />

kan innehålla två olika värden för samma parameter (action) och det är nog inte meningen.

Medlem sedan maj 2004451 inlägg
#3

Lite osjysst ändå av dom att skriva sånt som inte funkar. De där dubbla action tyckte jag också verkade märkliga (de var med i IW:s exempel).
Usch. Jag börjar väl med det du har föreslagit.

Medlem sedan maj 2004451 inlägg
#4

Inget av det där verkade hjälpa. (Jag förstod inte heller vad det där med addslashes skulle göra).

Jag får väl söka lite och kolla lite andra skript och försöka lära mig därifrån för IW:s skript var då inget att lita på. Provade direkt det som de själva hade lagt upp. Det första som hände var att webbläsaren missupfatttade:

<FORM ACTION=$PHP_SELF METHOD=post>

och trodde att method var en url p g a att det saknades citattecken. ($PHP_SELF ersattes med ingenting) Riktigt skräpig html.
Efter att det åtgärdats så hände det förväntade. Det funkade inte alls. Men det är väl som kjell säger inget att räkna med. Lite tråkigt känns det dock.

Medlem sedan dec. 1999757 inlägg
#5

Tinwëlint skrev:

Jag förstod inte heller vad det där med addslashes skulle göra

addslashes() behövs inte i filen generellt men var lämpligt just där. Det var $_GET och $_POST som var det viktiga men borde fungerat med raden extract($_REQUEST); om skriptet i övrigt är korrekt.

Tinwëlint skrev:

$PHP_SELF ersattes med ingenting

Samma sak här, det bör vara $_SERVER['PHP_SELF']

Om skriptet inte fungerar så är det bättre att göra ett nytt. Det är ju en tämligen enkel funktion så det tar inte längre tid än att felsöka det gamla. Det borde rimligen finnas liknande exempel här i forumet om du söker i trådarna eftersom det handlar om en vanligt förekommande publiceringskod.

Om inte annat så kanske någon vänlig skäl med några minuter till övers kan fixa ett till dig. Själv sitter jag på en lite avsides plats just nu men om ingen hinner före så fixar jag en fil till dig senare.

Medlem sedan maj 2004451 inlägg
#6

Ok, tack. Sökte runt lite men lyckades inte hitta något bra. IW:s skript har jag inte lyckats få att funka. Det var väl inte så bra skrivet.

Medlem sedan dec. 1999757 inlägg
#7

Ursäkta att det dröjde lite längre än vad som var tänkt från början.
http://member.webforum.nu/2/newsadmin.txt
Den passar nog inte din mysql-tabell men överst i skriptet finns tabellstrukturen. HTML-koden får du styra med själv :)

Medlem sedan maj 2004451 inlägg
#8

Tack så jättemycket. Ska omedelbart sätta mig in i det där skriptet.

Medlem sedan maj 2004451 inlägg
#9

Det funkade finfint.

264 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)