Avatar billede Slettet bruger
10. februar 2011 - 11:14 Der er 19 kommentarer og
1 løsning

You have an error...

Hejsa.

Ja, jeg er virkelig nybegynder på PHP og MySQL.

Jeg er igang med en lille guide til at lave nyheds system: http://www.phpuniverset.dk/show_artikels.phtml?ArtikelID=31

Og jeg er ved at prøve at "fixe" det så det fungerer.. men jeg får denne fejl: 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 ''hejsa'',''' at line 3

Dette sker, når jeg prøver at oprette en nyhed: skolind.webege.com/add_nyhed.php
Avatar billede michael_stim Ekspert
10. februar 2011 - 11:46 #1
Er der et spørgsmål her?

Du må nok komme med din sql sætning.
Avatar billede Slettet bruger
10. februar 2011 - 11:52 #2
Ja undskyld. Jeg har været lidt for hurtig. Jeg prøver at sætte ldit mere info her..

Min SQL:

CREATE TABLE nyhedsys (

  headline text NOT NULL,

  news text NOT NULL,

  date datetime NOT NULL default '0000-00-00 00:00:00',

  id int(3) NOT NULL default '0',

  UNIQUE KEY date (date),

  KEY date_2 (date)

) TYPE=MyISAM;


### add_nyhed.php ##

# Skrive nyheder #



<form ACTION="add_nyhed_sql.php" method="post">

<br>

Overskrift:<br> <input type="text" name="headline"><br>

<br>

Nyhed:<br> <textarea name="news" rows="10" cols="35"></textarea></b></p>

<br><br>

<input type=submit value="OK" name="submit" >

</form>



<!-- Alm inputs som sender til en sql-delen -->

#Add_nyhed_sql.php

<?



include ('connect.php');  // db-connect



$id = time(); // laver et unix timestamp, med antal sekunder sinden 1970.



$headline = addslashes($_POST[headline]); // addslashes gør at du kan skrive " og ' uden at mysql melder fejl.

$news = addslashes($_POST[news]);



mysql_query("

INSERT INTO nyhedsys (id,headline,news)

VALUES ('$id','$headline','$news'") or die(mysql_error());



header("Location: nyheder.php"); // sender dig tilbage til nyhedsoversigten.

?>

Skriv endelig hvis der skal skrives mere.
Avatar billede michael_stim Ekspert
10. februar 2011 - 12:01 #3
Du mangler en parantes slut her:

mysql_query("INSERT INTO nyhedsys (id,headline,news) VALUES ('$id','$headline','$news')") or die(mysql_error());
Avatar billede Slettet bruger
10. februar 2011 - 12:04 #4
Du fungerer det delvist.

nu giver den mig en fejlmeldelse.

prøv at oprette en nyhed her: www.skolind.webege.com/add_nyhed.php
Avatar billede michael_stim Ekspert
10. februar 2011 - 12:06 #5
Prøv at udskriv din sql i stedet for at eksekvere den.
Avatar billede Slettet bruger
10. februar 2011 - 12:07 #6
Der bliver du nok nødt til at uddybe dig lidt..

Eksekvere , udskrive? :)
Avatar billede michael_stim Ekspert
10. februar 2011 - 12:09 #7
Du skal have en if(isset($_POST['submit'])){

//din kode

}
Avatar billede Slettet bruger
10. februar 2011 - 12:10 #8
Hvor skal jeg have denne?

Virkelig undskyld, jeg er total ny til det her PHP :-)
Avatar billede michael_stim Ekspert
10. februar 2011 - 12:14 #9
hvordan ser nyheder.php ud?
Avatar billede michael_stim Ekspert
10. februar 2011 - 12:16 #10
Det er i nyheder.php fejlen er og der har jeg ikke noget kode.
Avatar billede Slettet bruger
10. februar 2011 - 12:17 #11
<?php



@include('connect.php'); # Database connect

$query = mysql_query("select *,date_format(date, '%e/%c %Y - %H:%i') AS tid FROM nyhedsys order by date desc") or die("Der er sket en fejl. Fejlnr. ".mysql_errno());

#henter informationerne, og formateret datoen så det ligner dansktid, og ikke amr.

while ( $row = mysql_fetch_array($query)) {

#henter informationerne, og udskriver dem i et while loop



$headline = stripslashes($row[headline]);  // Fjern \ fra \' osv. (forklaring kommer senere.

$news = stripslashes($row[news]);

$news = nl2br($news);                // Gør at når du har lavet linjeskift da du skrev nyheden, også bliver vist nu.



?>

<table cellspacing="0" cellpadding="0" align="center">

    <tr>

        <td width="100%" class="c7" ><b><? echo "$headline" ?></b></div></td>

    </tr>

    <tr>

        <td width="100%" class="c8" ><br /><? echo "$news" ?><br /><br /></td>

    </tr>

    <tr>

        <td width="100%" class="c7" >

        <? echo "$row[tid]" ?></a>

        </td>

    </tr>

</table>

<br />

<?

}  // Afslutter fremvisningen.

?>
Avatar billede Slettet bruger
10. februar 2011 - 12:36 #12
Jeg tror sku jeg fik fixet det ;-)

Det var MySQL filen.

tror det var fordi den prøvede at liste "nyhederne" op efter dato, og den prøvede at hente en dato eller noget i MySQL'en, og det den prøvede at hente ned, fandtes ikke. :-)

se: www.skolind.webege.com/nyheder.php nu :-)
Avatar billede Slettet bruger
10. februar 2011 - 12:39 #13
Næ..

jeg kan se en asd asd nyhed på nyheder.php nu.
Men jeg kan ikke oprette, prøv at oprette under www.skolind.webege.com/add_nyhed.php
Avatar billede michael_stim Ekspert
10. februar 2011 - 12:40 #14
Her er der en fejl:

$query = mysql_query("select *,date_format(date, '%e/%c %Y - %H:%i') AS tid FROM nyhedsys order by date desc") or die("Der er sket en fejl. Fejlnr. ".mysql_errno());
Avatar billede michael_stim Ekspert
10. februar 2011 - 12:42 #15
Der kommer ikke en dato ind. I og med du har sat den til unique kan den ikke have ens data.

Duplicate entry '0000-00-00 00:00:00' for key 1
Avatar billede Slettet bruger
10. februar 2011 - 12:46 #16
Jamen, $query = mysql_query("select *,date_format(date, '%e/%c %Y - %H:%i') AS tid FROM nyhedsys order by date desc") or die("Der er sket en fejl. Fejlnr. ".mysql_errno());

er det der allerede står i min nyheder.php?

Og, det med dato og tid, det er i min MySQL ikke?
hvad skal jeg skrive her i stedet?
10. februar 2011 - 16:26 #17
saebe, det problem du rapporterede var at din mysql_query resulterede i en fejlmelding "You have an error in your SQL syntax..."

Det problem fik du loesningen paa i indlaeg # 3:  Du manglede en slutparantes.  Da du fik det rettet forsvandt fejlmeldingen.  Ikke sandt? 

Saa jeg vil foreslaa at du takker for hjaelpen til DETTE problem ved at bede det paagaeldende medlem om at oprette et svar og derefter afgiver points og lukker spoergsmaalet.  Saa er der basis for at folk vil hjaelpe med efterfoelgende problemer.  Jeg forstaar fra en anden traad at du lige er begyndt paa PHP (saa sent som idag).  Det er nok ikke hensigtsmaessigt at du proever i denne traad at faa loebende hjaelp til andre problemer.

Jeg kan fra ovenstaaende se mindst tre saadanne andre problemer:

(1) Din mysql tabel nyhedsys.  Hvad det er for oplysninger du gerne vil have gemt for hver nyhed og hvorfor?  Du har i tabellen blandt andet to forskellige date felter. Til hvilket formaal?  Du bruger en timestamp som unique key.  Hvad saa hvis to nyheder kommer ind paa samme tid?

(2) Din Add_nyhed_sql.php fil.  Du placerer, korrekt, headline og news i de rigtige kolonner i nyhedsys tabellen, men saa placerer du en timestamp i id feltet.  Og du bruger ikke de andre felter hvorved der automatisk indsaettes defaultvaerdier.

(3) Din nyheder.php fil.  Dine begyndelses- og aabningstags passer ikke altid sammen.  Du proever at sortere paa date feltet som kun indeholder default vaerdien 0000-00-00 00:00:00.

Gaa disse ting igennem i ro og mag (Rom blev ikke bygget paa en dag).  Jeg vil foreslaa at kikke i flere forskellige tutorials.  Glem ikke at php og sql er to vidt forskellige sprog.  Naar du saa ikke kommer laengere med et problem saa opret et spoergsmaal hvor du forklarer hvad du selv har gjort og hvor du gaar i staa.
Avatar billede Slettet bruger
10. februar 2011 - 23:51 #18
Javel.

Michael.. Gider du smide et svar?
Avatar billede michael_stim Ekspert
11. februar 2011 - 15:08 #19
Ellers tak, samler ikke på point. Læg selv et svar og accepter.
Avatar billede Slettet bruger
13. februar 2011 - 20:15 #20
Lukker her.
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