Bijwerken mislukt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
include_once("config.php");
include_once("connect.php");
//=== check ip in db ===//
$sql = "SELECT * FROM login WHERE id='".$_SESSION['user_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_row($query);
$exip = htmlspecialchars($row->ip);
$teller = htmlspecialchars($row->tel);
if($exip =' ')
{
//=== nieuwe ip invoeren ===//
$teller = '1';
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO login (ip,tel) VALUES ('".$ip."', '".$teller."')";
mysql_query($sql);
}
else
{
//=== bestaande ip bijwerken ===//
$teller ++;
$sql = "UPDATE login SET tel = `".$teller."`, ip = `".$ip."` WHERE id=`".$_SESSION['user_id']."`";
mysql_query($sql);
}
?>
include_once("config.php");
include_once("connect.php");
//=== check ip in db ===//
$sql = "SELECT * FROM login WHERE id='".$_SESSION['user_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_row($query);
$exip = htmlspecialchars($row->ip);
$teller = htmlspecialchars($row->tel);
if($exip =' ')
{
//=== nieuwe ip invoeren ===//
$teller = '1';
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO login (ip,tel) VALUES ('".$ip."', '".$teller."')";
mysql_query($sql);
}
else
{
//=== bestaande ip bijwerken ===//
$teller ++;
$sql = "UPDATE login SET tel = `".$teller."`, ip = `".$ip."` WHERE id=`".$_SESSION['user_id']."`";
mysql_query($sql);
}
?>
Nu is het probleem echter dat hij niets bijwerkt. Het inlogscript werkt met $_session, daarom heb ik die hier ook gebruikt. Ik wil namelijk alleen de gegevens van de mensen die hebben ingelogd. Zelf heb ik het idee dat het daarmee juist fout gaat, maar ik weet niet hoe ik het anders moet oplossen. Wie kan mij helpen?
NB: als ik if($exip= ' ') verander in if($exip ==' '), dan schrijft hij elke keer een nieuwe gebuiker in de tabel zonder verdere waarden :s ??
Ik denk dat je bedoelt if($exip = '') (als die leeg is)
$sql = "UPDATE login SET tel = `".$teller."`, ip = `".$ip."` WHERE id=`".$_SESSION['user_id']."`";
$ip declareer je alleen in de if() en niet in de else()
Ook kan je best zonder de backticks (`).
Waarom controleer je eigenlijk of het ip een spatie is?
Hmm.. ik neem aan dat de teller een INT is? Waarom zouden er dan vage tekens in staan? (htmlspecialchars)
Ook de * in je SELECT query is niet zo handig. Alle kolommen apart noemen is veel sneller.
Volgens mij kan je in de UPDATE ook gewoon:
doen, maar dat weet ik niet zeker.
Kan nog wel even doorgaan (a)
Edit:
Maar dat is heb ik ook bij m'n eigen scripts :P
Maar dat is heb ik ook bij m'n eigen scripts :P
Gewijzigd op 01/01/1970 01:00:00 door Mark L
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
mysql_query(sprintf("
INSERT
INTO login (ip, tel)
VALUES ('%s', 1)
ON DUPLICATE KEY UPDATE
tel = tel + 1",
$_SERVER['REMOTE_ADDR']));
?>
mysql_query(sprintf("
INSERT
INTO login (ip, tel)
VALUES ('%s', 1)
ON DUPLICATE KEY UPDATE
tel = tel + 1",
$_SERVER['REMOTE_ADDR']));
?>
Enige wat nodig is is een unique index op de kolom 'ip'.
Ik snap er niets meer van.
Ik heb het ietwat aangepast;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
include_once("config.php");
include_once("connect.php");
//=== check ip in db ===//
$sql = "SELECT ip,tel FROM login WHERE id='".$_SESSION['user_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_row($query);
$exip = ($row->ip);
$teller = htmlspecialchars($row->tel);
if($exip ='')
{
//=== nieuwe ip invoeren ===//
$teller = '1';
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO login (ip,tel) VALUES ('".$ip."', '".$teller."')";
mysql_query($sql);
}
else
{
//=== bestaande ip bijwerken ===//
$ip = $_SERVER['REMOTE_ADDR'];
$teller ++;
$sql = "UPDATE login SET tel = `".$teller."`, ip = `".$ip."` WHERE id=`".$_SESSION['user_id']."`";
mysql_query($sql);
}
?>
include_once("config.php");
include_once("connect.php");
//=== check ip in db ===//
$sql = "SELECT ip,tel FROM login WHERE id='".$_SESSION['user_id']."'";
$query = mysql_query($sql);
$row = mysql_fetch_row($query);
$exip = ($row->ip);
$teller = htmlspecialchars($row->tel);
if($exip ='')
{
//=== nieuwe ip invoeren ===//
$teller = '1';
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO login (ip,tel) VALUES ('".$ip."', '".$teller."')";
mysql_query($sql);
}
else
{
//=== bestaande ip bijwerken ===//
$ip = $_SERVER['REMOTE_ADDR'];
$teller ++;
$sql = "UPDATE login SET tel = `".$teller."`, ip = `".$ip."` WHERE id=`".$_SESSION['user_id']."`";
mysql_query($sql);
}
?>
edit: correctie op $exip; hij maakt een user_id bij zonder waarden in de overige velden en geeft de info niet bij een echo, maar schrijft ze wel bij in de db-> de teller zet ie op 1 en het ip wordt netjes geregistreerd......maar niet bij de user die dan heeft ingelogd.
ter verduidelijking: www.ehbo-stabiel.nl/tabel/tabel.JPG
Gewijzigd op 01/01/1970 01:00:00 door Arno