Avatar billede starf Nybegynder
13. oktober 2005 - 17:56 Der er 35 kommentarer og
5 løsninger

problem med update sql streng

forsøger at gøre så man kan redigere et entry, men har problemer med min sql streng..

mysql_query ("UPDATE profiler (navn, `by`, alder, interesser, txt) VALUES ('".$_POST['navn']."','".$_POST['by']."','".$_POST['alder']."','".$_POST['interesser']."','".$_POST['txt']."') WHERE id = ".$_GET['id'];

nogle der kan se hva der er galt? får denne besked:
Parse error: parse error, unexpected ';' in admin_profil_redigere_save.php on line 6
Avatar billede 2c Nybegynder
13. oktober 2005 - 18:07 #1
Jeg er ikke php ekspert, men jeg vil gætte på at du skal slutte af med ");" istedet for ";"

Du mangler jo den sidste parentes som du starter med mysql_query (
Avatar billede starf Nybegynder
13. oktober 2005 - 18:19 #2
tak nu får jeg da ingen fejl mere.. men mit script virker ikke rigtigt hmmm det ser sådan her ud:

<?php
require('config.php');
?>

<?php

mysql_query ("UPDATE profiler (navn, `by`, alder, interesser, txt) VALUES ('".$_POST['navn']."','".$_POST['by']."','".$_POST['alder']."','".$_POST['interesser']."','".$_POST['txt']."') WHERE id = ".$_GET['id']);
mysql_close($link);
?>

og det før med de forms der sender det der rettes og sådan ser sådan her ud:

<?php
require('config.php');

$sql = "SELECT * FROM profiler WHERE id = ".$_GET['id'];
//echo $sql;
$q = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($q);
//echo "<pre>";
//print_r($row);

?>
<form action="admin_profil_redigere_save.php" method="post">

<input type="text" value="<?= $row['navn'] ?>" name="navn" size="30"><br>

<b>By</b>

<input type="text" value="<?php  echo $row['by'] ?>" name="by" size="30"><br>

<b>Alder</b>

<input type="text" value="<?php  echo $row['alder'] ?>" name="alder" size="30"><br>

<b>Interesser</b>

<input type="text" value="<?php  echo $row['interesser'] ?>" name="interesser" size="30"><br>

<b>Profil tekst</b>

<input type="text" value="<?php  echo $row['txt'] ?>" name="txt" size="30"><br>

<input type="submit" value="Send">
</form>
Avatar billede 2c Nybegynder
13. oktober 2005 - 18:43 #3
Hvorfor virker det ikke rigtigt ? Hvad får du af fejl ?

Men måske kan det være fordi du ikke sender ID'et videre til din update side. Hvis det er derfor kunne du f.eks. gemme den i et hidden felt på den side hvor du laver en select *.
Avatar billede starf Nybegynder
13. oktober 2005 - 18:53 #4
jo såvidt jeg kan se bliver idét sendt vidre det er jo sendt via GET så det ligger i ens adresse linie..

får ingen fejl... der sker bare intet
Avatar billede 2c Nybegynder
13. oktober 2005 - 19:18 #5
Ok, jeg er som sagt ikke php ekspert, men kan du ikke også lave en or die til din update ? Vil det ikke give dig en fejl beskrivelse ? Hvis vi kan se den, vil det nok være lidt nemmere.
Avatar billede starf Nybegynder
13. oktober 2005 - 19:36 #6
dette her er hva jeg får med en die på

Parse error: parse error, unexpected T_LOGICAL_OR in /admin_profil_redigere_save.php on line 7
Avatar billede saucer Nybegynder
13. oktober 2005 - 20:11 #7
Normalt laver man update sådan : mysql_query("UPDATE blahh profiler navn ='$_POST[navn]', by = '$_POST[by]', alder = '$_POST[alder]', interesser = '$_POST[interesser]' , txt =$_POST[txt] WHERE id = '$_POST[id]'") or die(mysql_error());


Lige en ting, by kan ikke bruges som celle navn efter at by er reserveret ord til ORDER BY.. Så du skal nok rette det til bynavn og så vil det spille..

i din form skal du vel også ha tilføjet <input type="hidden" name="id" value="$_GET[]" />

Jeg har ikke testet koden, så du må lige selv løbe den igennem
Avatar billede saucer Nybegynder
13. oktober 2005 - 20:13 #8
Jeg tror at din kode vil virke hvis du bare fjerner  "" i dit quary omkring variabler..
Avatar billede starf Nybegynder
13. oktober 2005 - 20:36 #9
jeg bruger da by i en anden del af koden fint nok :)

f.eks her :)
mysql_query ("INSERT INTO profiler (navn, `by`, alder, interesser, txt) VALUES ('".$_POST['navn']."','".$_POST['by']."','".$_POST['alder']."','".$_POST['interesser']."','".$_POST['txt']."')");
Avatar billede starf Nybegynder
13. oktober 2005 - 20:41 #10
virker så ikke hvis ejg fjerner "" omkring mine variabler....
Avatar billede saucer Nybegynder
13. oktober 2005 - 22:01 #11
ja men så skal du hele tiden huske '' rund om by.. Men prøv den query som jeg har sendt til dig.
Det er første gang at jeg ser nogen bruge UPDATe på den måde som du gøre
Avatar billede 2c Nybegynder
13. oktober 2005 - 22:14 #12
Ja, saucer har da ret.

Du bruger en forkert syntaks til update. Den syntaks du bruger, ligner den man normalt bruger til insert. Update syntaksen er som saucer siger.

Kig eventuelt her: http://www.w3schools.com/sql/sql_update.asp
Avatar billede starf Nybegynder
13. oktober 2005 - 23:56 #13
ok beklager nok mig der er lidt dum.. kommer fra access og asp :)

denne her SQL
mysql_query("UPDATE profiler navn ='$_POST[navn]', by = '$_POST[by]', alder = '$_POST[alder]', interesser = '$_POST[interesser]' , txt ='$_POST[txt]' WHERE id = '$_POST[id]'") or die(mysql_error());

giver det her
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 '='Madss', by = 'Aalborgs', alder = '24s', interesser = 'Fodbolds
Avatar billede 2c Nybegynder
14. oktober 2005 - 00:19 #14
Skulle du ikke have de her: '' rundt om by ?

Det var jo et reserveret ord.
Avatar billede starf Nybegynder
14. oktober 2005 - 12:37 #15
mysql_query("UPDATE profiler navn ='$_POST[navn]', 'by' = '$_POST[by]', alder = '$_POST[alder]', interesser = '$_POST[interesser]' , txt ='$_POST[txt]' WHERE id = '$_POST[id]'") or die(mysql_error());

nu har jeg sat det omkring, som jeg ellers glemte men får stadig 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 '='Madss', 'by' = 'Aalborgs', alder = '24s', interesser = 'Fodbol
Avatar billede saucer Nybegynder
14. oktober 2005 - 13:07 #16
Så ret dog by til bynavn og sagen er afsluttet. :)

Og du kan ikke bruge '' til by når du bruger '' til variabler.
Avatar billede starf Nybegynder
14. oktober 2005 - 13:37 #17
prøver lige :)
Avatar billede starf Nybegynder
14. oktober 2005 - 13:47 #18
nu har jeg ændret det over alt til bynavn, men får stadig fejlen.. min sql ser således ud nu..

mysql_query("UPDATE profiler navn ='$_POST[navn]', bynavn = '$_POST[by]', alder = '$_POST[alder]', interesser = '$_POST[interesser]' , txt ='$_POST[txt]' WHERE id = '$_POST[id]'") or die(mysql_error());

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 '='Madss', bynavn = 'Aalborgs', alder = '24s', interesser = 'Fodb
Avatar billede saucer Nybegynder
14. oktober 2005 - 13:58 #19
Det er en fejl fra min side.. Tilføj SET etfer Profiler


mysql_query("UPDATE profiler SET navn ='$_POST[navn]', bynavn = '$_POST[by]', alder = '$_POST[alder]', interesser = '$_POST[interesser]' , txt ='$_POST[txt]' WHERE id = '$_POST[id]'") or die(mysql_error());
Avatar billede starf Nybegynder
15. oktober 2005 - 19:40 #20
ok nu kommer der godt nok ingen fejl, men det bliver heller ikke lagt ind i databasen Hmmmmm
Avatar billede saucer Nybegynder
15. oktober 2005 - 19:45 #21
gider du lige at skrive din kode ud så vi kan se hvad du har skrevet ?
Avatar billede starf Nybegynder
15. oktober 2005 - 19:51 #22
yes sir :)

denne her del lister indholdet så man kan trygge på det man vil redigere:

<?php
require('config.php');
//connect her
$q = mysql_query("SELECT id, navn FROM profiler") or die(mysql_error());
while($row = mysql_fetch_assoc($q)) {
  echo $row['id'] . " <a href='admin_profil_redigere_form.php?id=".$row['id']."'>".$row['navn']."</a><br />";
}
mysql_close($link);
?>

denne her del indeholder de forms der indsætter indholdet ind i det man vil redigere:

<?php
require('config.php');

$sql = "SELECT * FROM profiler WHERE id = ".$_GET['id'];
//echo $sql;
$q = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($q);
//echo "<pre>";
//print_r($row);

?>
<form action="admin_profil_redigere_save.php" method="post">

<input type="text" value="<?= $row['navn'] ?>" name="navn" size="30"><br>

<b>By</b>

<input type="text" value="<?php  echo $row['bynavn'] ?>" name="by" size="30"><br>

<b>Alder</b>

<input type="text" value="<?php  echo $row['alder'] ?>" name="alder" size="30"><br>

<b>Interesser</b>

<input type="text" value="<?php  echo $row['interesser'] ?>" name="interesser" size="30"><br>

<b>Profil tekst</b>

<input type="text" value="<?php  echo $row['txt'] ?>" name="txt" size="30"><br>

<input type="submit" value="Send">
</form>

og denne her del er det der sender det redigere til databasen (den der overstående)

<?php
require('config.php');
?>

<?php
mysql_query("UPDATE profiler SET navn ='$_POST[navn]', bynavn = '$_POST[by]', alder = '$_POST[alder]', interesser = '$_POST[interesser]' , txt ='$_POST[txt]' WHERE id = '$_POST[id]'") or die(mysql_error());

//mysql_query ("UPDATE profiler (navn, `by`, alder, interesser, txt) VALUES ('".$_POST['navn']."','".$_POST['by']."','".$_POST['alder']."','".$_POST['interesser']."','".$_POST['txt']."') WHERE id = ".$_GET['id']); or die(mysql_error());
mysql_close($link);
?>
Avatar billede saucer Nybegynder
16. oktober 2005 - 09:59 #23
Tilføj dette i dit redigerings form

<input type="hidden" name="action" value="add" />

Der efter skal du putte din update query i toppen af dit dokument. sådan her

if($_POST[action] =="add")
{
mysql_query("UPDATE profiler SET navn ='$_POST[navn]', bynavn = '$_POST[by]', alder = '$_POST[alder]', interesser = '$_POST[interesser]' , txt ='$_POST[txt]' WHERE id = '$_POST[id]'") or die(mysql_error());

$status = Opdateret;
}


Så kan du et anden sted i koden udskrive $status for at se om den har været inde i den if som vi lige har oprettet..

Rent programmerings mæssigt så har jeg den holding at alt der skal behandles skal gøres i toppen af koden eller i en helt anden fil, så man ikke blander det sammen med at muligt kode.. Men det er en smags sag..
Avatar billede starf Nybegynder
16. oktober 2005 - 17:56 #24
vil jeg ikke kunne sætte dette her stykke kode:

if($_POST[action] =="add")
{
mysql_query("UPDATE profiler SET navn ='$_POST[navn]', bynavn = '$_POST[by]', alder = '$_POST[alder]', interesser = '$_POST[interesser]' , txt ='$_POST[txt]' WHERE id = '$_POST[id]'") or die(mysql_error());

$status = Opdateret;
}

i sin egen fil, som admin_profil_redigere_save.php ?
Avatar billede saucer Nybegynder
16. oktober 2005 - 20:28 #25
ja det kan du fint
Avatar billede starf Nybegynder
16. oktober 2005 - 20:50 #26
Hmm nu begynder jeg at frygte jeg er mere end almindelig dum.. men nu har jeg gjort følgende:

<?php
require('config.php');

$sql = "SELECT * FROM profiler WHERE id = ".$_GET['id'];
//echo $sql;
$q = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($q);
//echo "<pre>";
//print_r($row);

?>
<form action="admin_profil_redigere_save.php" method="post">

<b>Navn</b>

<input type="text" value="<?= $row['navn'] ?>" name="navn" size="30"><br>

<b>By</b>

<input type="text" value="<?php  echo $row['bynavn'] ?>" name="by" size="30"><br>

<b>Alder</b>

<input type="text" value="<?php  echo $row['alder'] ?>" name="alder" size="30"><br>

<b>Interesser</b>

<input type="text" value="<?php  echo $row['interesser'] ?>" name="interesser" size="30"><br>

<b>Profil tekst</b>

<input type="text" value="<?php  echo $row['txt'] ?>" name="txt" size="30"><br>

<input type="hidden" name="action" value="add" />
<input type="submit" value="Send">
</form>

og:

admin_profil_save.php

<?php
require('config.php');
?>

<?php
if($_POST[action] =="add")
{
mysql_query("UPDATE profiler SET navn ='$_POST[navn]', bynavn = '$_POST[by]', alder = '$_POST[alder]', interesser = '$_POST[interesser]' , txt ='$_POST[txt]' WHERE id = '$_POST[id]'") or die(mysql_error());

$status = Opdateret;
}

?>

får ingen fejl, tingene bliver bar eikke tilført
Avatar billede saucer Nybegynder
16. oktober 2005 - 22:26 #27
Når du udskriver  $status efter du har aktiveret funktionen hvad indeholder den ?
Avatar billede starf Nybegynder
16. oktober 2005 - 23:03 #28
hvis jeg i bunden af admin_profil_save.php skriver
print_r($status); 

så er der intet output ?
Avatar billede saucer Nybegynder
17. oktober 2005 - 08:27 #29
normalt er det echo $status;

men hvis dem ikke udskriver indholdet af variablen så er det pga at den ikke aktivere den IF.. Det kan være at du ikke har husket at tilføje den hidden input som jeg skrev til dig. men ud fra din kode så er den med.. Prøv at udvide if særningen med 

else {echo "fejl!!";}

og se hvad den så siger. Hvis det ikke giver noget resultat så ret dit medhod i form fra POST til GET og sende den af sted igen. Så vil alle dine variabler fra form blive vist i adresse linjen. På den måde kan du se hvad det variabler indeholder. læg ekstra godt mærke til action variablen.
Avatar billede starf Nybegynder
18. oktober 2005 - 19:10 #30
giver stadig tomt.. tror du ikke der er UPDATE sql der er fejl på? har snakket med en der siger det hedder

" . $_POST['navn'] . "

dog får jeg stadig fejl på denne del

mysql_query("UPDATE profiler SET navn ='" . $_POST['navn'] . "', bynavn ='" . $_POST['by'] . "', alder ='" . $_POST['alder'] . ", interesser ='" . $_POST['interesser'] . ", txt ='" . $_POST['txt'] . ",  WHERE id ='" .$_POST['id'] '") or die(mysql_error());
Avatar billede saucer Nybegynder
18. oktober 2005 - 19:15 #31
Der er ingen grund til at lave det til en streng når man bare skal udskrive variablen..

Og nej hvis den ikke udskriver noget i status så kommer den slet ikke ind i den if så fejlen er før den kode
Avatar billede erikjacobsen Ekspert
18. oktober 2005 - 19:15 #32
Ikke komma føre WHERE, huske dine '-ere, og skriv den også lige ud, så du kan se om den er fornuftigt. Noget af det skulle være rettet her;

$sql="UPDATE profiler SET navn ='" . $_POST['navn'] . "', bynavn ='" . $_POST['by'] . "', alder ='" . $_POST['alder'] . "', interesser ='" . $_POST['interesser'] . "', txt ='" . $_POST['txt'] . "'  WHERE id ='" .$_POST['id'] '";
print $sql;
mysql_query($sql) or die(mysql_error());
Avatar billede erikjacobsen Ekspert
18. oktober 2005 - 19:17 #33
Faktisk (og der kan være mere galt andre steder):

$sql="UPDATE profiler SET navn ='" . $_POST['navn'] . "', bynavn ='" . $_POST['by'] . "', alder ='" . $_POST['alder'] . "', interesser ='" . $_POST['interesser'] . "', txt ='" . $_POST['txt'] . "'  WHERE id ='" .$_POST['id'] ."'";
print $sql;
mysql_query($sql) or die(mysql_error());
Avatar billede starf Nybegynder
18. oktober 2005 - 19:26 #34
Erik>
med dit får jeg dette output:
Forbundet succesfuldt UPDATE profiler SET navn ='Madss', bynavn ='Aalborgs', alder ='24s', interesser ='Fodbolds', txt ='lidt om mig .. tralalalas' WHERE id =''OpdateretS
Avatar billede starf Nybegynder
18. oktober 2005 - 19:34 #35
ser ud til for mig om den ikke får fat på noget id
Avatar billede erikjacobsen Ekspert
18. oktober 2005 - 19:38 #36
Er det et "id" felt i formen?
Avatar billede starf Nybegynder
18. oktober 2005 - 19:38 #37
nej det er et id fra databasen, som er auto nummer
Avatar billede saucer Nybegynder
18. oktober 2005 - 19:40 #38
Så skal du bare lave en hidden input med value="row[id]" i dit form
Avatar billede starf Nybegynder
18. oktober 2005 - 19:47 #39
så fik jeg det til at virke

Takker mange gange for hjælpen og tolmodigheden
Avatar billede saucer Nybegynder
18. oktober 2005 - 20:41 #40
Jamen selv tak :)

Det er indlæg som denne at andre folk også kan bruge til noget efter at der er så mange problem-stillinger i.

Held og lykke frem over
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