Avatar billede syngredk Nybegynder
07. marts 2006 - 15:47 Der er 11 kommentarer og
1 løsning

Henter ikke fra SQL

Hejsa

Håber at Nogle kan hjælpe mig med nedenstående problemstilling. Jeg har filen news.edit.php som skal hente den eksisterende nyhed fra databasen således at man har mulighed for, at ændre i nyheden og gemme den, med de nye rettelser/tilføjelser. Problemet er, at den IKKE henter de eksisterende oplysninger ind.

news.edit.php -->

<?php

require('../access/access_config.php');

$query = mysql_query("SELECT * FROM news WHERE id=".$_GET['id']."") or die(mysql_error());
$row = mysql_fetch_assoc($query);
?>

<h1>Rediger nyhed</h1>

<form method="post" action="news.config.php">
<input type="hidden" name="referer" value="news.edit">
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
<input type="hidden" name="offset" value="<?php echo $_GET['offset']; ?>">

Overskrift <input type="text" name="title" value="<?php echo $row['title']; ?>" style="width: 300px"><br>
Synopsis <textarea name="synopsis" rows="5" cols="0" style="width: 300px"><?php echo $row['synopsis']; ?></textarea><br><br>

Emne/Kategori<br><br>

Billede <input type="text" name="image" value="<?php echo $row['image']; ?>" style="width: 300px"><br><br>

Nyheden <textarea name="text" rows="10" cols="0" style="width: 300px"><?php echo $row['text']; ?></textarea><br><br>

<input type="submit" value="Opdater nyhed">

</form>

news.config.php -->

if ($_POST['referer'] == 'news.edit') {
    mysql_query("UPDATE news SET title='".$_POST['title']."', synopsis='".$_POST['synopsis']."', text='".$_POST['text']."', image='".$_POST['image']."' WHERE id=".$_POST['id']."") or die(mysql_error());
    header("Location: news.list.php?offset=".$_POST['offset']);
}
Avatar billede tanzaweb Nybegynder
07. marts 2006 - 16:05 #1
Har du tjekket om den tager din id med ind så den kan kigge i databasen?
Avatar billede syngredk Nybegynder
07. marts 2006 - 16:11 #2
Jeps, f.eks.: news.edit.php?offset=0&id=5
Avatar billede tanzaweb Nybegynder
07. marts 2006 - 16:27 #3
jeg kan ikke udmiddelbart se nogle fejl, har du lavet en echo $_GET['id'] på siden for at se id'et?

id'et kommer det fra en form eller et link?

prøv osse lige at sætte dette ind over den første $_get
if (!empty($_GET)) {
extract($_GET);
} else if (!empty($HTTP_GET_VARS)) {
extract($HTTP_GET_VARS);
}
Avatar billede syngredk Nybegynder
07. marts 2006 - 16:30 #4
Du kan se hvordan den "hitter" adressen her i mit andet spørgsmål som jeg fik løst: http://www.eksperten.dk/spm/692814
Avatar billede tanzaweb Nybegynder
07. marts 2006 - 16:49 #5
prøv lige at ændre id='".$_GET["id"]."'" for det har jeg somme tider haft en hel del problemer med på min nye server da den bare ikke accepter nogen fejl overhovedet.
Avatar billede fixxxer Nybegynder
07. marts 2006 - 17:17 #6
I første omgang burde vi sørge for at undgå SQL-injections:

$id = mysql_escape_string($_GET['id']);
$sql = "SELECT * FROM news WHERE id=".$id;
echo 'Vi prøver at afvikle følgende SQL: '.$sql;
$query = mysql_query($sql) or die(mysql_error());

Prøv at se hvad der bliver echo'et til siden..
Avatar billede syngredk Nybegynder
08. marts 2006 - 16:06 #7
Fixxxer -->

Nu henter den oplysningerne ind i databasen og øverst siger den følgende:
"Vi prøver at afvikle følgende SQL: SELECT * FROM news WHERE id=5"

Nu ser news.edit.php således ud:

<?php

require('../access/access_config.php');

$id = mysql_escape_string($_GET['id']);
$sql = "SELECT * FROM news WHERE id=".$id;
echo 'Vi prøver at afvikle følgende SQL: '.$sql;
$query = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($query);
?>

<h1>Rediger nyhed</h1>

<form method="post" action="news.config.php">
<input type="hidden" name="referer" value="news.edit">
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
<input type="hidden" name="offset" value="<?php echo $_GET['offset']; ?>">

Overskrift <input type="text" name="title" value="<?php echo $row['title']; ?>" style="width: 300px"><br>
Synopsis <textarea name="synopsis" rows="5" cols="0" style="width: 300px"><?php echo $row['synopsis']; ?></textarea><br><br>

Emne/Kategori<br><br>

Billede <input type="text" name="image" value="<?php echo $row['image']; ?>" style="width: 300px"><br><br>

Nyheden <textarea name="text" rows="10" cols="0" style="width: 300px"><?php echo $row['text']; ?></textarea><br><br>

<input type="submit" value="Opdater nyhed">

</form>
Avatar billede fixxxer Nybegynder
08. marts 2006 - 17:23 #8
Efter som du poster ovenstående script, går jeg udfra at du stadig ikke får noget tekst i dine input-felter.

Prøv ved udtrækket at se hvad der kommer ud og om der overhovedet er noget resultat:

<?php

require('../access/access_config.php');

$id = mysql_escape_string($_GET['id']);
$sql = "SELECT * FROM news WHERE id=".$id;
echo 'Vi prøver at afvikle følgende SQL: '.$sql;
$query = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($query) > 0) {
    echo 'Der blev fundet '.mysql_num_rows($query).' række(r) fra tabellen';
}
else {
    echo 'Der blev ikke fundet nogle rækker i tabellen!';
}
$row = mysql_fetch_assoc($query);
print_r($row); // giver os en oversigt hvad der er i udtrækket
?>
Avatar billede syngredk Nybegynder
08. marts 2006 - 20:41 #9
Fixxxer -->

Din løsning virkede skam, den som jeg skrev 08/03-2006 16:06:58.
Den henter oplysningerne ind samt jeg kan ædre og gemme på ny - så tak :-)

Der står dog stadig ""Vi prøver at afvikle følgende SQL: SELECT * FROM news WHERE id=5"" øverst på siden, men formoder at jeg skal fjerne følgende:
echo 'Vi prøver at afvikle følgende SQL: '.$sql; fra koden, eller er der mere?

(din kode 07/03-2006 17:17:19)
Avatar billede fixxxer Nybegynder
09. marts 2006 - 15:33 #10
Lige præcis - det er det man ville kalde debug information..

Det samme gælder i øvrigt print_r($row); i mit eksempel.

Jeg tillader mig at svare
Avatar billede fixxxer Nybegynder
09. marts 2006 - 15:33 #11
Svar :)
Avatar billede syngredk Nybegynder
09. marts 2006 - 20:00 #12
Uhh hvor det funger, endnu engang tak Fixxxer.. Synes du score alle mine point for tiden hehe.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester