Avatar billede nae Nybegynder
11. marts 2004 - 15:22 Der er 26 kommentarer og
2 løsninger

Php begynder hjælp

Jeg har købt mig IDG hæftet - Start på php. Jeg har fulgt toturialen om at lave et nyhedsscript, men jeg kan ikke få det til at virke. koden her er koden for at tilføje nyheden:
<HTML>
<BODY>
<?
if($kodeord == "1234"){
  echo "Nyheden er tilføjet";
  $db = mysql_connect("XXX","XXX","XXX");
  mysql_select_db("XXX",$db);
  $nyhed_dato=time();

  mysql_query("INSERT INTO nyheder (dato, overskrift, tekst)
  Values ('$nyhed_dato','$nyhed_overskrift','$nyhed_tekst')");

} else {
?>
<FORM METHOD = POST ACTION=<? echo $PHP_SELF;?>>
kodeord:<BR>
<INPUT TYPE = PASSWORD NAME = kodeord><BR>
overskrift:<BR>
<INPUT TYPE=TEXT NAME=nyhed_overskrift><BR>
tekst:<Br>
<TEXTAREA NAME= nyhed_tekst>her indtastes nyheden</TEXTAREA><BR>
<INPUT TYPE=SUBMIT VALUE=skriv>
</FORM>
<?
}
?>
</BODY>
</HTML>

Og her er koden for vis nyheden:
<HTML>
<BODY>
<?
$db=mysql_connect("XXX","XXX","XX");
mysql_select_db("XXX",$db);
$foresp=mysql_query("SELECT dato, overskrift, tekst FROM nyheder ORDER BY dato DESC LIMIT 0,2");
while($data = mysql_fetch_array($foresp)){

  Echo "<B>$data[1]</B>-";
  echo date("j/n - Y", $data[0]);
  echo "<BR>$data[2]<BR><BR>";
}
?>
</BODY>
</HTML>

Når jeg tilføjer nyheden siger den også at nyheden er tilføjet, men når jeg går ind i vis nyheden er der ikke noget??? Har jeg ikke connectet mellem de to stumper koder ordentligt?
På forhånd tak for hjælpen
Avatar billede ridefisken Nybegynder
11. marts 2004 - 15:25 #1
Har selv haft samme problem efter at have læst hæftet.
Det er fordi dine variabler $nyhed_dato, $nyhed_overskrift og $nyhed_tekst ikke automatisk bliver sat med værdierne fra POST eller GET. Brug i stedet $_REQUEST["nyhed_overskift"] eller sæt $nyhed_overskrift = $_REQUEST["nyhed_overskrift"] inden du kalder mysql-sætningen.
Avatar billede nae Nybegynder
11. marts 2004 - 15:27 #2
Skal jeg så slette $nyhed_dato, $nyhed_overskrift og $nyhed_tekst og erstatte det med $_REQUEST["nyhed_overskift"] ?
Avatar billede mr-super Nybegynder
11. marts 2004 - 15:27 #3
Lav istedet en fil der hedder connect.php og skriv i den:

<?
if(!$id) {
session_start() or die("<br>The Sessions R dead!<br>");
} 
$host = "localhost";


  @$connection = mysql_connect("localhost","NAVN PÅ SIDEN","KODEN");


if (!$connection) {
$mysql_error = mysql_error();

srand((double)microtime()*1000000);
$number = rand(1,200);

print mysql_error();
exit;
}

  mysql_select_db("DIN DATABASE", $connection);
?>

Og bagefter skriv:

<?php include("connect.php"); ?><HTML>
<meta name="generator" content="Namo WebEditor v5.0(Trial)">
<BODY>
<?
include("connect.php)";
if($kodeord == "1234"){
  echo "Nyheden er tilføjet";
 
  $nyhed_dato=time();

  mysql_query("INSERT INTO nyheder (dato, overskrift, tekst)
  Values ('$nyhed_dato','$nyhed_overskrift','$nyhed_tekst')");

} else {
?>
<FORM METHOD = POST ACTION=<? echo $PHP_SELF;?>>
kodeord:<BR>
<INPUT TYPE = PASSWORD NAME = kodeord><BR>
overskrift:<BR>
<INPUT TYPE=TEXT NAME=nyhed_overskrift><BR>
tekst:<Br>
<TEXTAREA NAME= nyhed_tekst>her indtastes nyheden</TEXTAREA><BR>
<INPUT TYPE=SUBMIT VALUE=skriv>
</FORM>
<?
}
?>
<p>Og her er koden for vis nyheden:
<?
include("connect.php)";
$foresp=mysql_query("SELECT dato, overskrift, tekst FROM nyheder ORDER BY dato DESC LIMIT 0,2");
while($data = mysql_fetch_array($foresp)){

  echo "<B>$data[1]</B>-";
  echo date("j/n - Y", $data[0]);
  echo "<BR>$data[2]<BR><BR>";
}
?>

I din index.php eller nyheder.php eller hvad du kalder den.
Avatar billede withli Nybegynder
11. marts 2004 - 15:29 #4
Der er to ting jeg kan se at der kunne gå galt.
1. det kunne være fordi at du ikke har nogle " omkring dine input types name.
2. Hvad jeg tror der er mere sandsynligt er at den server du sidder på ikke har enabled global post vars.

dette vil betyde at du skal bruge

mysql_query("INSERT INTO nyheder (dato, overskrift, tekst)
  Values ('$_POST['nyhed_dato']','$_POST['nyhed_overskrift']','$_POST['nyhed_tekst']')");

}

Det skulle gøre tricket, hvad for en PHP version benytter du?
Avatar billede withli Nybegynder
11. marts 2004 - 15:32 #5
Det er ikke nogen helt skæv ide at lægge Db connectionen ind i en seperat fil, det kan varmt anbefales, men hvis du blot kører igennem nogle små ting, så gør det ikke det store.
Avatar billede danic Nybegynder
11. marts 2004 - 15:37 #6
hm
Avatar billede nae Nybegynder
11. marts 2004 - 15:43 #7
Ved ikke lige hvilken version det er, men jeg bruger surftown. Jeg mener det er 4.3 men er ikke sikker
Avatar billede withli Nybegynder
11. marts 2004 - 15:45 #8
Surftown, det er den nyeste, de har også et større webhotels firma, så de har rimeligt godt styr på deres sager.
Avatar billede withli Nybegynder
11. marts 2004 - 15:45 #9
Fik du det til at virke med _POST variablerne?
Avatar billede nae Nybegynder
11. marts 2004 - 15:46 #10
Du kan finde mit script på www.cheers.dk/news/nyhed.tilfoej.php og Du kan finde mit script på www.cheers.dk/news/nyhed.vis.php
Avatar billede avminarm Juniormester
11. marts 2004 - 15:47 #11
mr-super>> giv ham lige en chance, han er nybegynder :o)
withli>> det vil ikke virker pga dine '' inde i dine $_POST - du bliver nødt til at holde sql og PHP for sig

prøv med flg:

<?
if($_POST['kodeord'] == "1234"){
  echo "Nyheden er tilføjet";
  $db = mysql_connect("XXX","XXX","XXX");
  mysql_select_db("XXX",$db);
  $nyhed_dato=time();

  mysql_query("INSERT INTO nyheder (dato, overskrift, tekst)
  Values ('".$_POST['nyhed_dato']."','".$_POST['nyhed_overskrift']."','".$_POST['nyhed_tekst."')");

} else {
?>
<FORM METHOD = "POST" ACTION="<? echo $_SERVER['PHP_SELF'];?>">
kodeord:<BR>
<INPUT TYPE = "PASSWORD" NAME = "kodeord"><BR>
overskrift:<BR>
<INPUT TYPE="TEXT" NAME="nyhed_overskrift"><BR>
tekst:<Br>
<TEXTAREA NAME= "nyhed_tekst">her indtastes nyheden</TEXTAREA><BR>
<INPUT TYPE="SUBMIT" VALUE="skriv">
</FORM>
<?
}
?>
</BODY>
</HTML>

Og her er koden for vis nyheden:
<HTML>
<BODY>
<?
//jeg har ikke rettet herunder
$db=mysql_connect("XXX","XXX","XX");
mysql_select_db("XXX",$db);
$foresp=mysql_query("SELECT dato, overskrift, tekst FROM nyheder ORDER BY dato DESC LIMIT 0,2");
while($data = mysql_fetch_array($foresp)){

  Echo "<B>$data[1]</B>-";
  echo date("j/n - Y", $data[0]);
  echo "<BR>$data[2]<BR><BR>";
}
?>
</BODY>
</HTML>
Avatar billede withli Nybegynder
11. marts 2004 - 15:48 #12
Niksen, det kan jeg ikke, den vil siger til mig at the page can not be found
Kan du ikke fjerne de punktummer imellem nyhed.vis og nyhed.tilfoej
Avatar billede withli Nybegynder
11. marts 2004 - 15:49 #13
avminarm *G* NÅJA, *slår sig på panden* engang imellem ryger fingrene lidt hurtigt hen over tasterne :)
Avatar billede withli Nybegynder
11. marts 2004 - 15:49 #14
Jeg mente det som avminarm skrev :)
Avatar billede avminarm Juniormester
11. marts 2004 - 15:52 #15
hov hvis du vil have datoen med kan du putte denne linie in i din form:

<input type="hidden" name="nyhed_dato" value="<?php echo date("j/n - Y"); ?>">

et andet hint: skriv alle dine htmltags med småt+put navnene på die tags i " " - det er standarden i xhtml og det ser pænere ud
Avatar billede avminarm Juniormester
11. marts 2004 - 15:54 #16
og så bare skrive:

echo $data[0]; //udskriver datoen

i stedet for

echo date("j/n - Y", $data[0]);
Du kan evt. læse om POST og GET på www.wagners.dk/php - artikler - artikel om POST og GET
Avatar billede nae Nybegynder
11. marts 2004 - 15:55 #17
avminarm når jeg bruger det du har skrevet får jeg følgende fejl: Parse error: parse error, expecting `']''  ??
Avatar billede nae Nybegynder
11. marts 2004 - 16:02 #18
I linie 9
Avatar billede nae Nybegynder
11. marts 2004 - 16:02 #19
?
Avatar billede avminarm Juniormester
11. marts 2004 - 16:06 #20
sorry min fejl havde glemt en ]

brug: Values ('".$_POST['nyhed_dato']."','".$_POST['nyhed_overskrift']."','".$_POST['nyhed_tekst']."')");
Avatar billede nae Nybegynder
11. marts 2004 - 16:10 #21
Jeg synes stadig ikke det virker... prøv at tjekke www.cheers.dk/nyhed/tilfoej.php og www.cheers.dk/nyhed/vis.php
Avatar billede nae Nybegynder
11. marts 2004 - 16:26 #22
?
Avatar billede avminarm Juniormester
11. marts 2004 - 20:58 #23
hej igen ;o)

prøv at sætte en or die på din sql udsagn sådan her:

mysql_query("INSERT INTO nyheder (dato, overskrift, tekst)
  Values ('".$_POST['nyhed_dato']."','".$_POST['nyhed_overskrift']."','".$_POST['nyhed_tekst."')") or die(mysql_error());
Avatar billede Slettet bruger
12. marts 2004 - 02:39 #24
Jeg tror, du er ved at have fået lidt styr på resten, men din formular skal lige rettes lidt til. Der SKAL være anførselstegn om attributværdier og der MÅ IKKE være mellemrum mellem attributnavn og = og værdien. Nogle html-udgaver tillader, at man undlader anførselstegn, hvis og kun hvis værdien er et tal. (Nogle browsere er mere tilgivende, men det kan man ikke gå ud fra.)

Her er en rettet udgave: (Udover det, jeg nævnte, har jeg lavet om til små bogstaver. Så mangler der kun et par /-er hvis du vil skifte til xhtml.)

<form method="post" action="<? echo $_SERVER['PHP_SELF'];?>">
kodeord:<br>
<input type="password" name="kodeord"><br>
overskrift:<br>
<input type="text" name="nyhed_overskrift"><br>
tekst:<br>
<textarea name="nyhed_tekst">her indtastes nyheden</textarea><br>
<input type="submit" name="submit" value="Skriv">
</form>
Avatar billede nae Nybegynder
12. marts 2004 - 16:38 #25
Avminarm> jeg har prøvet at erstatte det men får en passing fejl i linie 9. Scriptet ser nu sådan ud:
<?
if($_POST['kodeord'] == "1234"){
  echo "Nyheden er tilføjet";
  $db = mysql_connect("XXX","XXX","XX");
  mysql_select_db("XXX",$db);
  $nyhed_dato=time();

  mysql_query("INSERT INTO nyheder (dato, overskrift, tekst)
  Values ('".$_POST['nyhed_dato']."','".$_POST['nyhed_overskrift']."','".$_POST['nyhed_tekst."')") or die(mysql_error());

} else {
?>
<FORM METHOD = "POST" ACTION="<? echo $_SERVER['PHP_SELF'];?>">
kodeord:<BR>
<INPUT TYPE = "PASSWORD" NAME = "kodeord"><BR>
overskrift:<BR>
<INPUT TYPE="TEXT" NAME="nyhed_overskrift"><BR>
tekst:<Br>
<TEXTAREA NAME= "nyhed_tekst">her indtastes nyheden</TEXTAREA><BR>
<INPUT TYPE="SUBMIT" VALUE="skriv">
</FORM>
<?
}
?>
</BODY>
</HTML>
Avatar billede Slettet bruger
12. marts 2004 - 17:05 #26
Der mangler '] efter nyhed_tekst: der skal stå $_POST['nyhed_tekst']."')

Og ret lige formularen også. Selv hvis du ikke vil skifte til små bogstaver, så skal mellemrummene omkring =tegnene væk.
Avatar billede avminarm Juniormester
15. marts 2004 - 09:35 #27
"lyt" til sandbox!
Avatar billede karsberg Nybegynder
25. oktober 2004 - 19:49 #28
tid til at lukke??
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