probleempje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Arno

Arno

31/12/2008 14:07:00
Quote Anchor link
Klaasjan Boven schreef op 31.12.2008 14:01:
He Arno heb je mijn scriptje geprobeerd. Ik ben namelijk niet voor Jan l.l bezig geweest en je reageert er niet eens op.


Sorry, ik krijg ook zoveel mogelijkheden om uit te proberen.....maar ik heb hem getest, helaas levert het niets op...
 
PHP hulp

PHP hulp

15/03/2025 06:32:04
 
Klaasjan Boven

Klaasjan Boven

31/12/2008 14:11:00
Quote Anchor link
Gewijzigd probeer het nog eens, wel even opnieuw CTRL-C CTRL -V doen
 
Arno

Arno

01/01/2009 12:01:00
Quote Anchor link
Allereerst de beste wensen aan iedereen!!

ontopic:
Hij doet het nu eenmalig, ik snap er helemaal niets meer van . Eerst was het resultaat hetzelfde: geen effect. Toen heb ik iptel.php included, toen schreef hij eenmalig in de db, precies zoals het moet. Maar als ik dan meerdere keren inlog, telt hij het aantal keren niet meer op en lastactive en vorigeactief werkt hij ook niet meer bij...?? Hier is de iptel.php, zou het probleem hierin kunnen zitten? Het heeft wel al die tijd gewerkt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
include_once("config.php");
include_once("lang/lang_".$lang.".php");
include_once("connect.php");
$ip = $_SERVER['REMOTE_ADDR'];

        //===    check ip in db     ===//
        $sql = "SELECT `ip` FROM `".$db_tbl."` WHERE id='".$_SESSION['user_id']."'";
         $query = mysql_query($sql);
         $row = mysql_num_rows($query);
        if($row == 1)
            {

            $sql = "SELECT `tel` FROM `".$db_tbl."` WHERE id='".$_SESSION['user_id']."'";
            $result = mysql_query($sql);
            $tel = mysql_result($result,0);
            $tel =$tel + 1;

            //===    bestaande ip bijwerken    ===//
            $sql_1 = "UPDATE `".$db_tbl."` SET `tel` = '$tel', `ip` = '$ip'  WHERE id='".$_SESSION['user_id']."'";
            mysql_query($sql_1);
            }

        else
            {
            //===    nieuwe ip invoeren    ===//
            $sql = "INSERT INTO `".$db_tbl."` SET `ip` = '$ip',`tel` = '1' ";
            mysql_query($sql);
            }

?>
Gewijzigd op 01/01/1970 01:00:00 door Arno
 
Frank -

Frank -

01/01/2009 12:11:00
Quote Anchor link
De SELECT-query is overbodig, gooi die (samen met bijbehorende php-code) dan ook weg.

Voer een update-query uit en controleer met mysql_affected_rows() of er een record is bijgewerkt. Wanneer dat niet het geval is, voer je de INSERT-query uit.

En uiteraard ga je nooit meer in je database zitten schijten, die vieze backticks ` die een idioot jou heeft aangeleerd, gooi je dan ook uit je SQL. Gebruik die rommel nooit weer, dat is uitsluitend voor sukkels.
 
Jesper Diovo

Jesper Diovo

01/01/2009 12:13:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
30
31
32
33
<?php
include_once("config.php");
include_once("lang/lang_".$lang.".php");
include_once("connect.php");

$ip = $_SERVER['REMOTE_ADDR'];

$siQuery = "SELECT ip FROM ".$db_tbl." WHERE id = ".(int)$_SESSION['user_id']; // ik hoop dat 'id' een INT-veldtype heeft?
$siResult = mysql_query($siQuery);
if($siResult) {
    if(mysql_num_rows($siResult) > 0) {
        $utQuery = "UPDATE ".$db_tbl." SET ip = '".$ip."', tel = tel+1 WHERE id = ".(int)$_SESSION['user_id'];
        $utResult = mysql_query($utQuery);
        
        if($utResult) {
            // goed uitgevoerd
        } else {
            echo mysql_error().' in query: '.$utQuery;
        }
    }
else {
        $iiQuery = "INSERT INTO ".$db_tbl." (ip, tel) VALUES ('".$ip."', '1')";
        $iiResult = mysql_query($iiQuery);
        
        if($iiResult) {
            // goed uitgevoerd
        } else {
            echo mysql_error().' in query: '.$iiQuery;
        }
    }
}
else {
    echo mysql_error().' in query: '.$siQuery;
}

?>


Nou, dat ziet er al een heel stuk beter uit, vind je niet? :-)
 
Noppes

Noppes

01/01/2009 12:20:00
Quote Anchor link
Wat omslachtig!

Ten eerste stap af van Engine="MyIsam" gebruik InnoDB
Ten tweede zorg ervoor dat je id en ip samen de primary key of unique key vormen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql
  = "INSERT INTO <tabel> (id,ip,tel)
            VALUES ("
.$_SESSION['user_id']."
                        ,'"
.$_SERVER['REMOTE_ADDR']."'
                        ,1)
            ON DUPLICATE KEY
            UPDATE tel = tel + 1"
;

if (!$result = mysql_query($sql)) {
    echo mysql_error();
}

?>
 
Frank -

Frank -

01/01/2009 12:22:00
Quote Anchor link
@Noppes: ON DUPLICATE KEY kan problemen opleveren, deze gaat af op iedere willekeurige unique-constraint. Wanneer je er meerdere in 1 tabel hebt staan, en dat is niets bijzonders, kan er een hoop misgaan. Vandaar dat ik het advies gaf om gewoon een update uit te voeren en eventueel een insert. Dat gaat altijd goed.
 
Arno

Arno

03/01/2009 12:56:00
Quote Anchor link
Iedereen hartstikke bedankt voor de hulp. Na vele uren proberen is het me gelukt!
En tja, wat die backticks betreft, die stonden al in het script van Jorik.....
 
Joren de Wit

Joren de Wit

03/01/2009 13:13:00
Quote Anchor link
Arno schreef op 03.01.2009 12:56:
En tja, wat die backticks betreft, die stonden al in het script van Jorik.....
Maar dat is voor jou nog geen reden om ze te laten staan ;-)
 
Arno

Arno

03/01/2009 16:49:00
Quote Anchor link
Nee, dat is waar. Maar ik ben nog maar een beginner en ik wil eerst zeker weten dat zulke veranderingen niet ten koste gaan van de werking, snappie?
Al doende leert men......
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.