Kjapp og trygg hosting for Wordpress

UPDATE Query setter inn 0 i SQL

Cisse

Medlem
Hei igjen!

Jobber med siste finishen på admin panaelet mitt, og har et problem. Denne skjemabehandlingen setter kun inn tallet 0 som verdi i SQL da det er kjørt.

PHP:
<?php
	
	require_once("../connect.php");

	
	$q = "SELECT * FROM Bergersetra;";
	$r = mysql_query($q) or die(mysql_error());
	$row = mysql_fetch_array($r) or die(mysql_error());
	
	
	$i = $row['Innhold'];
	$e = $row['Endret'];
	
	if(isset($_POST['lagre'])) {
		
		$innhold = $_POST['Innhold'];
		$endret = date("d.m.Y");
		
		$query = "UPDATE Bergersetra SET Innhold='".$innhold."' AND Endret='".$endret."' WHERE Innhold='".$row['Innhold']."' AND Endret='".$row['Endret']."';";
		$result = mysql_query($query) or die(mysql_error());
		
		echo("Siden er endret!");
		header("location: Hjem.php?side=LagreBergersetra");
	} else {
		echo "<h2>Endre siden om Bergers&aelig;tra</h2>
					  <form action='LagreBergersetra.php' method='POST'>
					  <p>Nytt innhold p&aring; siden:</p><br>
					  <textarea name='Innhold' rows='30' cols='60'>$i</textarea><br>
					  <input type='submit' name='lagre' value='Lagre Siden'>
					  </form>";
	}
?>

Jeg veit også at jeg har noen VELDIG uoversiktlige og rotete koder bare så det er sagt! :p
 

drlinux

Konsulent i PHP og Linux
Er det feltet Innhold du skal oppdatere med verdien fra textarea i form?

Ang. at du får verdien 0, så kan du være at du har feil datatype på denne kolonnen. Er den en INT istedet for VARCHAR eller TEXT?

En annen sak er at du med fordel kan endre din WHERE til å bruke radens Id hvis det kun er én rad som skal oppdateres.
 

complx

New Member
Kanskje du har klart å løse problemet ditt nå, i og med at dette er en stund siden, men poster likevell.

Jeg kan først og fremst ikke se noen spesiell grunn til at ditt script ikke fungerer. Dersom du poster et utsnitt av din html kode (<form></form> koden), kan jo være at du har feil navn på din POST request eller noe.

Når det gjelder $endret = date("d.m.Y"), så har du brukt feil syntax her. Når du skal fylle inn dato i PHP må du skrive det slik. $endret = date("Y-m-d"). Dette er eneste måten jeg har klart å få dato inn i mysql database.

Vil også sterkt anbefale deg å unngå mysql_query, bruk heller msqli eller PDO. mysql er ikke sikkert nok. Les mer om PDO her: PHP: PDO - Manual, og mysqli her PHP: Mysqli - Manual.

Håper dette løser noen av dine problemer hvertfall! :)
 
Topp