Avatar billede syngredk Nybegynder
26. november 2005 - 15:15 Der er 19 kommentarer og
2 løsninger

SQL Syntax fejl

Hejsa,

måske nogen kan hjælpe mig med en løsning på nedenstående:

Jeg får denne fejl, når jeg prøver at aflæse siden:
Oprettede nyheder. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Sidens kildekode:
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>

<body>

<h1>Administration : Oprettede nyheder</h1>

Oprettede nyheder.

<?php
include_once('../access/access_config.php');
if (isset($_GET['deleteID'])) {
    mysql_query("DELETE FROM news WHERE id=".$_GET['deleteID']."") or die(mysql_error());
}
$query = mysql_query("SELECT id,title FROM news ORDER BY id DESC LIMIT ".$offset.",".$cfg['limit']."") or die(mysql_error());
echo '<ul>';
while ($row = mysql_fetch_assoc($query)) {
    echo '<li>[<a href="?offset='.$offset.'&deleteID='.$row['id'].'">Slet</a>] ';
    echo '[<a href="news.edit.php?offset='.$offset.'&id='.$row['id'].'">Rediger</a>] ';
    echo $row['title'].'</li>';
}
echo '</ul>';

echo ($offset >= $cfg['limit']) ? '<a href="?offset='.($offset-$cfg['limit']).'">Forrige</a> ' : 'Forrige ';
for ($start=$start_point;$start<$end_point;$start=$start+$cfg['limit']) {
    echo ($offset == $start) ? '<b>'.$page_number++.'</b> ' : '<a href="?offset='.$start.'">'.$page_number++.'</a> ';
}
echo ($total > $offset+$cfg['limit']) ? '<a href="?offset='.($offset+$cfg['limit']).'">Næste</a>' : 'Næste';
?>

<div class="hr"></div>
<a href="administration.php">Administration</a> | Intet

</body>

</html>
Avatar billede webstuff Nybegynder
26. november 2005 - 15:18 #1
Tror du skal rette i din db.

Men hvorfor har du fjernet linket til schaefner?
For det er jo ham der har lavet det der nyhedssystem!
Han plejer at have linket til sin egen side stående på den her linje
<a href="administration.php">Administration</a> | Intet
Avatar billede syngredk Nybegynder
26. november 2005 - 15:23 #2
Er det da en mulig fejl i min database?

Har brugt schaefner's som et eksempel og "lærermester" nu hvor jeg selv prøver at lære noget mere omkring nyhedsscript.. Udbygger det en del, med en administrationsmodul og en del flere ting i.
Avatar billede hmortensen Nybegynder
26. november 2005 - 15:30 #3
Prøv at sætte den her linie ind i toppen:
$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0;
Avatar billede syngredk Nybegynder
26. november 2005 - 15:34 #4
ændre desværre ikke på fejltypen
Avatar billede hmortensen Nybegynder
26. november 2005 - 15:53 #5
Så ret din query til flg., så vi kan se hvad der går galt.
$sql = "SELECT id,title FROM news ORDER BY id DESC LIMIT ".$offset.",".$cfg['limit'];
$query = mysql_query($sql) or die("SQL sætning: ".$sql."<br>".mysql_error());
Avatar billede syngredk Nybegynder
26. november 2005 - 16:03 #6
Tror jeg sætter den ind det forkerte sted:

<?php
include_once('../access/access_config.php');
if (isset($_GET['deleteID'])) {
    mysql_query("DELETE FROM news WHERE id=".$_GET['deleteID']."") or die(mysql_error());
}

$sql = "SELECT id,title FROM news ORDER BY id DESC LIMIT ".$offset.",".$cfg['limit'];
$query = mysql_query($sql) or die("SQL sætning: ".$sql."<br>".mysql_error());

echo '<ul>';
while ($row = mysql_fetch_assoc($query)) {
    echo '<li>[<a href="?offset='.$offset.'&deleteID='.$row['id'].'">Slet</a>] ';
    echo '[<a href="news.edit.php?offset='.$offset.'&id='.$row['id'].'">Rediger</a>] ';
    echo $row['title'].'</li>';
}
echo '</ul>';
Avatar billede hmortensen Nybegynder
26. november 2005 - 16:06 #7
Nej, det skulle være rigtigt nok, hvad får du af fejl nu?
Avatar billede syngredk Nybegynder
26. november 2005 - 16:16 #8
Oprettede nyheder. SQL sætning: SELECT id,title FROM news ORDER BY id DESC LIMIT ,
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Avatar billede hmortensen Nybegynder
26. november 2005 - 16:28 #9
Som du kan se, får du hverken offset eller limit værdien med.

Har du fjernet den linie jeg skrev til dig først?
Har du sat $cfg['limit'] nogle steder, eller skal du gøre det.
Avatar billede syngredk Nybegynder
26. november 2005 - 16:32 #10
mysql_query("DELETE FROM news WHERE id=".$_GET['deleteID']."") or die(mysql_error());
}

$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0;

$sql = "SELECT id,title FROM news ORDER BY id DESC LIMIT ".$offset.",".$cfg['limit'];
$query = mysql_query($sql) or die("SQL sætning: ".$sql."<br>".mysql_error());

echo '<ul>';

Sådan ser det ud, men stadig den samme fejl
Avatar billede hmortensen Nybegynder
26. november 2005 - 16:39 #11
"Har du sat $cfg['limit'] nogle steder, eller skal du gøre det."
$cfg['limit'] = 10;
Avatar billede syngredk Nybegynder
26. november 2005 - 16:42 #12
Mystisk, giver stadig samme fejl

<?php
include_once('../access/access_config.php');
if (isset($_GET['deleteID'])) {
    mysql_query("DELETE FROM news WHERE id=".$_GET['deleteID']."") or die(mysql_error());
}

$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0;

$sql = "SELECT id,title FROM news ORDER BY id DESC LIMIT ".$offset.",".$cfg['limit'];
$query = mysql_query($sql) or die("SQL sætning: ".$sql."<br>".mysql_error());

$cfg['limit'] = 10;

echo '<ul>';
while ($row = mysql_fetch_assoc($query)) {
    echo '<li>[<a href="?offset='.$offset.'&deleteID='.$row['id'].'">Slet</a>] ';
    echo '[<a href="news.edit.php?offset='.$offset.'&id='.$row['id'].'">Rediger</a>] ';
    echo $row['title'].'</li>';
}
echo '</ul>';

echo ($offset >= $cfg['limit']) ? '<a href="?offset='.($offset-$cfg['limit']).'">Forrige</a> ' : 'Forrige ';
for ($start=$start_point;$start<$end_point;$start=$start+$cfg['limit']) {
    echo ($offset == $start) ? '<b>'.$page_number++.'</b> ' : '<a href="?offset='.$start.'">'.$page_number++.'</a> ';
}
echo ($total > $offset+$cfg['limit']) ? '<a href="?offset='.($offset+$cfg['limit']).'">Næste</a>' : 'Næste';
?>
Avatar billede hmortensen Nybegynder
26. november 2005 - 16:43 #13
Nu har du sat den EFTER du bruger den, så ingen mystik i det.
Avatar billede syngredk Nybegynder
26. november 2005 - 16:47 #14
Ahh, nu virker det næsten.. Nu henter den da oplysningerne fra databasen :-)

Men jeg kan kun se de sidste 10, dvs. jeg kan nederst ikke gå videre til næste side osv.
Avatar billede fixxxer Nybegynder
26. november 2005 - 18:07 #15
$query = mysql_query("SELECT COUNT(id) AS antal FROM news");
$antal_sider = ceil(mysql_result($query, 0, 'antal') / $cfg['limit']);
for ($i=0;$i<$antal_sider;i++)
{
  echo '<a href="?offset='.$i.'">'.$i.'</a>';
}
Avatar billede fixxxer Nybegynder
26. november 2005 - 18:08 #16
En lille fejl:

Vi skal naturligvis echo'e noget som passer til vores rigtige offset, så derfor gør vi sådan:

$offset = (isset($_GET['offset'])) ? ($_GET['offset']*$cfg['limit']): 0;
Avatar billede fixxxer Nybegynder
26. november 2005 - 18:11 #17
Det synes jeg er pænere end at skrive det egenlig offset til brugeren. Her kan brugeren bare se at vi er på side 1, 2, 3 og så fremdeles.
Avatar billede fixxxer Nybegynder
01. december 2005 - 20:36 #18
Var der noget af det du kunne bruge til at løse dit problem?
Avatar billede syngredk Nybegynder
02. december 2005 - 22:32 #19
Fixxxer --> jep, det løste mit problem.. Så  hvis I begge smider et svar, så kan jeg kaste nogen point efter jer. Beklager det sene svar, men har været udstationeret med 'arbejdet' i denne uge :-)
Avatar billede fixxxer Nybegynder
03. december 2005 - 15:04 #20
catch :)
Avatar billede hmortensen Nybegynder
03. december 2005 - 15:21 #21
:)
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