ben beetje aan het testen met databases.
Maar het standaardbegin lukt me nog niet echt.
Ik ben bijvoorbeeld begonne met een scriptje te schrijven waardoor het ip van de bezoeker van een pagina wordt gepost in de database.
Hou niet teveel rekening met veiligheid en dergelijke. Ik ben voorlopig al blij wanneer het ip wordt gepost.
Dit is wat ik heb geschreven:
<?php
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','youwish');
define('SQL_DB','naamdb');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if (isset($_GET['$REMOTE_ADDR'])) {
$ip = $REMOTE_ADDR;
$query = "INSERT INTO mobystats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
?>
tabel stats heeft twee velden:
id (primary key int auto increment)
ip (text not null)
<?php
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','youwish');
define('SQL_DB','naamdb');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
$ip = $_SERVER['REMOTE_ADDR'];
$query = "INSERT INTO mobystats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
?>
Klopt. Het enige dat er vreemd aan was, was dat je er in je script van uit ging dat je het ip adres uit de GET variabele kon krijgen, terwijl hij gewoon rechtstreeks op te vragen is.
ip (text not null)
Daar kan heel wat in en een ip nummer inclusief puntjes is nooit groter dan 15 characters dus een varchar(15) is groot genoeg.
veiligheid
Ik heb er respect voor dat je daar nog niet te veel aandacht aan besteedt, maar ga je daar in de toekomst wél mee bezighouden, er zijn namelijk genoeg (censuur) die graag je database om zeep helpen.
ok, ik krijg de gegevens nu al in mijn database. Nu zou ik ze er ook graag terug uitkrijgen.
Dit is wat ik heb geschreven:
<?php
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER',blabla');
define('SQL_PASS','blabla');
define('SQL_DB',blabla');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if ($ip = $_SERVER['REMOTE_ADDR']){
$query = "INSERT INTO stats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
else {
$query = "SELECT * FROM stats ORDER BY id DESC";
$result = mysql_query($query) or die("Failed");
if (mysql_num_rows($result) == 0) {
echo"Database is empty";
}
else {
echo '.$result';
}
}
?>
Bedoeling is dus dat de opgeslagen ipadressen uit de database worden gehaald en in kolomvorm worden weergegeven. Momenteel wordt er niets weergegeven en ik snap niet echt waarom niet. Om ze in kolomvorm weer te geven, hoe moet ik dat juist aanpakken? Iets in de aard van: for(i=0; i<$id; i++){...?
sorry voor het late antwoord, maar het extra } lost niets op. Het klopt wel dat het er moet staan, maar dat lost het probleem blijkbaar niet op.
Ik krijg volgende error:
Parse error: syntax error, unexpected $end in /home/mobyhost/public_html/mobystatsss.php on line 52
dit is het script dat ik draai:
<?php
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','blabla');
define('SQL_DB','blabla');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if ($ip = $_SERVER['REMOTE_ADDR']){
$query = "INSERT INTO stats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
else {
$query = "SELECT * FROM stats ORDER BY id DESC";
$result = mysql_query($query) or die("Failed");
if (mysql_num_rows($result) == 0) {
echo"Database is empty";
}
even voor de duidelijkheid:
<?php if ($ip = $_SERVER['REMOTE_ADDR']){ ?>
is altijd waar, je zal dus == moeten gebruiken, maar ik snap niet watje wilt...