webForumDet fria alternativet

Vanudå?

15 svar · 363 visningar · startad av pakmannen

pakmannenMedlem sedan dec. 2002227 inlägg
#1

Började precis använda vad jag tror är en nyare version av php än den jag använt tidigare, och fann att följande
kod inte längre verkar fungera:
--------------------------------------------

if($delete) {
//Öppnar databasen och lägg in värdena
$open = mysql_connect("localhost", "user", "password");
$db = mysql_select_db("galaxi_se", $open);
$query = "DELETE FROM nyheter WHERE id = '$id'";
mysql_query($query);

//Stänger databasen
mysql_close($open);

//Printar text
print "Nyheten raderades. Du skickas tillbaka till admin.";
}

else {
//Öppnar databasen och lägg in värdena
$open = mysql_connect("HOST", "USER", "PASS");
$db = mysql_select_db("tjoff_com", $open);
$query = "UPDATE nyheter SET rubrik = '$newsrubrik', text = '$newstext', datum = '$datum' WHERE id = '$id'";
mysql_query($query);

//Stänger databasen
mysql_close($open);

//Printar text
print "Nyheten uppdaterades. Du skickas tillbaka till admin.";
}

-----------------------------------
Någon som vet varför?

tydalMedlem sedan juni 20034 013 inlägg
#2

Lägg in:

$id = $_GET['id']

före din första rad här.

(eller $_POST['id'] om id kommer från ett formulär som du postar.)

Gislaved.netMedlem sedan juni 20001 521 inlägg
#3

Jag hoppas att
$open = mysql_connect("mysql.galaxi.se", "användarnamn", "lösenord");

Inte är det verkliga användarnamn och lösenord som du använder. Det är ju inte så bra att skriva ut det här, kanske. Förhoppningsvis har accepterar servern bara anslutningar från localhost.

pakmannenMedlem sedan dec. 2002227 inlägg
#4

Whops, inte smart att skriva medelanden när man är så trött som jag är. Jag har även detta i koden:

$id=$_POST['id'];
$delete=$_POST['delete'];
$prodrubrik=$_POST['prodrubrik'];
$prodtext=$_POST['prodtext'];
$prodpris=$_POST['prodpris'];
$bildurl=$_POST['bildurl'];

Då alla värden hämtas ifrån ett formulär. (Varför behöver man förresten göra så här? Innan behövdes ju inte $_POST användas, finns det några fördelar med detta?)

Funkar ändå inte. Det skumma är att allt annat fungerar, alltså att lägga in information och hämta information ur databasen, men att uppdatera den verkar inte gå.

Gislaved.net: Tack för varningen, var som sagt mkt trött och förbisåg detta, hoppas ingen jätteelak person fick syn på dom och tänker sabba hela databasen nu! :)

(Det är bara en liten databas, så det är ingen direkt fara, och jag kan byta lösenordet och loginet om det skulle hända något)

tydalMedlem sedan juni 20034 013 inlägg
#5

Anledningen till att man måste använda $_GET och $_POST (samt $_COOKIE) är denna:

if ($user == "kalle" && $pass == "hemligt")
{
$inloggad = true;
}
if ($inloggad)
{
// hemligt innehåll
}

Om man nu använder adressen: sida.php?inloggad=true så behöver man inte kunna lösenordet!

Gislaved.netMedlem sedan juni 20001 521 inlägg
#6

Vilket kan lösas mycket enkelt genom att sätta

$inloggad = false;
if ($user == "kalle" && $pass == "hemligt")
{
$inloggad = true;
}
if ($inloggad)
{
// hemligt innehåll
}

Att det blir fel beror på att register_globals har stängts av vid installationen av PHP. Du kan sätta igång register_globals igen så fungerar dina script. Tänk på att koda säkert bara.

Gislaved.netMedlem sedan juni 20001 521 inlägg
#7

Gislaved.net: Tack för varningen, var som sagt mkt trött och förbisåg detta, hoppas ingen jätteelak person fick syn på dom och tänker sabba hela databasen nu!

Byt lösenordet ändå, det är säkrast. Fast din databas verkar vara skyddad från åtkomst utifrån. Det går säkert att komma runt det också, så se upp.

tydalMedlem sedan juni 20034 013 inlägg
#8

> Vilket kan lösas mycket enkelt genom att sätta

Javisst, om man kommer ihåg det varje gång. För oss C-programmerare är det ju ingen konst i och för sig...

pakmannenMedlem sedan dec. 2002227 inlägg
#9

Jo, men är det ingen som vet varför UPDATE grejen inte fungerar?

Den här koden fungerar:

$newsrubrik=$_POST['newsrubrik'];
$newstext=$_POST['newstext'];
$datum=$_POST['datum'];

//Öppnar databasen och lägg in värdena
$open = mysql_connect("localhost", "user", "password");
$db = mysql_select_db("galaxi_se", $open);
$query = "INSERT nyheter (rubrik, text, datum) VALUES ('$newsrubrik', '$newstext', '$datum')";
mysql_query($query);

//Stänger databasen
mysql_close($open);

Och det här fungerar:

$id=$_GET['id'];

$open = mysql_connect("localhost", "user", "password");
$db = mysql_select_db("galaxi_se", $open);
$query = "SELECT * FROM nyheter WHERE id = '$id'";
$data = mysql_query($query) or die(mysql_error());

while ($rad = mysql_fetch_array ($data)) {

print "<form method=\"post\" action=\"updatenews.php\">";
print "<input type=\"hidden\" name=\"id\" value=\""; print $id; print "\"/>";
print "<p>Rubrik:<br/><input class=\"textbox\" size=\"25\" type=\"text\" name=\"newsrubrik\" value=\"";
print $rad["rubrik"];
print "\"/><br/>";
print "Brödtext:<br/><textarea class=\"textbox\" cols=\"33\" rows=\"10\" name=\"newstext\">";
print $rad["text"];
print "</textarea><br/>";
print "Dagens datum:<br/><input class=\"textbox\" size=\"25\" type=\"text\" name=\"datum\" value=\"";
print $rad["datum"];
print "\"/><br/></p>";
print "<p><input type=\"checkbox\" name=\"delete\" /> Kryssa i rutan för att radera nyheten.</p>";
print "<p><input class=\"knapp\" type=\"submit\" value=\"Uppdatera\" /> <input class=\"knapp\" type=\"reset\" value=\"Återställ\" /></p>";
print "</form>";
}

//Stäng databasen
mysql_close($open);

Men inte detta:

$id=$_POST['id'];
$delete=$_POST['delete'];

$newsrubrik=$_POST['newsrubrik'];
$newstext=$_POST['newstext'];
$datum=$_POST['datum'];

if($delete) {
//Öppnar databasen och tar bort nyheten
$open = mysql_connect("localhost", "user", "password");
$db = mysql_select_db("galaxi_se", $open);
$query = "DELETE FROM nyheter WHERE id = '$id'";
mysql_query($query);

//Stänger databasen
mysql_close($open);

//Printar text
print "Nyheten raderades. Du skickas tillbaka till admin.";
}

else {
//Öppnar databasen och lägg in värdena
$open = mysql_connect("localhost", "user", "password");
$db = mysql_select_db("tjoff_com", $open);
$query = "UPDATE nyheter SET rubrik = '$newsrubrik', text = '$newstext', datum = '$datum' WHERE id = '$id'";
mysql_query($query);

//Stänger databasen
mysql_close($open);

//Printar text
print "Nyheten uppdaterades. Du skickas tillbaka till admin.";
}

Någon som vet varför?

pakmannenMedlem sedan dec. 2002227 inlägg
#10

Vore hemskt bra om någon kunde ge lite tips och så..

QimenMedlem sedan juni 20015 009 inlägg
#11

Vad får du för fel då?

pakmannenMedlem sedan dec. 2002227 inlägg
#12

Scriptet ska ju som sagt updatera en post i databasen, alltså UPDATE funktionen (SQL), men det funkar inte. Posten uppdateras inte. Men det går att skapa poster, och hämta data ifrån poster. Så något konstigt är det ju.

Gislaved.netMedlem sedan juni 20001 521 inlägg
#13

Får du något fel från databasen?

pakmannenMedlem sedan dec. 2002227 inlägg
#14

Nepp. Det liksom bara händer ingenting. Är det något fel på php-koden, eller är det något annat som muppar sig?

Gislaved.netMedlem sedan juni 20001 521 inlägg
#15

Lägg till

error_reporting (E_ALL);

i början av scriptet och se om du får några felmeddelanden.

pakmannenMedlem sedan dec. 2002227 inlägg
#16

Det löste sig, jag hade missat EN(!) liten ***** bokstav i hosten. Grr. Nåja, allt fungerar och så, men tack för all hjälp i alla fall.

125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)