Avatar billede gedekid Nybegynder
02. september 2004 - 09:43 Der er 50 kommentarer og
1 løsning

problem med UPDATE

Hej,

Kan I finde en fejl i min kode her:

if (isset($_POST["site"]) or isset($_POST["address"]) or isset($_POST["description"]){
  $query = mysql_query("UPDATE links SET site='$site', address='$address', description='$description' WHERE id =".$_GET["id"]) or die mysql_error());
  if ($query){
      echo "Opdateret";
    }
} else {
    echo "Ingen links opdateret"; 
}

http://hagh.dk/subdirs/filmfan/docs/admin/links/editlink.php er helt blank
Avatar billede sone Nybegynder
02. september 2004 - 09:46 #1
1. i din IF-sætning bruger du OR... mener du ikke AND?
2. Man kan ikke bruge OR og AND som ord i PHP, brug || for OR og && for AND
Avatar billede gedekid Nybegynder
02. september 2004 - 09:49 #2
Det virker desværre ikke...
Avatar billede sone Nybegynder
02. september 2004 - 09:53 #3
...dvs. der slet ikke skrives noget ud til browseren - tyder på en PHP-syntaxfejl
Avatar billede flim Nybegynder
02. september 2004 - 09:54 #4
$query = mysql_query("UPDATE links SET site='$site', address='$address', description='$description' WHERE id =".$_GET["id"]) or die mysql_error());

Hvad med: $query = mysql_query("UPDATE links SET site='$site', address='$address', description='$description' WHERE id =".$_GET['id']."") or die mysql_error());
Avatar billede dennismp Nybegynder
02. september 2004 - 09:55 #5
Man kan godt bruge AND og OR istedet for && og ||

Skal

.. =".$_GET["id"]) or ..

ikke være
..  =".$_POST["id"]) or ..
Avatar billede gedekid Nybegynder
02. september 2004 - 09:59 #6
Argh.. virker ikke endnu

Min error_log fortæller mig følgende:

[error] PHP Parse error:  parse error, unexpected '{' in /usr/dana/data/www.hagh.dk/docs/subdirs/filmfan/docs/admin/links/editlink.php on line 12
Avatar billede sone Nybegynder
02. september 2004 - 10:03 #7
linie 12... hvilken linie er det?
Avatar billede gedekid Nybegynder
02. september 2004 - 10:05 #8
Det er den her:

if (isset($_POST["site"]) or isset($_POST["address"]) or isset($_POST["description"]){
Avatar billede michael_stim Ekspert
02. september 2004 - 10:05 #9
Ser ud til at du mangler en } til sidst
Avatar billede sone Nybegynder
02. september 2004 - 10:06 #10
brug || for OR og && for AND
Avatar billede gedekid Nybegynder
02. september 2004 - 10:06 #11
Helt til sidst ?

Har jeg nemlig også prøvet... No luck :(
Avatar billede dennismp Nybegynder
02. september 2004 - 10:08 #12
Du mangler et ) efter din sidste parantes i if-sætningen.
Avatar billede michael_stim Ekspert
02. september 2004 - 10:08 #13
Det har ikke noget at sige sone.
Men fjern } för else og sät den sidst.
Avatar billede michael_stim Ekspert
02. september 2004 - 10:09 #14
Og parantesen som dennis siger ;o)
Avatar billede dennismp Nybegynder
02. september 2004 - 10:09 #15
sone; OR og AND virker fint. Så lad dog manden bruge dem :)

http://www.php.net/manual/en/language.operators.logical.php
Avatar billede sone Nybegynder
02. september 2004 - 10:11 #16
Det vidste jeg ikke... man lærer jo hver dag
Avatar billede gedekid Nybegynder
02. september 2004 - 10:18 #17
Still no luck!

Argh!!!!

Min kode ser således ud nu:

if (isset($_POST["site"]) OR isset($_POST["address"]) OR isset($_POST["description"])){
  $query = mysql_query("UPDATE links SET site='$site', address='$address', description='$description' WHERE id =".$_GET["id"]) or die mysql_error());
  if ($query){
      echo "Opdateret";
    }
else {
    echo "Ingen links opdateret"; 
}
}

Min error_log siger nu:
[error] PHP Parse error:  parse error, unexpected T_STRING in /usr/dana/data/www.hagh.dk/docs/subdirs/filmfan/docs/admin/links/editlink.php on line 13
Avatar billede dennismp Nybegynder
02. september 2004 - 10:20 #18
har du ikke en } for meget i bunden?
Avatar billede michael_stim Ekspert
02. september 2004 - 10:22 #19
Der er to ifsatser. Men som dennis sagde tidligere: skaldet ikke väre POST?
Avatar billede michael_stim Ekspert
02. september 2004 - 10:23 #20
=".$_GET["id"])
=".$_POST["id"])
Avatar billede dennismp Nybegynder
02. september 2004 - 10:24 #21
/me føler sig overset :-)
Avatar billede gedekid Nybegynder
02. september 2004 - 10:26 #22
Still no luck... Måske det vil være nemmere at lave det på en anden måde?
For at I måske kan være mere med så hører siden sammen med

http://hagh.dk/subdirs/filmfan/docs/admin/links/

Hvor man så klikker på 'Rediger link' og ændrer så linket til det ønskede og klikker på opdater. Så skulle linket blive opdateret i databasen med dette irriterende stykke kode!
Avatar billede michael_stim Ekspert
02. september 2004 - 10:32 #23
OK det skal väre GET.
Avatar billede michael_stim Ekspert
02. september 2004 - 10:33 #24
Pröv echo $query;
Avatar billede dennismp Nybegynder
02. september 2004 - 10:45 #25
Når jeg trykker på rediger link, så får jeg en tom side.

Hmm.. er du sikker på at du husker at få din id variabel overført fra edit til når du submitter? (kan som sagt ikke selv tjekke det, da jeg får en tom side ~ 0 bytes)
Avatar billede gedekid Nybegynder
02. september 2004 - 10:46 #26
Jep.. Hvis jeg fjerner det drilske kode... Så hiver den fint id'et med over... Altså hvis jeg f.eks. klikker på Rediger ud for Comingsoon så bliver kun den vist helt fint på editlink.php ...
Avatar billede gedekid Nybegynder
02. september 2004 - 10:48 #27
hov...tror jeg misforstod spørgsmålet
Avatar billede dennismp Nybegynder
02. september 2004 - 10:58 #28
når man trykker på editlink.php så laver den en form. Fint nok. I denne form, har du så stadig id med?

har du fx

<form method="post" action="...?id=23">

eller

<form method="post" action="...">
<input type=hidden name="id" value="23">

ellers får du jo ikke overført id'et længere end til når du viser formen. Når han trykker submit - er den jo væk.. Med mindre du har gemt den et sted :)
Avatar billede gedekid Nybegynder
02. september 2004 - 11:00 #29
Jeps..

<form action="/subdirs/filmfan/docs/admin/links/editlink.php?id=2" name="editlinks" method="post">

Glem min directory struktur ;)
Avatar billede dennismp Nybegynder
02. september 2004 - 11:03 #30
Jeg havde engang for lang tid siden et problem med at netscape(!) ikke overførte den slags (Get) variabler, når man blandede get og post. Men tvivler på at det er det. Prøv at følgge michael's råd og lad os se på sql'en.

Kan nemt gøres med:

$query = mysql_query($sql="UPDATE links SET site='$site', address='$address', description='$description' WHERE id =".$_GET["id"]) or die mysql_error() . 'SQL:'.$sql);
Avatar billede gedekid Nybegynder
02. september 2004 - 11:05 #31
Jeg er lidt i tvivl om hvor jeg skal smide min echo $query; henne
Avatar billede dennismp Nybegynder
02. september 2004 - 11:09 #32
Du kan bare bruge "min" mysql_query() så vil den skrive sql'en ud i tilfælde af fejl.
Avatar billede gedekid Nybegynder
02. september 2004 - 11:24 #33
Still no luck! Argh... :(

I er nok ved at være trætte af mig nu?! :)
Avatar billede michael_stim Ekspert
02. september 2004 - 11:44 #34
Men når man bliver sendt videre til näste side har du så en SELECT FROM links WHERE....
For du skal vel ikke opdatere för på näste side?
Avatar billede michael_stim Ekspert
02. september 2004 - 11:46 #35
Pröv at smide hele koden her ind. På begge sider.
Avatar billede gedekid Nybegynder
02. september 2004 - 11:48 #36
Der kommer lige en ordenlig spand her:

------links.php---------

<?php include "connect.php";


$result = mysql_query("SELECT id, site, address, description FROM links ORDER BY site ASC");

while ($row = mysql_fetch_array($result)) {
  echo "<table class=\"sites\">\n";
  echo "<tr>\n";
  echo "<td class=\"site\"><a href='http://$row[address]' title='$row[site]' target='_blank'>$row[site]</a></td>\n";
  echo "<td class=\"address\"><p align=\"left\">$row[address]</p></td>\n";
  echo "<td class=\"desc\">$row[description]</td>\n";
  echo "<td class=\"reddel\"><a href='/subdirs/filmfan/docs/admin/links/editlink.php?id={$row['id']}'>Rediger link</a> - <a href='/subdirs/filmfan/docs/admin/links/deletelink.php?id={$row['id']}'>Slet link</a><br>\n";

 
 
  echo "</tr>\n";
}

echo "</table>\n";
?>


------editlinks.php---------

<?php include "connect.php";

if (isset($_POST["site"]) OR isset($_POST["address"]) OR isset($_POST["description"])){       
  $updatequery = mysql_query("UPDATE links SET site='$site', address='$address' description='$description' WHERE id =".$_GET["id"]));
  if ($updatequery) {
      echo "Opdateret";
}
else {
    echo "Ingen links opdateret"; 
}
}



echo "<form action=\"".$_SERVER['REQUEST_URI']."\" name=\"editlinks\" method=\"post\">";   

$result = mysql_query("SELECT id, site, address, description FROM links WHERE id =". $_GET["id"] ." ORDER BY site ASC");

while ($row = mysql_fetch_array($result)) {
  echo "<table>\n";
  echo "<tr>\n";
  echo "<td>Sidenavn:</td> <td><input type=\"text\" value=\"$row[site]\" name=\"site\"></td>\n";
  echo "</tr>\n";
  echo "<tr>\n"; 
  echo "<td>Adresse:</td> <td><input type=\"text\" value=\"$row[address]\" name=\"address\"></td>\n";
  echo "</tr>\n";
  echo "<tr>\n"; 
  echo "<td>Beskrivelse:</td> <td><input type=\"text\" value=\"$row[description]\" name=\"description\"></td>\n";
  echo "</tr>\n";
  echo "<tr>\n";
  echo "<td colspan=\"2\"><input type=\"submit\" value=\"Opdater\" name=\"submit\"></td>\n";
  echo "</tr>\n";
}

echo "</table>";
echo "</form>";
?>
Avatar billede michael_stim Ekspert
02. september 2004 - 11:58 #37
Men du har jo ingen form på din linksside.
Avatar billede gedekid Nybegynder
02. september 2004 - 12:01 #38
Skal der være det?

Det er bare en liste over de links der er i databasen så kan man der vælge om man vil slette eller redigere et link
delete.php virker ubeklageligt
Avatar billede michael_stim Ekspert
02. september 2004 - 12:05 #39
Hvad jeg kan se så kommer du aldrig ind ifsatsen:
if (isset($_POST["site"]) OR isset($_POST["address"]) OR isset($_POST["description"])){
Avatar billede michael_stim Ekspert
02. september 2004 - 12:09 #40
Det er mig der tänker forkert glem min sidste kommentar ;o)
Avatar billede dennismp Nybegynder
02. september 2004 - 12:11 #41
prøv, øverst i din editlinks fil at skrive

print "POST = "; print_r($_POST); print "<br>"
print "GET = "; print_r($_GET); print "<br>"

få formen frem og tryk submit (Opdater).. Hvad skriver den så?

Fik du prøvet at skrive dit sql ud?
Avatar billede michael_stim Ekspert
02. september 2004 - 12:12 #42
$result = mysql_query("SELECT id, site, address, description FROM links WHERE id =". $_GET['id'] ." ORDER BY site ASC");

Hvad sker der hvis du ändrer denne linie. (Copy/Paste)
Avatar billede gedekid Nybegynder
02. september 2004 - 13:50 #43
prøv, øverst i din editlinks fil at skrive

print "POST = "; print_r($_POST); print "<br>"
print "GET = "; print_r($_GET); print "<br>"

få formen frem og tryk submit (Opdater).. Hvad skriver den så?

--------------

Så skriver den:

POST = Array ( [site] => Internet Movie Database [address] => www.imdb.com [description] => IMDB er verdens største filmdatabase [submit] => Opdater )
GET = Array ( [id] => 5 )
Avatar billede gedekid Nybegynder
02. september 2004 - 13:59 #44
JAAA!!

Nu vises siden

http://www.hagh.dk/subdirs/filmfan/docs/admin/links/editlink.php?id=4

Nu opdaterer den bare ikke... Den kører ned til else'en når jeg klikker opdater
Avatar billede erikjacobsen Ekspert
02. september 2004 - 14:03 #45
Hvis der stadig står

  $updatequery = mysql_query("UPDATE links SET site='$site', address='$address' description='$description' WHERE id =".$_GET["id"]));

er der jo en syntaks fejl med et manglende komma. Ret det til

  $updatequery = mysql_query("UPDATE links SET site='$site', address='$address', description='$description' WHERE id =".$_GET["id"])) or die(mysql_error());
Avatar billede gedekid Nybegynder
02. september 2004 - 14:08 #46
Takker takker takker! Vi er ved at være der :)

Nu når jeg trykker opdater så tømmer den indholdet i databasen, så der ikke står noget overhovedet. Men ID'et beholdes stadig

Det må nok være noget med POST'en
Avatar billede erikjacobsen Ekspert
02. september 2004 - 14:12 #47
$updatequery = mysql_query("UPDATE links SET site='{$_POST['site']}', address='{$_POST['address']}', description='{$_POST['description']}' WHERE id ='{$_GET['id']}'") or die(mysql_error());
Avatar billede gedekid Nybegynder
02. september 2004 - 14:17 #48
erikjacobsen - du er min redningsmand!!!! Mange takker!!!!!

Smid lige et svar så får du lige 30 point. Men også en STOR tak for hjælpen til jer andre!!!!
Avatar billede erikjacobsen Ekspert
02. september 2004 - 14:22 #49
Tak, men jeg samler slet ikke på point. Der er nok andre der trænger.
Avatar billede gedekid Nybegynder
02. september 2004 - 14:23 #50
okay...Men tak for hjælpen

alle bare kom med et svar så deler I lige pointene. Kom til at afvise :(
Avatar billede michael_stim Ekspert
02. september 2004 - 14:38 #51
OK, godt at du fik det til at virke.
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

IT-JOB