Gå til innhold

Feil med update-script?


Anbefalte innlegg

Holder på å mekke et lite script for å oppdatere div greier i databasen.

Men det funker ikke å oppdatere noe. Endrer jeg overskriften, blir den kun endret til "0" uansett hva jeg skriver, mens innholdet ikke blir endret idetheletatt. Her er koden jeg bruker:

 

enyhet.php

 

<?php
$con = mysql_connect('localhost','***','***');
$id = $_GET['id'];

if(!$con){
die ("Kunne ikke koble til databasen: " . mysql_error());
}

mysql_select_db('joachimc_mysql', $con);
$data = "SELECT * FROM Person WHERE Brukernavn = '$bruker'";
$sel = mysql_query($data);
$velg = mysql_fetch_array($sel);

if ($velg['Status'] != 'Innlogget') {
die ("Du må være logget inn for å se denne siden");
}

if ($velg['Rank'] != 'Admin') {
die ("Du må være administrator for å se denne siden");
}
$nyhet = mysql_query("SELECT * FROM Nyheter WHERE Nummer = '$id'");
$hent = mysql_fetch_array($nyhet);

$hentO = $hent['Overskrift'];
$hentB = $hent['Beskjed'];

echo "<form method='post' action='index.php?page=endretnyhet&id=$id'>
<input type='text' name='Overskrift' value='$hentO'></br></br>
<input type='text' cols='80' rows='10' name='Beskjed' value='$hentB'></br>
<input type='Submit' value='Legg til'>
</form>";


mysql_close($con);
?>

 

entretnyhet.php

 

<?php

$con = mysql_connect("localhost","***","***");
$bruker = $_SESSION['bruker'];
$id = $_GET['id'];
$beskjed = $_POST['Beskjed'];
$overs = $_POST['Overskrift'];

if (!$con) {
die ("Kunne ikke koble til databasen: " . mysql_error());
}

mysql_select_db("joachimc_mysql", $con);

$data = "SELECT * FROM Person WHERE Brukernavn = '$bruker'";
$sel = mysql_query($data);
$velg = mysql_fetch_array($sel);

if ($velg['Status'] != 'Innlogget') {
die ("Du må være logget inn for å se denne siden");
}

if ($velg['Rank'] != 'Admin') {
die ("Du må være administrator for å se denne siden");
}

$oppd = mysql_query("UPDATE Nyheter SET Overskrift = '$overs' AND Beskjed = '$beskjed' WHERE Nummer = '$id'");

if (!$oppd){
die ("Kunne ikke oppdatere: " . mysql_error());
}
else{
	echo "Nyheten ble oppdatert";
}

mysql_close($con);
?>

 

Har sittet og leitet etter feil her nå en stund, men finner den bare ikke.

 

Takker for hjelp :)

Endret av Jokkeman
Lenke til kommentar
Videoannonse
Annonse

echo "<pre>"; 
print_r( $_POST ); 
print_r( $_GET ); 
die();

Putt det i toppen av entretnyhet.php, rett under <?php, og se om verdiene i arrayene faktisk er det du forventer.

 

Bruk også & istede for & i lenker. Du ville fått feilmelding om det om du hadde forsøkt å validere siden.

 

Og sist, men absolutt ikke minst, scriptet ditt er fult mottakelig for SQL injections. Bruk mysql_real_escape_string() på tekst, og intval() / is_numeric() på tall.

if( ! is_numeric( $_GET['id'] ) ) { die( "IDen må være et tall!" ); }

$beskjed = mysql_real_escape_string( $_POST['beskjed'] ); 
// etc

Lenke til kommentar

Ahh oki, takk skal sjekke det ut senere. Er fortsatt på basicsene tror jeg så kan ikke så mye om sql-injections og hvrdan jeg skal sikre meg mot det.

 

EDIT: Kjørte den øverste koden og fikk fram de verdiene jeg skulle ha.

Endret av Jokkeman
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...