Gå til innhold

Får ikke UPDATE (MySQL) til å virke...


Anbefalte innlegg

Hei guruer, er det noen av dere som klarer å se hvorfor jeg ikke får UPDATE til å virke?

Jeg får ingen feilmeldinger, og blit tatt tilbake til dagbok.php, men posten jeg editerte er ikke endret...

 

Skjemaet (dbdetaljediter.php?brukerindeks=7):

<?php
$bindeks =$_GET[brukerindeks];
include("kobletildatabse.php");
   $sql = "SELECT indeks, dato_opprettet, overskrift, innhold FROM tab2
              WHERE brukernavn='{$_SESSION['brukernavn']}' AND brukerindeks= $bindeks
              ORDER BY brukerindeks DESC";
           
   $sql_resultat=mysql_query($sql);
           
   while ($arr=mysql_fetch_array($sql_resultat)){
    $dbdato = date("d.m.y",strtotime($arr["dato_opprettet"]));
    ?> 
   	<FORM METHOD="POST" ACTION="http://inter.net/dboppdatersql.php" NAME="dagbokskjema">
    <p>
        Oppføringens overskrift:<br>
        <INPUT TYPE="text" NAME="overskrift" VALUE="<?php echo $arr['overskrift']?>" SIZE="70" MAXLENGTH="70"><br><BR>
        Oppføringens innhold:<br>
        <TEXTAREA NAME="innhold" ROWS="12" COLS="70" WRAP="hard"><?php echo $arr['innhold']?></TEXTAREA><br><BR>
        <INPUT TYPE="submit" NAME="send" VALUE="Send">
        <INPUT TYPE="hidden" NAME="index" VALUE="<?php echo $arr['brukerindeks']?>">        	
    </p>
    </FORM>
    <?php
    }
    ?>	

 

dboppdatersql.php:

<?php
session_start(); //Session-scriptet til SirIce (http://www.misinterpreted.net/indexarticlephp-1.htm)
if ($_SESSION["login"] != "true"){

header("Location: http://inter.net/registrer.php");

$_SESSION["error"] = "<font color=red>Beklager...</font>";
exit;
}

$brukernavn=($_SESSION ['brukernavn']);
$dato =(date("Y.m.d"));
$innhold = mysql_escape_string($innhold);
$overskrift = mysql_escape_string($overskrift);
$dato = mysql_escape_string($dato);
$brukernavn = mysql_escape_string($brukernavn);
$bindeks =$_GET[brukerindeks];

include ("pobasekopling.php");
$sql = "UPDATE tab2
       SET innhold= '$_POST[innhold]', overskrift='$_POST[overskrift]', dato_endret= '$dato'
       WHERE brukernavn='{$_SESSION['brukernavn']}' AND brukerindeks='$_GET[brukerindeks]'";
mysql_query($sql)or die(mysql_error());
header('Location: http://inter.net/dagbok.php');
?>

Lenke til kommentar
Videoannonse
Annonse

$_POST[innhold] fungerer fint det, vil bare gje ein "lovleg" error. Så den korrekte måten å skrive det på er:

innhold= '".$_POST['innhold']."',

altså med variablen inne i ".."

 

For feilen i skriptet ditt: brukerindeks='$_GET[brukerindeks]'

Skulle ikkje denne vært: brukerindeks='".$_POST['index']."' ?

 

Også, du har masse kode som gjør informasjonen sent via "post" sikker, men du bruker ikkje denne i querien ? Vist eg var deg ville eg brukt det.

$brukernavn=($_SESSION ['brukernavn']);
$dato =(date("Y.m.d"));
$innhold = mysql_escape_string($innhold);
$overskrift = mysql_escape_string($overskrift);
$dato = mysql_escape_string($dato);
$brukernavn = mysql_escape_string($brukernavn);
$bindeks =$_GET[brukerindeks];

Lenke til kommentar

For feilen i skriptet ditt: brukerindeks='$_GET[brukerindeks]'

Skulle ikkje denne vært: brukerindeks='".$_POST['index']."' ?

brukerindeks er et felt i tabellen som øker med én for hver gang en spesifikk bruker registrerer en post. Eks:

Navn    Innhold     Brukerindeks
arne    hei hei     1
siri    javel       1
siri    neivel      2
siri    tralala     3
arne    tamtara     2

 

Nå ser det slik ut, uten at posten blir oppdatert av den grunn...:

$sql = "UPDATE tab2
       SET innhold= '".$_POST['innhold']."', overskrift='".$_POST['overskrift']."', dato_endret= '$dato'
       WHERE brukernavn='{$_SESSION['brukernavn']}' AND brukerindeks='".$_POST[brukerindeks]."'";

Litt usikker på hvorfor jeg trengte alle anførselstegnene og punktumene her.

 

Jeg har en annen fil, som ser slik ut, som legger inn en ny post i tabellen , og som fungerer helt utmerket:

           $bindeks = 1;
           $sql = "INSERT INTO tab2
           (innhold, overskrift, dato_opprettet, brukernavn, passord, brukerindeks)
           VALUES
           ('$innhold', '$overskrift', '$dato', '$brukernavn', '$passord', '$bindeks')";
           mysql_query($sql);

 

Jeg har ytterligere en fil som sletter en post i tabellen, som også fungerer helt utmerket:

       $sql = "DELETE FROM tab2
           WHERE brukernavn='{$_SESSION['brukernavn']}' AND brukerindeks= $bindeks";
       mysql_query($sql)or die(mysql_error());

 

Hvorfor må det være annerledes i UPDATE?

Lenke til kommentar

hmm, du har:

<INPUT TYPE="hidden" NAME="index" VALUE="<?php echo $arr['brukerindeks']?>">   

i formen din, for meg ser dette ut som at det er brukerindeksen til den posten som skal forandres. I.e. denne MÅ inkluderes i update koden din.

 

Eg har skrevet om filene litt, vennlegs prøv desse og se om det virker nå.

Har kommentert nokre linjer som eg ikkje fårstår kvifor du har der, også det er vanlegvis ein god ide å gjøre database tilkoblinger osv i ein config fil, som startes på toppen av kvar side.

 

<?php
$bindeks = $_GET['brukerindeks'];
include("kobletildatabse.php");
  $sql = "SELECT indeks, dato_opprettet, overskrift, innhold FROM tab2
             WHERE brukernavn='".$_SESSION['brukernavn']."' AND brukerindeks='$bindeks'
             ORDER BY brukerindeks DESC";
          
  $sql_resultat=mysql_query($sql);
          
  $arr = mysql_fetch_array($sql_resultat));

if (!empty($arr['indeks'])) {
   $dbdato = date("d.m.y",strtotime($arr["dato_opprettet"]));
   ?> 
   <FORM METHOD="POST" ACTION="http://inter.net/dboppdatersql.php" NAME="dagbokskjema">
<INPUT TYPE="hidden" NAME="brukerindeks" VALUE="<?php echo $arr['brukerindeks']?>"> 
   <p>
       Oppføringens overskrift:<br>
       <INPUT TYPE="text" NAME="overskrift" VALUE="<?php echo $arr['overskrift']?>" SIZE="70" MAXLENGTH="70"><br><BR>
       Oppføringens innhold:<br>
       <TEXTAREA NAME="innhold" ROWS="12" COLS="70" WRAP="hard"><?php echo $arr['innhold']?></TEXTAREA><br><BR>
       <INPUT TYPE="submit" NAME="send" VALUE="Send">        
   </p>
   </FORM>
   <?php
   }
   ?>

 

<?php
session_start(); //Session-scriptet til SirIce (http://www.misinterpreted.net/indexarticlephp-1.htm)
if ($_SESSION["login"] != TRUE){

header("Location: http://inter.net/registrer.php");

$_SESSION["error"] = "<font color=red>Beklager...</font>";
exit;
}

$dato = date("Y.m.d");
$innhold = mysql_escape_string($_POST['innhold']);
$overskrift = mysql_escape_string($_POST['$overskrift']);
//$dato = mysql_escape_string($_POST['$dato']); Brukes ikkje...
//$brukernavn = mysql_escape_string($_SESSION['brukernavn']); Dette skulle ikkje vært nødvendeg... 
//$bindeks = $_GET[brukerindeks]; Kor finner du denne henne ?

include("kobletildatabse.php");
//include ("pobasekopling.php"); Finnes denne filen ? Eg skiftet den med den som blir brukt i formen
$sql = "UPDATE tab2
      SET innhold='$innhold', overskrift='$overskrift', dato_endret='$dato'
      WHERE brukernavn='".$_SESSION['brukernavn']."' && brukerindeks='".intval($_POST['brukerindeks'])."'";
mysql_query($sql) or die(mysql_error());
header('Location: http://inter.net/dagbok.php');
?>

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...