kroekkete Skrevet 28. mai 2004 Del Skrevet 28. mai 2004 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
Pangaea Skrevet 28. mai 2004 Del Skrevet 28. mai 2004 $_POST[innhold] skal være $_POST['innhold']. Se om det funker Lenke til kommentar
kroekkete Skrevet 28. mai 2004 Forfatter Del Skrevet 28. mai 2004 $_POST[innhold] skal være $_POST['innhold'].Se om det funker Takk for tipset! Dessverre, da fikk jeg parse error... Forsøkte både med $_POST['innhold'] og '$_POST['innhold']' men begge ga error. Lenke til kommentar
The Red Devil Skrevet 28. mai 2004 Del Skrevet 28. mai 2004 $_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
kroekkete Skrevet 28. mai 2004 Forfatter Del Skrevet 28. mai 2004 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
The Red Devil Skrevet 28. mai 2004 Del Skrevet 28. mai 2004 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
kroekkete Skrevet 28. mai 2004 Forfatter Del Skrevet 28. mai 2004 Takk for innsatsen din, Røde Djevel, du har jo sett problemet med brukerindeks/index hele tiden du... Fordømt irriterende med de feilene der! Tusen takk for tålmodigheten! Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå