Avatar billede systemx Nybegynder
23. marts 2003 - 19:09 Der er 12 kommentarer og
1 løsning

probs med mysql - tror jeg

Har en stump kode, som angiveligt virker på et andet domæne men som laver nogle fuldstændigt uberegnelige resultater på mit eget domæne..

Der bliver via en form sendt en variabel med en skærmopløsning, som skal lægges ind i en database.. Hvis opløsningen ikke findes skal der laves en ny række i tabellen med '1' som antal, altså den første gæst med opløsningen.. Hvis opløsningen findes skal den opdateres med 1 og lægges tilbage i databasen.. Det er her problemet opstår idet den smider fuldstændigt uberegnelige resultater ind i database lige fra 34 til 712 ;(

Dette er koden som jeg bruger, håber der er nogle som kan hjælpe :

<?php

/* get variables from hidden form */
$resolution = $HTTP_POST_VARS["resolution"];

/* check om cookie er sat */
if (!$HTTP_COOKIE_VARS["reg"]) {

  /* opdater 'resolution' hvis den findes i db (ex. 1024x768) */
  $checksql = mysql_query("SELECT * FROM adm_info1 WHERE res='$resolution'") or die(mysql_error());
  $check = mysql_fetch_row($checksql);
   
    /* check om den findes */
  if ($check != NULL) {
   
            /* opløsningen eksisterer i db - plus 'antl' med 1 */
        $checksql2 = mysql_query("SELECT * FROM adm_info1 WHERE res='$resolution'") or die(mysql_error());
            while ($resantal = mysql_fetch_array($checksql2)) {
              $antal = $resantal["antal"] + 1;
        mysql_query("UPDATE adm_info1 SET antal='$antal' WHERE res='$resolution'") or die(mysql_error());
              }
      }
  else {
   
      /* opløsningen eksisterer ikke - indsæt ny række */
      mysql_query("INSERT INTO adm_info1 (res, antal) VALUES ('$resolution', '1')") or die(mysql_error());
        }
           
  /* sæt cookie - så bruger ikke kan refreshe siden og regge nyt info */
    setcookie("reg", "dataregged");
  }

?>
Avatar billede andy Nybegynder
23. marts 2003 - 19:15 #1
Fejlen ligger vel din form...
Avatar billede erikjacobsen Ekspert
23. marts 2003 - 19:16 #2
Du kan sikkert ændre
if ($check != NULL) {
til
if (!$check) {

og du kan ændre optællingen til 1 sql-sætning istedet for

mysql_query("UPDATE adm_info1 SET antal=antal+1 WHERE res='$resolution'") or
Avatar billede andy Nybegynder
23. marts 2003 - 19:17 #3
Du kan ændre:
  /* opløsningen eksisterer i db - plus 'antl' med 1 */
        $checksql2 = mysql_query("SELECT * FROM adm_info1 WHERE res='$resolution'") or die(mysql_error());
            while ($resantal = mysql_fetch_array($checksql2)) {
              $antal = $resantal["antal"] + 1;
        mysql_query("UPDATE adm_info1 SET antal='$antal' WHERE res='$resolution'") or die(mysql_error());
              }

til:
  /* opløsningen eksisterer i db - plus 'antl' med 1 */
        mysql_query("UPDATE adm_info1 SET antal=antal+1 WHERE res='$resolution'") or die(mysql_error());
Avatar billede andy Nybegynder
23. marts 2003 - 19:17 #4
hov, der var en der var hurtigere :D
Avatar billede systemx Nybegynder
23. marts 2003 - 19:55 #5
nu bruger jeg følgende kode, men den opdaterer stadig ikke ordentligt :


$resolution = $HTTP_POST_VARS["resolution"];

$checksql = mysql_query("SELECT * FROM adm_info1 WHERE res='$resolution'") or die(mysql_error());
$check = mysql_fetch_row($checksql);

if ($check) {
  mysql_query("UPDATE adm_info1 SET antal=antal+1 WHERE res='$resolution'") or die(mysql_error());
  }
else {
  mysql_query("INSERT INTO adm_info1 (res, antal) VALUES ('$resolution', '1')") or die(mysql_error());
    }
Avatar billede erikjacobsen Ekspert
23. marts 2003 - 20:00 #6
Er det så ikke bare fordi du har mange besøgende ... ?
Avatar billede systemx Nybegynder
23. marts 2003 - 20:03 #7
nope.. den opdaterer med 2 hver gang nu, så noget er da ændret, men kan sq ikke finde fejlen!
Avatar billede andy Nybegynder
23. marts 2003 - 20:28 #8
if ($check) {

skal være:

if (!$check) {
Avatar billede systemx Nybegynder
23. marts 2003 - 21:02 #9
det skal det da ikke ?
Avatar billede andy Nybegynder
23. marts 2003 - 21:49 #10
JO!
Avatar billede olebole Juniormester
24. marts 2003 - 00:56 #11
<ole>

andy >> Man får sjældent mere ret af at råbe. Hvordan skal han lave en update, hvis der ikke er noget at opdatere i databasen?

systemx >> der skal ganske rigtigt stå:

if ($check) {
  // opdater
} else {
  // indsæt
}

/mvh
</bole>
Avatar billede andy Nybegynder
24. marts 2003 - 15:18 #12
/* get variables from hidden form */
$resolution = $HTTP_POST_VARS["resolution"];

/* check om cookie er sat */

if (!$HTTP_COOKIE_VARS["reg"]) {
mysql_query("UPDATE adm_info1 SET antal=antal+1 WHERE res='$resolution'") or die(mysql_error());
if (mysql_affected_rows() == 0) { mysql_query("INSERT INTO adm_info1 (res, antal) VALUES ('$resolution', '1')") or die(mysql_error()); }
}

/* sæt cookie - så bruger ikke kan refreshe siden og regge nyt info */
    setcookie("reg", "dataregged");
Avatar billede systemx Nybegynder
30. marts 2003 - 23:35 #13
intet som virkede, men med en fresh apache, php og mysql install funkede det, spørg mig ikek hvorfor ;((
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