Avatar billede spiritusanta Nybegynder
08. april 2004 - 21:50 Der er 20 kommentarer og
1 løsning

Redigere post i database

Hey
Jeg er ved at lave et script, der genkender ens ip og derved bestemmer hvilket sprog siden skal vises i.
Problemet er nu, hver gang man klikker på linket, der angiver sproget oprettes der en ny post.
Jeg vil gerne have at, hvis ip'en allerede findes i databasen, skal den gå til den post der svare til ip'en og overskrive sproget.
Hvis IPen ikke findes, skal personen bare oprettes i databasen.

Herunder ses min kode, kan ikke komme videre.

  if($sprog)
  {
    $ip = $_SERVER['REMOTE_ADDR'];
   
    if(ip findes i database)
    {
    gå til post der svare til ip, erstat eksisterende værdi under sprog til $sprog.
    }

    else
    {
    mysql_query("insert into sprog (sprog,ip) values ('$sprog','$ip')");
    }
  }
Avatar billede riversen Nybegynder
08. april 2004 - 21:52 #1
$query = "UPDATE tabelnavn set sprog = '" . $sprog . "' WHERE ip = '127.0.0.1'";
Avatar billede spiritusanta Nybegynder
08. april 2004 - 21:56 #2
hmm er lidt nybegynder til php.
hvordan kan jeg nu bruge min if/else sætning?
Avatar billede riversen Nybegynder
08. april 2004 - 21:58 #3
glemte jeg lige

$query = "SELECT * from sprog WHERE ip = '" . $ip . "'";
$result = mysql_query( $query );
$data = mysql_fetch_array( $result );

if( mysql_affected_rows() > 0 )
  updateforspøgslen
else
  det du har lavet
Avatar billede spiritusanta Nybegynder
08. april 2004 - 22:16 #4
virker ikke :(
Den opretter stadig bare en ny post for hver gang man klikker på sproget.
Efter jeg har sat tjeksætningerne echo ind under if/else ser jeg den kommer til else.

Men kan da lige vise hele min kode.

<html>
<head>
</head>
<body>

<?
  $db=mysql_connect('localhost','der','der');
  mysql_select_db('bjerrumsoft',$db);

  $query = "SELECT * from sprog WHERE ip = '" . $ip . "'";
  $result = mysql_query( $query );
  $data = mysql_fetch_array( $result );

if($sprog)
  {
    $ip = $_SERVER['REMOTE_ADDR'];

    if( mysql_affected_rows() > 0 )
    {
      echo "if";
      $query = "UPDATE sprog set sprog = '" . $sprog . "' WHERE ip = '$ip'";
    }
    else
    {
      echo "else";
      mysql_query("insert into sprog (sprog,ip) values ('$sprog','$ip')");
    }
  }
?>

<center>
<table border='1' width='200'>
  <tr>
    <td colspan='2'>

    </td>
  </tr>
  <tr>
    <td>
      <a href='sprog.php?sprog=dansk'>Dansk</a>
    </td>
    <td>
      <a href='sprog.php?sprog=engelsk'>English</a>
    </td>
  </tr>
</table>
</center>
</body>
</html>
Avatar billede riversen Nybegynder
08. april 2004 - 22:19 #5
mysql_num_rows istedet for mysql_affected_rows
Avatar billede spiritusanta Nybegynder
08. april 2004 - 22:23 #6
Det var den ikke glad for :(

Warning: Wrong parameter count for mysql_num_rows() in /web/www/frac/users/bjerrumsoft/tests/sprog.php on line 18
else
Avatar billede riversen Nybegynder
08. april 2004 - 22:25 #7
ah, du skal give $result med som paramter
Avatar billede spiritusanta Nybegynder
08. april 2004 - 22:27 #8
som sagt er jeg helt ny til php, så hvor skal jeg angive denne parameter?

<?
  $db=mysql_connect('localhost','bjerrumsoft','snudebillen');
  mysql_select_db('bjerrumsoft',$db);

  $query = "SELECT * from sprog WHERE ip = '" . $ip . "'";
  $result = mysql_query( $query );
  $data = mysql_fetch_array( $result );

if($sprog)
  {
    $ip = $_SERVER['REMOTE_ADDR'];

    if( mysql_num_rows() > 0 )
    {
      echo "if";
      $query = "UPDATE sprog set sprog = '" . $sprog . "' WHERE ip = '$ip'";
    }
    else
    {
      echo "else";
      mysql_query("insert into sprog (sprog,ip) values ('$sprog','$ip')");
    }
  }
Avatar billede riversen Nybegynder
08. april 2004 - 22:30 #9
mysql_num_rows( $result )... sådan
Avatar billede spiritusanta Nybegynder
08. april 2004 - 22:35 #10
Jeg er ked af at sige det, men virker stadig ikke efter hensigten, der bliver stadig bare oprettet en ny post for hver gang linket bliver trykket :(

<?
  $db=mysql_connect('localhost','bjerrumsoft','snabelsnude');
  mysql_select_db('bjerrumsoft',$db);

  $query = "SELECT * from sprog WHERE ip = '" . $ip . "'";
  $result = mysql_query( $query );
  $data = mysql_fetch_array( $result );

if($sprog)
  {
    $ip = $_SERVER['REMOTE_ADDR'];

    if( mysql_num_rows( $result ) > 0 )
    {
      echo "if";
      $query = "UPDATE sprog set sprog = '" . $sprog . "' WHERE ip = '$ip'";
    }
    else
    {
      echo "else";
      mysql_query("insert into sprog (sprog,ip) values ('$sprog','$ip')");
    }
Avatar billede spiritusanta Nybegynder
08. april 2004 - 22:36 #11
men kan se via sætningen echo "else";, at den går direkte ned og udskriver else.
Avatar billede klamse Nybegynder
08. april 2004 - 22:36 #12
er lige med på et lytter :)
Avatar billede riversen Nybegynder
08. april 2004 - 22:45 #13
måske den første select ikke er korrekt...
Avatar billede spiritusanta Nybegynder
08. april 2004 - 22:47 #14
hehe ja men hvad gør man så :)
Avatar billede riversen Nybegynder
08. april 2004 - 22:50 #15
du har vel erstattet 127.0.0.1 med det rigtige
Avatar billede spiritusanta Nybegynder
08. april 2004 - 22:52 #16
tjaa det har jeg vel, har erstattet med følgende
WHERE ip = '127.0.0.1'
med
WHERE ip = '$ip'

som fremgår her
$query = "UPDATE sprog set sprog = '" . $sprog . "' WHERE ip = '$ip'";
Avatar billede riversen Nybegynder
08. april 2004 - 22:55 #17
det skulle da gerne fremgå i select og ikke i update query
Avatar billede riversen Nybegynder
08. april 2004 - 22:56 #18
doooh... jeg er træt
Avatar billede riversen Nybegynder
08. april 2004 - 22:57 #19
men mit bu der der må været noget galt med select forespørgslen... jeg vil foreslå du prøver at køre den i phpmyadmin eller lignende.
Avatar billede spiritusanta Nybegynder
09. april 2004 - 01:09 #20
Har selv fået banket en kode sammen, der virker :D

<html>
<head>
</head>
<body>

<?
  $db=mysql_connect('localhost','bjerrumsoft','snabelkat');
  mysql_select_db('bjerrumsoft',$db);

if($sprog)
  {
    $ip = $_SERVER['REMOTE_ADDR'];

    $query = mysql_query("select ip from sprog where ip='$ip'");
    $antal = mysql_num_rows($query);

    if($antal == 1)
    {
      mysql_query("update sprog set sprog = '$sprog' where ip='$ip'");
    }
    else
    {
      mysql_query("insert into sprog (sprog,ip) values ('$sprog','$ip')");
    }
  }
?>

<center>
<table border='1' width='200'>
  <tr>
    <td colspan='2'>

    </td>
  </tr>
  <tr>
    <td>
      <a href='sprog.php?sprog=dansk'>Dansk</a>
    </td>
    <td>
      <a href='sprog.php?sprog=engelsk'>English</a>
    </td>
  </tr>
</table>
</center>
</body>
</html>
Avatar billede riversen Nybegynder
09. april 2004 - 07:51 #21
det lyder nu underligt... jf. eksemplet på http://dk.php.net/manual/en/function.mysql-num-rows.php... but if you say so
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