Avatar billede madsens90 Praktikant
25. august 2007 - 13:31 Der er 18 kommentarer og
1 løsning

Hvad er fejlen i min connecten? Tror måske det er update? eller?

Jeg kan ikke finde ud af hvad fejlen er i dette.
Jeg vil først have den til at hente hvad der står i et bestemt field i en bestemt row først. Derefter vil jeg have den til at ligge det nye tal sammen med det der stod i forvejen, og så opdaterer/UPDATE min row.

Nogen der kan se fejlen? :

if ($_GET['id'] == "post") {

$updpoint3= $_POST["updpoint1_txt"];

mysql_connect("","","") or die(mysql_error());
  mysql_select_db("") or die(mysql_error());
  $query = "SELECT point FROM users WHERE username = $updpoint3";
  $result = mysql_query($query);
  while($r=@mysql_fetch_array($result)); 

$point2 = $r['point'];

$updpoint4= $_POST["updpoint2_txt"];
mysql_connect("","","") or die(mysql_error());
  mysql_select_db("") or die(mysql_error());
mysql_query("UPDATE users SET point = $point3 WHERE username = $updpoint3");
header("Location:point.php");

}else{

(Her komm så min <form> hvor:
Username = updpoint1_txt
Nye point = updpoint2_txt )
Avatar billede madsens90 Praktikant
25. august 2007 - 13:33 #1
I så fald at det ikke kan løses, så fjerner jeg blot det hvor at den henter det der stod i forvejen, og så må man bare selv plusse det til..
Så slipper jeg også for at lave noget hvor at man kan fjerne nogle point, for så kan man bare give en person 0 point, og så updater den min row = point til 0
Avatar billede madsens90 Praktikant
25. august 2007 - 13:34 #2
Hint: Jeg har prøvet at fjerne den ene connection for at se om det var problemet, men det var det ikke?
Avatar billede erikjacobsen Ekspert
25. august 2007 - 13:36 #3
Hvor kommer $point3 fra ?  Det er under alle omstændigheder usikker kode du har - alle kan jo give alle vilkårligt mange point.
Avatar billede madsens90 Praktikant
25. august 2007 - 14:07 #4
hov.. jeg manglede lige denne linje..
Var kommet til at slette den lige inden jeg lavede dette spørgsmål.
men nu er den med i det igen:

Lige under: $updpoint4= $_POST["updpoint2_txt"];

Skal der stå: $point3 = $point2 + $updpoint4;

NOTE: Det er kun admins der kan se siden med dette/bruge dette..
Avatar billede erikjacobsen Ekspert
25. august 2007 - 14:16 #5
Hvilken type er username i tabellen. Er det ikke en taltype, skal der '...' rundt om værdien. Lær dig selv at få fejlene fra mysql at se, fx:

$result = mysql_query($query) or die(mysql_error());
Avatar billede madsens90 Praktikant
25. august 2007 - 14:32 #6
Hvis jeg forsøger dit forslag med:
$result = mysql_query($query) or die(mysql_error());

Så siger den dette:
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 '' at line 1

username er navnet på en profil.. I mit tilfælde er det Madsens ved min bruger..
Skal der så stå: WHERE username = '$updpoint3' ??
Avatar billede erikjacobsen Ekspert
25. august 2007 - 14:36 #7
Det behøver du ikke spørge om - det er jo det jeg siger, hvis feltet altså ikke er et talfelt.
Avatar billede erikjacobsen Ekspert
25. august 2007 - 14:36 #8
Men det kunne tyde på at $updpoint3 er tom.
Avatar billede nielle Nybegynder
25. august 2007 - 14:41 #9
Hvorfor lave udregningen i PHP, kode når det kan laves mere kompakt direkte i SQL:

mysql_query("UPDATE users SET point = $point+$updpoint4 WHERE username = $updpoint3");
Avatar billede nielle Nybegynder
25. august 2007 - 14:42 #10
mysql_query("UPDATE users SET point = point + $updpoint4 WHERE username = $updpoint3");
Avatar billede madsens90 Praktikant
25. august 2007 - 14:44 #11
Wow.. der ser en hel del lettere ud. :)
Vidste jeg ikke man kunne, men det er jo derfor jeg spørger om hjælp. :)

Tester det lige..
Avatar billede madsens90 Praktikant
25. august 2007 - 14:49 #12
Så vidt jeg kan forstå kan det gøres så simpelt som det her:

if ($_GET['id'] == "post") {

$updpoint3= $_POST["updpoint1_txt"];
$updpoint4= $_POST["updpoint2_txt"];

mysql_connect("","","") or die(mysql_error());
  mysql_select_db("") or die(mysql_error());
mysql_query("UPDATE users SET point = point + $updpoint4 WHERE username = '$updpoint3'");
header("Location:point.php");

}else{

Men hvorfor virker det ikke så? :/
Avatar billede madsens90 Praktikant
25. august 2007 - 14:54 #13
Hvis jeg i en test skriver:

mysql_query("UPDATE users SET point = point + '2' WHERE username = 'Madsens'");

Så virker det, og jeg for 2 point lagt ind på min profil hver gang..
Avatar billede madsens90 Praktikant
25. august 2007 - 14:59 #14
Det virker!! Mange tak folkens.

Erikjacobsen, tak for det med at man skal bruge '...' når det ikke er tal, og nielle, tak fordi du viste hvordan det kunne gøre MEGET MEGET nemmere. :)

Men da jeg fandt ud af jeg havde dummet mig, og at det var en fejl i min form, selvom jeg ikke troede det var det, så ved jeg ikke hvem af jer der skal have point?
Så den der først kommer med et "Svar", for point. :)
Avatar billede erikjacobsen Ekspert
25. august 2007 - 15:03 #15
Ingen point til mig, tak.
Avatar billede madsens90 Praktikant
25. august 2007 - 15:04 #16
Jamen så må Nielle komme med et svar så han kan få det hvis han vil. :)
Avatar billede nielle Nybegynder
25. august 2007 - 15:06 #17
erikjacobsen har allerede været inde på det med sikkerheden. Du bør sikre at joe-the-hacker ikke bare uden videre kan sende hvad som helt til din form.

Det kan du f.eks. sikre imod ved at escape det der kommer "udefra":

$updpoint3 = mysql_real_escape_string($_POST["updpoint1_txt"]);
$updpoint4 = mysql_real_escape_string($_POST["updpoint2_txt"]);
Avatar billede nielle Nybegynder
25. august 2007 - 15:06 #18
... og et svar :^)
Avatar billede madsens90 Praktikant
25. august 2007 - 15:43 #19
Sådan..
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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