07. marts 2006 - 15:47Der 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); ?>
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']); }
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); }
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.
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());
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 ?>
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?
Uhh hvor det funger, endnu engang tak Fixxxer.. Synes du score alle mine point for tiden hehe.
Synes godt om
Ny brugerNybegynder
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.