Automatisch script export en import

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mischa Diender

Mischa Diender

19/05/2011 21:17:23
Quote Anchor link
Hallo,

Ik ben op zoek naar een geautomatiseerd script die dagelijks:

-in een sql database een getal opzoekt dat hoort bij een bepaald item nummer
-dit exporteert naar een andere sql database
-datum van vandaag toevoegt

Het doel is om een historie op te bouwen van het aantal hits per item

Voorbeeld:

SQL bron per 01-05-2011

'item' 1 'hits' 6
'item' 2 'hits' 9
'item' 3 'hits' 4

etc.

Na enkele dagen script

SQL nieuw

'item' 1 'datum' 01-05-2011 'hits' 6
'datum' 02-05-2011 'hits' 8
'datum' 03-05-2011 'hits' 11
'item' 2 'datum' 01-05-2011 'hits' 9
'datum' 02-05-2011 'hits' 11
'datum' 03-05-2011 'hits' 15
'item' 3 'datum' 01-05-2011 'hits' 4
'datum' 02-05-2011 'hits' 7
'datum' 03-05-2011 'hits' 10

Kan iemand mij op weg helpen?
 
PHP hulp

PHP hulp

20/05/2024 17:08:16
 
Dennis meijer

dennis meijer

19/05/2011 23:29:52
Quote Anchor link
Ik denk dat je niet in de juiste topic zit maar kan het mis hebben.

Wat heb je zelf al?
 
Mischa Diender

Mischa Diender

20/05/2011 05:54:59
Quote Anchor link
Ik heb nog niets... Ik kan PHP scripts aanpassen (met veel trial and error) maar ik kan zelf geen script schrijven. Ik hoop daarom dat iemand mij op weg kan helpen of de juiste kant op kan sturen.
 
Dave L

Dave L

20/05/2011 10:21:18
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
<?
//connectie met datbase maken en database selecteren
//hierna een begin

$sql = "SELECT * FROM tabel_naam WHERE item = $item";

$item = mysql_fetch_object(mysql_query(sql));

if($res) {
//query geslaagd, doe iets
}else{
//query mislukt...melding...
mysql_error();
}

//je hebt nu de hele database rij met corresponderend item gevangen in het object $item.

//connect met andere database


$datum = date("d-m-Y"); //datum van huidige dag:
$sql = "INSERT INTO item_hits (item,hits,datum) VALUES('$item->item','$item->hits','$datum')";

$res = mysql_query($sql);
if($res) {
//query geslaagd, doe iets
}else{
//query mislukt...melding...
mysql_error();
}

?>

Zet je script in een cronjob op je server. Deze kun je instellen op welke tijden/datums het script uitgevoerd moet worden, zodat het automatisch gaat...

Kunnen wat foutjes in zitten uiteraard. Maar deze kant op moet je denken.

Misschien zijn er mensen gewilligd je hier wat verder mee te helpen. Tot zover mijn bijdrage.

Wijziging:
zorg dat de tabel met datums bij de hits een 'id'-kolom krijgt en zet deze op auto_increment, zodat bij iedere query draai er automatisch een nieuwe nummer aan wordt gegeven.

Met wat google werk en beetje plaren moet je dit wel lukken. Zo zijn er velen begonnen denk ik zo. (me ;) )
Gewijzigd op 20/05/2011 10:25:53 door Dave L
 
Gerhard l

gerhard l

20/05/2011 10:30:15
Quote Anchor link
@Dave je volgorde klopt maar je script lang niet.

lijn 4 geen * geef aan wat je wil gebruiken, variable escapen
lijn 19 gebruik je weer $sql lijkt me beter als je daar een aparte variable voor neemt.
lijn 18 mysql heeft eigen date functie
lijn 19 geen backticks in je query variablen weer escapen , sql injectie
 
Dave L

Dave L

20/05/2011 10:40:38
Quote Anchor link
Gerhard l op 20/05/2011 10:30:15:
@Dave je volgorde klopt maar je script lang niet.


Dat klopt. Meneer moet het zelf ook uitwerken. ga niet alles voorkauwen.

mysql_real_escape_string en variabelen niet op deze manier hergebruiken snapt hij nu dus ook via jouw opmerking.

Bedankt voor je toevoeging. Dit is ook niet mijn werkwijze, maar een 'snel-op-weg-help' iets. De bedoeling is duidelijk toch ? daar ging het mij om...
 
John D

John D

20/05/2011 10:46:26
Quote Anchor link
van de ene naar de andere database is op zich ook een extra complicatie tenzij dit dezelfde MySQL instantie is. In alle andere gevallen moet je ook toestemming en rechten hebben om over een netwerk of internet een andere MySQL te benaderen. Probeer eerst het script uit te werken voor dezelfde MySQL instantie.
 
PHP Scripter

PHP Scripter

20/05/2011 13:09:18
Quote Anchor link
John D, ik denk dat hij een andere tabel bedoeld binnen de database.
 
Mischa Diender

Mischa Diender

20/05/2011 13:15:12
Quote Anchor link
Alvast bedankt voor alle reacties. Zoals gezegd: ik ben blij met alle info. Het is overigens de bedoeling dat dit alles binnen dezelfde SQL instantie plaats vindt. Het moet gewoon een nieuwe database worden gevuld met enkele data van de bron-database.
 
PHP Scripter

PHP Scripter

20/05/2011 13:28:50
Quote Anchor link
Even snel in elkaar gezet. Zelf verder uitbreiden of aanpassen ;-)

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
# We gaan even een verbinding maken
$dbConnect["hostname"] = "localhost";
$dbConnect["username"] = "";
$dbConnect["password"] = "";
$dbConnect["database"] = "";

$dbLink = new mysqli($dbConnect["hostname"],$dbConnect["username"],$dbConnect["password"],$dbConnect["database"]);

# En als het niet klopt, dan gaan we gewoon lekker via de exit weg.
if(mysqli_connect_errno())
{

    trigger_error('Fout bij verbinding: '.$mysqli->error);
}

else
{
    # We gaan de query aanmaken met die onzin die daar bijhoort
    $dbSql = "SELECT item,hits FROM tabel_naam WHERE item = '" . mysqli_real_escape_string($dbLink, $item) . "'";
    $dbResult  = $dbLink->query($dbSql);
    $dbNumRows = $dbResult->num_rows;
    
    # Even kijken of het gelukt is.
    if ($dbNumRows == true)
    {

        # Dan gaan we nu de query maken voor die andere database.
        $sql = "INSERT INTO item_hits (item,hits,datum) VALUES(
                '"
. mysqli_real_escape_string($dbLink, $dbRow->item) . "',
                '"
. mysqli_real_escape_string($dbLink, $dbRow->hits) . "',
                DATENOW())"
;
        $dbResult  = $dbLink->query($dbSql);
        $dbNumRows = $dbResult->num_rows;
        
        if ($dbNumRows == true)
        {

            echo 'Yes! We kunnen gaan.';
        }

        else
        {
            echo 'Help! Het werkt niet. (2)';
        }
    }

    else
    {
        echo 'Help! Het werkt niet. (1)';
    }
}

?>
Gewijzigd op 20/05/2011 13:30:21 door PHP Scripter
 
Gerhard l

gerhard l

20/05/2011 13:37:04
Quote Anchor link
offtopic: kan een num_row true teruggeven?
 
Chris -

Chris -

20/05/2011 13:44:33
Quote Anchor link
is altijd een aantal gerhard.. number_of_rows?
 
PHP Scripter

PHP Scripter

20/05/2011 13:45:24
Quote Anchor link
Gerhard, ja tuurlijk. Maar als ik het gebruik bij LIMIT 0,1 o.i.d. dan heb ik ook altijd

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if ($dbNumRows == 1)
?>
 
Gerhard l

gerhard l

20/05/2011 13:45:44
Quote Anchor link
jaa daarom vraag ik mij ook af of:
if ($dbNumRows == true)
wel gaat werken..
 
Chris -

Chris -

20/05/2011 13:46:58
Quote Anchor link
ja, dat werkt :-)

Tenzij er geen rows zitten ;-)
 
Gerhard l

gerhard l

20/05/2011 13:48:15
Quote Anchor link
O dus alleen als hij 0 rijen teruggeeft, zal hij een false geven.
 
PHP Scripter

PHP Scripter

20/05/2011 13:52:39
Quote Anchor link
Je hebt hem door! :)
 
Mischa Diender

Mischa Diender

21/05/2011 06:47:37
Quote Anchor link
Ik heb de van toepassing zijnde zaken ingevuld. Helaas blijft hij steken bij de eerste foutmelding 'Help! Het werkt niet (1). Dit heb ik ingevuld:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
# We gaan even een verbinding maken
$dbConnect["hostname"] = "localhost";
$dbConnect["username"] = "root";
$dbConnect["password"] = "root";
$dbConnect["database"] = "mb";

$dbLink = new mysqli($dbConnect["hostname"],$dbConnect["username"],$dbConnect["password"],$dbConnect["database"]);

# En als het niet klopt, dan gaan we gewoon lekker via de exit weg.
if(mysqli_connect_errno())
{

    trigger_error('Fout bij verbinding: '.$mysqli->error);
}

else
{
    # We gaan de query aanmaken met die onzin die daar bijhoort
    $dbSql = "SELECT unit_num,hits FROM jos_ezrealty WHERE item = '" . mysqli_real_escape_string($dbLink, $item) . "'";
    $dbResult  = $dbLink->query($dbSql);
    $dbNumRows = $dbResult->num_rows;
    
    # Even kijken of het gelukt is.
    if ($dbNumRows == true)
    {

        # Dan gaan we nu de query maken voor die andere database.
        $sql = "INSERT INTO statistieken (unit_num,hits,datum) VALUES(
                '"
. mysqli_real_escape_string($dbLink, $dbRow->item) . "',
                '"
. mysqli_real_escape_string($dbLink, $dbRow->hits) . "',
                DATENOW())"
;
        $dbResult  = $dbLink->query($dbSql);
        $dbNumRows = $dbResult->num_rows;
        
        if ($dbNumRows == true)
        {

            echo 'Yes! We kunnen gaan.';
        }

        else
        {
            echo 'Help! Het werkt niet. (2)';
        }
    }

    else
    {
        echo 'Help! Het werkt niet. (1)';
    }
}

?>
 



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.