Avatar billede sijmonj Nybegynder
23. juli 2007 - 17:26 Der er 49 kommentarer og
1 løsning

Tilføj nyheder - Script

Hej jeg er igang med at lave et "Tilføj nyheder" script.. men jeg ved ikke rigtig hvordan det skal gøres.. er lidt ny til PHP det jeg har lavet endtil videre

----------tilfoj.nyheder.php---------
<html>
<head>
<title>Tilfoj nyheder</title>
<link href="../../css/styleindhold.css" rel="stylesheet" type="text/css" />
</head>

<body>
<?php
include('config.php');

sql = mysql_query("INSERT INTO nyhed"); or die mysql_error();


?>
<table width="284" height="401" border="0" cellpadding="0" cellspacing="1">
  <tr>
    <td><form id="1" name="overskrift" method="post" action="">
      <label>overskrift:<br />
        <input type="text" name="overskrift" style="width:300px;" id="1" />
        </label>
    </form>
      <form id="2" name="nyhed" method="post" action="">
        <label>Nyhed:
        <textarea name="nyhed" id="2" style="width:300px; height:200px;"></textarea>
        </label>
      </form>
      <form id="3" name="godkend" method="post" action="">
        <label>
        <input type="submit" name="godkend" id="3" value="Godkend" />
        </label>
      </form>
    <br /></td>
  </tr>
</table>
</body>
</html>
-----------end----------
hvis nogen gad at skrive hva der skal laves for at den indsætter ting i databasen.. og forklare hvorfor der skal stå lige nettop det og det.. :)
Avatar billede sijmonj Nybegynder
23. juli 2007 - 17:26 #1
OBS, det er det jeg har lavet endtil videre :)
Avatar billede leif Seniormester
23. juli 2007 - 17:50 #2
Er det ikke det samme som dit spørgsmål her: http://www.eksperten.dk/spm/788411
Avatar billede sijmonj Nybegynder
23. juli 2007 - 17:58 #3
ups det havde jeg sku glemt.. men det kunne jeg ikke få til at virke :/
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:05 #4
pt har jeg lavet det her

-----------
<?php

if($_GET[action] == "ny") {

include("config.php");

mysql_query("INSERT INTO nyhed (overskrift, forfatter, dato, nyhed) VALUES ('$_POST[overskrift]', '$_POST[forfatter]', '$dato', '$_POST[nyhed]')");

}
?>
<html>
<head>
<title>Tilf&oslash;j</title>
<link href="../../css/styleindhold.css" rel="stylesheet" type="text/css">
</head>

<body>
<b>Tilf&oslash;j Nyhed</b>
</div>

<form method="post" action="tilfoj.nyheder.php?action=ny">
<b>Overskrift:</b><br />
<input name="overskrift" style="width:200px;" maxlength="50">
<br />
<br />
<textarea id="nyhedtekst" name="nyhed" style="height:200px; width:300px;"></textarea>
<br />
&nbsp;<br />
<input type="submit" value="Godkend nyhed">
</form>

</body>
</html>
---------
Når jeg trykker godkend nyhed så kommer det her frem i adresse linjen: tilfoj.nyheder.php?action=ny men den indsætter ik noget i databasen.. nogen der ved hvorfor ?
Avatar billede maqhem Nybegynder
23. juli 2007 - 18:12 #5
Nu har du vel husket at connecte og vælge database?

mysql_connect("localhost", "username", "password");
mysql_select_db("database");
Avatar billede leif Seniormester
23. juli 2007 - 18:13 #6
Ændre:
mysql_query("INSERT INTO nyhed (overskrift, forfatter, dato, nyhed) VALUES ('$_POST[overskrift]', '$_POST[forfatter]', '$dato', '$_POST[nyhed]')");

til:

mysql_query("INSERT INTO nyhed (overskrift, forfatter, dato, nyhed) VALUES ('$_POST[overskrift]', '$_POST[forfatter]', '$dato', '$_POST[nyhed]')") or die ("Fejl ved INSERT INTO nyhed: " . mysql_error());
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:16 #7
maghem jeg har husket min config.php :), når jeg har rettet det som du skrev leif.. så får jeg den her fejl "Fejl ved INSERT INTO nyhed: Duplicate entry '' for key 1" har aldrig set sån en fejl før :/ ved i hva der kan være galt ?
Avatar billede leif Seniormester
23. juli 2007 - 18:18 #8
Det betyder at du prøver at indsætte noget som er i din database i forvejen !

Hvilke felter har du i din tabel ?
Avatar billede leif Seniormester
23. juli 2007 - 18:20 #9
Men så luk venligst dit andet spørgsmål og henvis til at vi forsætter her !
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:24 #10
Jeg har: ID, Overskrift; Nyhed, forfatter, dato
Avatar billede leif Seniormester
23. juli 2007 - 18:25 #11
Du har muligvis kun 3 felter, nemlig overskrift/forfatter/dato/nyhed

Jeg ville lave et extra felt kaldet id og lave det til auto_increment
Avatar billede leif Seniormester
23. juli 2007 - 18:26 #12
:)

Er dit felt ID lavet til auto_increment ?
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:26 #13
hva betyder auto_increment ?
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:26 #14
nej er det ikke
Avatar billede leif Seniormester
23. juli 2007 - 18:28 #15
Det betyder at første record får ID = 1 og nummer 2 record for ID = 2 således at du altid kan indsætte nyheder.
Avatar billede leif Seniormester
23. juli 2007 - 18:31 #16
Det er sådan at hver record skal have et eller andet unikt, enten fx. et fortløbende nummer, en Dato, Dato+Tid, et Brugernavn alt afhængig hvad det er for en type data som ligger i tabellen, fx. en tabel med Brugernavne og Kodeord så vil man typisk bruger Brugernavn som det unikke så man ikke har 2 brugere med samme Brugernavn !
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:33 #17
ahh okay :) men leif tror du jeg kan få din msn og så kan jeg lave en invitation til fjernstyrning af min PC så kan det være du kan kigge på min mysql tabel og det ?
Avatar billede leif Seniormester
23. juli 2007 - 18:36 #18
Lad os bare tage den her !

Bruger du phpmyadmin til at administrere din database med ? Hvis Ja, så trykker du rediger ud for feltet ID og i Ekstra vælger du auto_increment
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:37 #19
så får jeg den her fejl:

SQL-forespørgsel:

ALTER TABLE `nyhed` CHANGE `id` `id` VARCHAR( 11 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL AUTO_INCREMENT

MySQL returnerede: Dokumentation
#1063 - Incorrect column specifier for column 'id'
Avatar billede leif Seniormester
23. juli 2007 - 18:38 #20
Du trykker rediger vælger følgende:

Datatype: INT
Længde: 5
Ekstra: auto_increment
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:40 #21
så :D men hvorfor 5 og INT ?.. og er der nogen steder jeg kan læse om de der INT og det ? gerne på dansk
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:43 #22
og nu virker mit script sku også :D hvordan får jeg den til at skrive "nyheden blev tilføjet".. og så skal de der forms forsvine lige så snart jeg trykker på godkend Nyhed så der KUN står "Nyheden blev tilføjet"
Avatar billede leif Seniormester
23. juli 2007 - 18:44 #23
INT betyder Tal

5 fordi at den så kan lave fra 1 til 99999 dvs. godt og vel 100.000 records ! :)
Avatar billede leif Seniormester
23. juli 2007 - 18:44 #24
En mulighed er at gøre som dette:
<?php

if($_GET[action] == "ny") {

include("config.php");

mysql_query("INSERT INTO nyhed (overskrift, forfatter, dato, nyhed) VALUES ('$_POST[overskrift]', '$_POST[forfatter]', '$dato', '$_POST[nyhed]')") or die ("Fejl ved INSERT INTO nyhed: " . mysql_error());;


echo "Din nyhed er tilføjet";

}
else
{
?>
<html>
<head>
<title>Tilf&oslash;j</title>
<link href="../../css/styleindhold.css" rel="stylesheet" type="text/css">
</head>

<body>
<b>Tilf&oslash;j Nyhed</b>
</div>

<form method="post" action="tilfoj.nyheder.php?action=ny">
<b>Overskrift:</b><br />
<input name="overskrift" style="width:200px;" maxlength="50">
<br />
<br />
<textarea id="nyhedtekst" name="nyhed" style="height:200px; width:300px;"></textarea>
<br />
&nbsp;<br />
<input type="submit" value="Godkend nyhed">
</form>

</body>
</html>
<?
}
?>
Avatar billede leif Seniormester
23. juli 2007 - 18:45 #25
Der er en fejl. Der er et ; for meget i linien med mysql_query
Avatar billede sijmonj Nybegynder
23. juli 2007 - 18:47 #26
okay.. jeg har et andet problem med min TID.. fordi den skriver bare Skrevet af:  - den 0000-00-00 ?>, 0000-00-00 :/
Avatar billede maqhem Nybegynder
23. juli 2007 - 18:50 #27
Int betyder ikke tal, men heltal. 5,9 er ikke int, men det er 6. Int, long, blob, char, bigint m.m. inklusiv deres unsigned er alle det, der kaldes datatyper/datatypes. De fortæller hvor meget plads, der "reserveres" i cellen i tabellen til værdien. Læs om det på http://dev.mysql.com/tech-resources/articles/visual-basic-datatypes.html . Siden er godt på nok engelsk, men det er ikke ret svært at forstå.
Avatar billede leif Seniormester
23. juli 2007 - 18:54 #28
Det er jo fordi du ikke sætter noget ind du skriver godt nok at du vil skrive $dato ind men du har ikke defineret $dato

$dato = date("Y-m-d");

Lige efter din include skulle gøre det !
Avatar billede leif Seniormester
23. juli 2007 - 18:55 #29
maghem -> Jeg tager rettelsen til mig
Avatar billede sijmonj Nybegynder
23. juli 2007 - 20:09 #30
det vil sige jeg ikke kan bruge den dato som jeg har lavet i min database?, tak for link Maghem
Avatar billede leif Seniormester
23. juli 2007 - 20:13 #31
Jo, men du fortæller den ikke hvad den skal med feltet ? Ikke andet at du indsætter en tom variabel
Avatar billede sijmonj Nybegynder
23. juli 2007 - 20:14 #32
så i min mysql_query skal der også stå $_POST[dato] ?
Avatar billede leif Seniormester
23. juli 2007 - 20:19 #33
Kun hvis du manuelt indtaster datoen, men hvis du indsætter den linie jeg skrev til dig vil den automatisk indsætte dags dato
Avatar billede sijmonj Nybegynder
23. juli 2007 - 20:22 #34
jeg vil ikke manuelt indtaste datoen, og det der dato noget der skriver den 0000-00-00 endnu :(
Avatar billede leif Seniormester
23. juli 2007 - 20:27 #35
Har du tilføjet linien:
$dato = date("Y-m-d");

Lige under include så der nu står:
include("config.php");

$dato = date("Y-m-d");

mysql_query("INSERT INTO nyhed (overskrift, forfatter, dato, nyhed) VALUES ('$_POST[overskrift]', '$_POST[forfatter]', '$dato', '$_POST[nyhed]')") or die ("Fejl ved INSERT INTO nyhed: " . mysql_error());
Avatar billede sijmonj Nybegynder
23. juli 2007 - 20:28 #36
nej har jeg ikke, gør jeg lige.. men troede bare at hvis man havde tilføjet det i database behøvede man ikke at skrive det i selve scriptet
Avatar billede leif Seniormester
23. juli 2007 - 20:30 #37
Du skal jo fortælle den hvad, du kan godt fortælle det i databasen hvis du har oprettet den korrekt
Avatar billede sijmonj Nybegynder
23. juli 2007 - 20:32 #38
men nu virker det med tiden, men nu udskriver den ikke mit navn selv om jeg har sat den til standard værdi.. skal den også have auto_ det der :)?
Avatar billede leif Seniormester
23. juli 2007 - 20:43 #39
Den sætter det ind som står i feltet ! Hvis den skal tage den standard værdi som er sat i Databasen skal du ikke indsætte noget !
Avatar billede leif Seniormester
23. juli 2007 - 20:43 #40
Så der har du 2 valg, æændre din sql sætning eller lave et ekstra felt i formen med en Value="Dit navn"
Avatar billede sijmonj Nybegynder
23. juli 2007 - 20:49 #41
i min sql har jeg lavet en standard værdi hvor der står mit navn.. det har virket i et stykke tid .. men nu udskriver den ikke mit navn mere :S,
Avatar billede leif Seniormester
23. juli 2007 - 20:51 #42
Prøv at vis os det hele nu !
Avatar billede sijmonj Nybegynder
23. juli 2007 - 20:53 #43
og ved du noget om iframes? fordi hvis jeg laver en nyhed som er rigtig lang så får min iframe en scroll på width og det vil jeg ikke have.. :/. ved du hvorn man får den til at holde op med det?
Avatar billede sijmonj Nybegynder
23. juli 2007 - 21:05 #44
det er på localhost
Avatar billede leif Seniormester
23. juli 2007 - 22:11 #45
Du siger at den ikke indsætter Forfatter nu ?

Prøv at vise og al koden her så vi kan prøve at se hvad der er galt
Avatar billede sijmonj Nybegynder
23. juli 2007 - 22:38 #46
<html>
<head>
<title>Tilf&oslash;j</title>
<link href="../../css/styleindhold.css" rel="stylesheet" type="text/css">
</head>

<?php

if($_GET[action] == "ny") {

include("config.php");

$dato = date("Y-m-d");

mysql_query("INSERT INTO nyhed (overskrift, forfatter, dato, nyhed) VALUES ('$_POST[overskrift]', '$_POST[forfatter]', '$dato', '$_POST[nyhed]')") or die ("Fejl ved INSERT INTO nyhed: " . mysql_error());


echo "Din nyhed er tilføjet<br><br>";

echo "<a href='java script:history.back();'>Tilbage</a>";

}
else
{
?>


<body>
<b>Tilf&oslash;j Nyhed</b><br>
</div>

<form method="post" action="tilfoj.nyheder.php?action=ny">
<b>Overskrift:</b><br />
<input name="overskrift" style="width:200px;" maxlength="50">
<br />
<br />
<textarea id="nyhedtekst" name="nyhed" style="height:200px; width:300px;"></textarea>
<br />
&nbsp;<br />
<input type="submit" value="Godkend nyhed">
</form>

</body>
</html>
<?
}
?>
Avatar billede leif Seniormester
23. juli 2007 - 22:45 #47
Det script indsætter: $_POST[forfatter] i forfatter feltet og da du ikke har et felt i din form som hedder forfatter indsætter den "" altså ingenting.

Som jeg skrev så har du flere valg enten tilføje et felt til din form som hedder forfatter eller fjerne det fra SQL sætningen

I det du viser der er der IKKE sat en fast forfatter, hvis det er i phpMyAdmin du har sat en Standard værdi, og du ønsker at denne bruges skal du fjerne forfatter fra SQL sætningen
Avatar billede leif Seniormester
23. juli 2007 - 22:47 #48
Dvs. enten bruge:
mysql_query("INSERT INTO nyhed (overskrift, dato, nyhed) VALUES ('$_POST[overskrift]', '$dato', '$_POST[nyhed]')") or die ("Fejl ved INSERT INTO nyhed: " . mysql_error());

eller indsætte i din form:
<input name="forfatter" style="width:200px;" maxlength="50">
Avatar billede sijmonj Nybegynder
24. juli 2007 - 16:43 #49
ahh okay :) nu virker det.. tak for hjælpen
Avatar billede sijmonj Nybegynder
18. oktober 2007 - 19:46 #50
Lukket
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