Avatar billede Slettet bruger
27. april 2006 - 08:58 Der er 28 kommentarer

fejl i sql syntaxt

Hej..
Browseren skriver at der er en fejl i min sql suntaxt?
<?PHP
include ('connect.php');
$hent = mysql_query("SELECT * FROM nyheder ORDER BY ID set
overskrift='$_POST[overskrift]',
text='$_POST[text]',
dato='$_POST[dato]',
id='$_POST[id]'" ) or die(mysql_error());
while ($vis = mysql_fetch_array($hent));

print "<table>";
print " <tr><td><h3> ".$vis['overskrift']." </h3></td>
        <td><h3>".$vis['text']."</h3></td></tr>";

print "</table>";



  ?>

Kan ikke finde den
Avatar billede ladyhawke Novice
27. april 2006 - 09:20 #1
hvad er det du forsøger med dit query?
Avatar billede Slettet bruger
27. april 2006 - 16:18 #2
Det er til et nyheds system, og her vil jeg så gerne læse nyhederne..
Avatar billede ladyhawke Novice
27. april 2006 - 17:16 #3
hvad skriver browseren helt præcist?
Avatar billede Slettet bruger
27. april 2006 - 18:49 #4
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 'set overskrift='', text='', dato='', id=''' at line 1
Avatar billede arne_v Ekspert
27. april 2006 - 19:20 #5
SQL'en er jo en mix af SELECT og UPDATE syntax
Avatar billede arne_v Ekspert
27. april 2006 - 19:21 #6
det er

SELECT * FROM tabelnavn WHERE feltnavn = X

UPDATE tabelnavn SET feltnavn = X WHERE feltnavn = Y
Avatar billede ladyhawke Novice
27. april 2006 - 19:22 #7
jeg kender ikke set i SQL sammenhæng, kan du ikke prøve at gøre sådan her:

http://dk2.php.net/mysql_query

altså som:

// connect to db using mysql_connect etc...

// create var called 'query' and 
// assign it a real mysql query...
$query = "SELECT * FROM area WHERE id = '$areaid'";
// send the query using mysql_query
// and store the result in '$result'.
$result = mysql_query($query);
// while there are results, fetch 
// them and store them in an 
// accosiative array (called $row in this case)
    while ($row = mysql_fetch_array($result))
        {
        echo "<h3>" .$row[title] ."</h3>";
        echo nl2br($row[content]);
        }
Avatar billede ladyhawke Novice
27. april 2006 - 19:24 #8
og ja, SET stammer fra et update statement og jeg burde have skrevet SELECT sammenhæng i stedet for SQL
Avatar billede Slettet bruger
27. april 2006 - 19:28 #9
<?PHP
include ('connect.php');
$hent = mysql_query("SELECT * FROM nyheder WHERE
overskrift='$_POST[overskrift]',
text='$_POST[text]',
dato='$_POST[dato]',
id='$_POST[id]'" ) or die(mysql_error());
while ($vis = mysql_fetch_array($hent));

print "<table>";
print " <tr><td><h3> ".$vis['overskrift']." </h3></td>
        <td><h3>".$vis['text']."</h3></td></tr>";
       
print "</table>";



  ?>
Sådan?

virker stadig ikke
Avatar billede ladyhawke Novice
27. april 2006 - 19:38 #10
øh, vil du hente alle nyhder (i ID rækkefølge)?
i så fald noget a la:

$query = "SELECT * FROM nyheder ORDER BY ID";
$result = mysql_query($query);

while ($row = mysql_fetch_array($result))
{
        echo "<h3>" .$row['titel'] ."</h3>";
        echo nl2br($row['text']);
}

Virker sikkert også med print, og du kan bare bygge en tabel i stedet, men få lige query til at virke først
Avatar billede ladyhawke Novice
27. april 2006 - 19:39 #11
jeg har ikke testet det, men prøv ad
Avatar billede Slettet bruger
27. april 2006 - 19:57 #12
Det virker faktisk...
men vis jeg nu vil have dato på, og den nyeste øverster, hva skal jeg så skrive?
vis du kan må du meget gerne skrive det på en let og forstålig måde... Det er nemlig noget af det første jeg lave i php, som jeg har førsøgt med selv..:D
Avatar billede Slettet bruger
27. april 2006 - 19:58 #13
Og hva gør nl2br?
Avatar billede Slettet bruger
27. april 2006 - 20:05 #14
Datoen har jeg selv fundet ud af..
Avatar billede ladyhawke Novice
27. april 2006 - 20:08 #15
jeg ved ikke helt hvad nl2br gør, det blev klippet fra noget af det jeg sendte tidligere, men du kan bare skrive det i google og trykke søg, så finder du sikkert ud af det
Avatar billede Slettet bruger
27. april 2006 - 20:09 #16
Okey... Men hvordan for jeg den til at vise den nyeste overst?
Avatar billede ladyhawke Novice
27. april 2006 - 20:12 #17
order by dato i stedet for id
Avatar billede Slettet bruger
27. april 2006 - 20:17 #18
Det virker ikke?
Avatar billede Slettet bruger
27. april 2006 - 20:18 #19
For så tar den jo bare og sutere alfabetisk og nummerisk på samme måde som med id?
Avatar billede ladyhawke Novice
27. april 2006 - 20:19 #20
hvis du bruger ORDER BY dato???
Avatar billede Slettet bruger
27. april 2006 - 20:19 #21
jah
Avatar billede ladyhawke Novice
27. april 2006 - 20:24 #22
nu er det ikke sådan at du har defineret din dato som en tekst kolonne?
Avatar billede arne_v Ekspert
27. april 2006 - 20:24 #23
nl2br erstatter rigtige linieskift (som ignoreres i HTML) med <br> (som giver
et linieskift i HTML)
Avatar billede ladyhawke Novice
27. april 2006 - 20:26 #24
ok tak for hjælpen ! :)
Avatar billede Slettet bruger
27. april 2006 - 22:17 #25
Nej.. hvis det er min tabel i mysql, så nej..
Min table ser sådan her ud:
  `id` int(11) NOT NULL default '0',
  `text` varchar(255) NOT NULL default '',
  `overskrift` varchar(255) NOT NULL default '',
  `dato` timestamp NOT NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
Avatar billede ladyhawke Novice
28. april 2006 - 07:33 #26
kan du ikke poste nogle eksempler på hvílke data der er i din dato kolonne og hvordan mysql sorterer det?
Avatar billede hp4 Nybegynder
28. april 2006 - 07:48 #27
Brug denne kode og jeg er ret sikker på at det virker:

<?PHP
include ('connect.php');
$hent = mysql_query("SELECT * FROM nyheder ORDER BY id DESC" ) or die(mysql_error());
while ($vis = mysql_fetch_array($hent));

print "<table>";
print " <tr><td><h3> ".$vis[overskrift]</h3></td>
        <td><h3>".$vis[text]."<i><br><br><b>Skrevet den: ".$vis[dato]."</b></i></h3></td></tr>";
print "</table>";
  ?>



Som du kan se har jeg lavet din query om og lavet dine variabler om :D
For at få overskriften skal man skrive $hent[overskrift] og det er fordi at i din while løkke:
while ($vis = mysql_fetch_array($hent));

Der sætter du jo $vis til at være ligmed det du hænter ned fra din database.

hade der nu stået:
while ($data = mysql_fetch_array($hent));
så skulle du skrive $data[overskrift] for at få overskriften ;)


Jeg skulle mene at koden virker, den er ikke testet... Men enyways hvis den ikke virker så add min msn Daniel@HP4.dk og jeg hjælper dig/ du sender filen og jeg kigger lidt ;)

MvH Daniel
Avatar billede hp4 Nybegynder
28. april 2006 - 07:50 #28
wooot, jeg så lige en STOR fejl i den jeg skrev der sorry, her er der lige den rigtige udgave:

Brug denne kode og jeg er ret sikker på at det virker:

<?PHP
include ('connect.php');
$hent = mysql_query("SELECT * FROM nyheder ORDER BY id DESC" ) or die(mysql_error());
while ($vis = mysql_fetch_array($hent)){
print "<table>";
print " <tr><td><h3> ".$vis[overskrift]</h3></td>
        <td><h3>".$vis[text]."<i><br><br><b>Skrevet den: ".$vis[dato]."</b></i></h3></td></tr>";
print "</table>";
}
  ?>



Som du kan se har jeg lavet din query om og lavet dine variabler om :D
For at få overskriften skal man skrive $hent[overskrift] og det er fordi at i din while løkke:
while ($vis = mysql_fetch_array($hent)){}

Der sætter du jo $vis til at være ligmed det du hænter ned fra din database.

hade der nu stået:
while ($data = mysql_fetch_array($hent)){}
så skulle du skrive $data[overskrift] for at få overskriften ;)


Jeg skulle mene at koden virker, den er ikke testet... Men enyways hvis den ikke virker så add min msn Daniel@HP4.dk og jeg hjælper dig/ du sender filen og jeg kigger lidt ;)

MvH Daniel
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
Computerworld tilbyder specialiserede kurser i database-management

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