Avatar billede tweak Nybegynder
19. januar 2006 - 09:48 Der er 29 kommentarer og
1 løsning

Hjælp til at finde fejl

Hej,

Jeg får en fejl på denne linje:

$sql = "UPDATE gaestebog set navn = '$navn', epost = '$epost', overskrift = '$overskrift', besked = '$besked' WHERE id = '$_GET["id"]'";

Fejlen lyder:

Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING

Nogen som kan hjælpe med den.?
Avatar billede dmdisco Nybegynder
19. januar 2006 - 09:56 #1
kan ikke lige se noget andet end '$_GET["id"]'

$sql = "UPDATE gaestebog SET navn = '".$navn."', epost = '".$epost."', overskrift = '".$overskrift."', besked = '".$besked."' WHERE id = '".$_GET['id']."'";
Avatar billede tweak Nybegynder
19. januar 2006 - 10:24 #2
Okay, nu får jeg ikke fejlen. Der er fordi jeg er ved at se om jeg kan lave en edit side til min gæstebog, men når jeg har lavet de ændringer i indlæget og trykker på submit bliver der ikke rettet noget :(

I får lige hele edit koden:

function rediger_i_gaestebog($navn, $epost, $overskrift, $besked) {
   
    $ip = getenv('REMOTE_ADDR');

$sql = "UPDATE gaestebog SET navn = '".$navn."', epost = '".$epost."', overskrift = '".$overskrift."', besked = '".$besked."' WHERE id = '".$_GET['id']."'";

    aabn_forbindelse_og_vaelgdb();
    sql_spoerg($sql);
    luk_forbindelse();
}
Avatar billede tweak Nybegynder
19. januar 2006 - 10:35 #3
I kan lige se hvordan min gem funktion ser ud:

function skriv_i_gaestebog($navn, $epost, $overskrift, $besked) {
   
    $ip = getenv('REMOTE_ADDR');

    $sql = "insert into gaestebog(navn,overskrift,epost,besked,ip,tid)
        values('$navn','$epost','$overskrift','$besked','$ip',now())";


    aabn_forbindelse_og_vaelgdb();
    sql_spoerg($sql);
    luk_forbindelse();

}
Avatar billede dmdisco Nybegynder
19. januar 2006 - 10:58 #4
poster du dem feltet id igennem en form med method="post"?
for så skal du bruge $_POST['id'] i din sql sætning
Avatar billede tweak Nybegynder
19. januar 2006 - 11:05 #5
Jeg jeg bruger post

nu prøvede jeg så at ændre det til:

WHERE id = '".$_POST['id']."'";

Men det hjælper ikke.
Avatar billede dmdisco Nybegynder
19. januar 2006 - 11:14 #6
prøv at udskrive din $_POST og $_GET array for at se om det er der problemet er, dette kan gøres med:
<pre>
<?php
print_r($_POST);
print_r($_GET);
?>
</pre>
det skal bare være i den fil du poster til, du kan evt lave en ny og ændre din form eller bare indsætte det i den nuværende fil
Avatar billede tweak Nybegynder
19. januar 2006 - 11:21 #7
Hej igen,

Så får jeg udskrevet:

Array
(
    [navn] => Navn
    [epost] =>
    [overskrift] => E-mail
    [besked] => yyyyyyyyyyyy
)
Array
(
)


Hvor besked før jeg ændrede på det var: [besked] => Test
Avatar billede tweak Nybegynder
19. januar 2006 - 11:22 #8
Hov jeg får denne fejl:

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/dan12027/public_html/tagwall/redigere_indlaeg.php:2) in /usr/home/dan12027/public_html/tagwall/redigere_indlaeg.php on line 108
Avatar billede tweak Nybegynder
19. januar 2006 - 11:24 #9
Ja det har vel ikke noget at gøre med at der ikke bliver ændret på teksten.?
Avatar billede dmdisco Nybegynder
19. januar 2006 - 11:24 #10
du får altså ikke definneret et id nummer nogen steder enten skal du i din form lave et felt med id nummeret evt. et hidden felt eller også skal du overføre det i adresselinien (get) i din form (action="dinfil.php?id=1")
Avatar billede tweak Nybegynder
19. januar 2006 - 11:27 #11
Sådan her.?

<form action="../redigere_indlaeg.php?=1" method="post">
Avatar billede tweak Nybegynder
19. januar 2006 - 11:28 #12
Hvis jeg gør det sådan, så ændre det ikke på noget.
Avatar billede tweak Nybegynder
19. januar 2006 - 11:30 #13
den udskriver i min redigere.php

Array
(
)
Array
(
    [id] => 66
    [start_nr] => 0
)

og i redigere_indlaeg.php

Array
(
    [navn] => Navn
    [epost] =>
    [overskrift] => E-mail
    [besked] => test
)
Array
(
)
Avatar billede dmdisco Nybegynder
19. januar 2006 - 11:45 #14
hmm burde gerne være med i get var'en

prøv at lav et hidden felt
<input type="hidden" name="id" value="1">
tallet 1 skal så være det id nummer du vil have ændret
Avatar billede tweak Nybegynder
19. januar 2006 - 11:48 #15
Så blev det sku ændret.!! Hvad kan der være galt.?
Avatar billede dmdisco Nybegynder
19. januar 2006 - 11:53 #16
problemet ser ud til at være at dit script ikke modtager $_GET['id'] i
$sql = "UPDATE gaestebog SET navn = '".$navn."', epost = '".$epost."', overskrift = '".$overskrift."', besked = '".$besked."' WHERE id = '".$_GET['id']."'";
enten fordi den ikke bliver sendt rigtigt eller også fordi den er sat til "" hvis du ændre
$sql = "UPDATE gaestebog SET navn = '".$navn."', epost = '".$epost."', overskrift = '".$overskrift."', besked = '".$besked."' WHERE id = '".$_GET['id']."'";
til
$sql = "UPDATE gaestebog SET navn = '".$navn."', epost = '".$epost."', overskrift = '".$overskrift."', besked = '".$besked."' WHERE id = '1'"; // eller et nummer der er i databasen

vil den sikkert opdatere som den skal
Avatar billede dmdisco Nybegynder
19. januar 2006 - 11:55 #17
hvis du laver en query til mysql der hedder WHERE id="" så returnere den ikke noget da der nok altid står noget i feltet id og derfor aldrig vil være lig ingenting
Avatar billede tweak Nybegynder
19. januar 2006 - 12:02 #18
Jeg kan godt se meningen med det, men det ændre ikke rigtigt på noget :(
Avatar billede tweak Nybegynder
19. januar 2006 - 12:09 #19
Er vi enige i at denne linje

$sql = "UPDATE gaestebog set navn = '$navn', epost = '$epost', overskrift = '$overskrift', besked = '$besked' WHERE id = '".$_POST['id']."'";

Skal ændres til:
$sql = "UPDATE gaestebog SET navn = '".$navn."', epost = '".$epost."', overskrift = '".$overskrift."', besked = '".$besked."' WHERE id = '".$_GET['id']."'";
Avatar billede tweak Nybegynder
19. januar 2006 - 12:15 #20
Sludder:

$sql = "UPDATE gaestebog set navn = '$navn', epost = '$epost', overskrift = '$overskrift', besked = '$besked' WHERE id = '".$_POST['id']."'";

Skal ændres til:

$sql = "UPDATE gaestebog SET navn = '".$navn."', epost = '".$epost."', overskrift = '".$overskrift."', besked = '".$besked."' WHERE id = '1'";
Avatar billede dmdisco Nybegynder
19. januar 2006 - 12:38 #21
ja eller et andet id nummer der er i databasen men det er bare for at teste om det virker
Avatar billede tweak Nybegynder
19. januar 2006 - 12:49 #22
Ok, men det gør det ikke :(
Avatar billede dmdisco Nybegynder
19. januar 2006 - 12:57 #23
i den funktion der hedder sql_spoerg() er der sat or die(mysql_error()) efter mysql kaldene hvis ikke så prøv at skrive det derind for lige at se om der skulle være en anden fejl
Avatar billede tweak Nybegynder
19. januar 2006 - 13:11 #24
Kan du ikke vise hvordan.?

    aabn_forbindelse_og_vaelgdb();
    sql_spoerg($sql);
    luk_forbindelse();
Avatar billede dmdisco Nybegynder
19. januar 2006 - 13:12 #25
prøv at vis den kode der er i din form og i den fil hvor sql_spoerg() funktionen er i evt. kun den enkelte funktion
Avatar billede tweak Nybegynder
19. januar 2006 - 13:20 #26
Kan det være denne du tænker på:

function sql_spoerg($query) {
  $resultat = mysql_query($query);

og min form:

<form action="../redigere_indlaeg.php" method="post">
Navn:<input name="navn" type="text" value="<?php echo $navn; ?>"><br>
Email:<input name="epost" type="text" value="<?php echo $epost; ?>"><br>
Overskrift:<input name="overskrift" type="text" value="<?php echo $overskrift; ?>"><br>
<textarea rows="6" cols="50" name="besked"><?php echo $besked; ?></textarea><br>
<input type="submit" value="Skriv!">
</form>
Avatar billede dmdisco Nybegynder
19. januar 2006 - 13:27 #27
ja ændre
function sql_spoerg($query) {
  $resultat = mysql_query($query);
til
function sql_spoerg($query) {
  $resultat = mysql_query($query) or die(mysql_error());

og indsæt id nummeret som et hidden felt i din form
(kræver dog lige at du retter variablen $id til den der indeholder det rigtige id nummer som du vil redigere)

<form action="../redigere_indlaeg.php" method="post">
Navn:<input name="navn" type="text" value="<?php echo $navn; ?>"><br>
Email:<input name="epost" type="text" value="<?php echo $epost; ?>"><br>
Overskrift:<input name="overskrift" type="text" value="<?php echo $overskrift; ?>"><br>
<input type="hidden" name="id" value="<?php echo $id;?>">
<textarea rows="6" cols="50" name="besked"><?php echo $besked; ?></textarea><br>
<input type="submit" value="Skriv!">
</form>

og så burde
$sql = "UPDATE gaestebog SET navn = '".$navn."', epost = '".$epost."', overskrift = '".$overskrift."', besked = '".$besked."' WHERE id = '".$_POST['id']."'";

gerne virke ellers får du en fejl ved mysql kaldet :)
Avatar billede tweak Nybegynder
19. januar 2006 - 13:55 #28
dmdisco, du er bare for god.!!! Nu virker det sq. :) Ved ikke lige hvad jeg har lavet forkert, men nu virker det. Mange tak. Vil du ikke smide et svar.?
Avatar billede dmdisco Nybegynder
19. januar 2006 - 13:58 #29
sælføli
Avatar billede tweak Nybegynder
19. januar 2006 - 13:59 #30
Og endnu engang, tak.!
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