Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα σας,

Έχω μία βάση δεδομένων σε mysql και μέσα έχω φτιάξει έναν πίνακα που κρατάω ip και ώρα. Τον πίνακα αυτόν δεν τον εμφανίζω κάπου ούτε τον επεξεργάζομαι.. Θα ήθελα αν είναι εύκολο να μου πείτε έναν τρόπο να διαγράφονται μερικές από τις εγγραφές του πίνακα αυτόματα όταν περάσουν για π.χ. 30 μέρες..

Δημοσ.

έφτιαξα έναν πίνακα που εμφανίζω τις τιμές των ip και θα ήθελα να διαγράφω (αυτές που είναι άνω του ενός μήνα ) όταν φορτώνει ο πίνακας. Για να δείτε:

>
$ipaddress = $_SERVER["REMOTE_ADDR"];
$sql = "INSERT INTO ipaddress(ip) VALUES( '$ipaddress' )";


$query = mysql_query("SELECT * FROM ipaddress");
    WHILE($rows = mysql_fetch_array($query)):
   
	    $ip = $rows['ip'];
	    $date = $rows['date'];
   
  
    echo "$ip<br>$date<br><br><br>";

    endwhile;

$sql = "DELETE FROM ipaddress where date < NOW()";

 

Το πρόβλημά μου είναι μόνο τι θα βάλω στο ερώτημα:

$sql = "DELETE FROM ipaddress where date

 

Είδα αυτό που μου έστειλες αλλά δεν έβγαλα άκρη..

όποιος μπορεί να μου πεί πώς συντάσσετε το ερώτημα αυτό στην βάση δεδομένων..

Δημοσ.

Το μόνο σου θέμα είναι πώς να πεις "Ν μέρες πριν" εκεί που αυτή τη στιγμή λες "τώρα". Δεν είναι και πολύ δύσκολο να το κάνεις google.

 

Συγκεκριμένα:

 

>    where `date` < DATE_ADD(NOW(), INTERVAL -30 DAY)

Δημοσ.

Το μόνο σου θέμα είναι πώς να πεις "Ν μέρες πριν" εκεί που αυτή τη στιγμή λες "τώρα". Δεν είναι και πολύ δύσκολο να το κάνεις google.

 

Συγκεκριμένα:

 

> where `date` < DATE_ADD(NOW(), INTERVAL -30 DAY)

 

To έχω ψάξει αρκετή ώρα αλλά δεν μπορώ να βρω μία function που να κάνει αφαίρεση για π.χ. στην date.. Βασικά, το κάνω αλλά δεν λειτουργεί!

Για παράδειγμα εδώ λέει πως εκτελείτε ένα τέτοιο ερώτημα αλλά δυστυχώς δεν λειτουργεί..

Δημοσ.

To έχω ψάξει αρκετή ώρα αλλά δεν μπορώ να βρω μία function που να κάνει αφαίρεση για π.χ. στην date.. Βασικά, το κάνω αλλά δεν λειτουργεί!

 

Δεν καταλαβαίνω τι εννοείς ότι κάνεις (και λογικό αφού δεν το ξεκαθαρίζεις). Το μόνο σίγουρο είναι ότι αυτό που έγραψα και που είδες και μόνος σου, λειτουργεί.

 

Αν έχεις πρόβλημα πάει να πει πως κάνεις κάτι διαφορετικό απ' αυτό που λέμε.

Δημοσ.

Δεν καταλαβαίνω τι εννοείς ότι κάνεις (και λογικό αφού δεν το ξεκαθαρίζεις). Το μόνο σίγουρο είναι ότι αυτό που έγραψα και που είδες και μόνος σου, λειτουργεί.

 

Αν έχεις πρόβλημα πάει να πει πως κάνεις κάτι διαφορετικό απ' αυτό που λέμε.

Έχω μία βάση δεδομένων σε mysql και μέσα έχω φτιάξει έναν πίνακα που κρατάω ip και ώρα (δυο κολόνες). Θα ήθελα να διαγράφονται μερικές από τις εγγραφές του πίνακα αυτόματα όταν περάσουν για π.χ. 30 μέρες..Απο κάτω έχω τον κώδικα πώς ακριβώς αποθηκεύω στον πίνακα αλλά και πώς διαγράφω..

Το θέμα είναι ότι όταν χρησιμοποιώ αυτό το query

$sql ="DELETE FROM ipaddress where date < DATE_ADD(NOW(), INTERVAL -30 DAY)";

δεν αποθηκεύει καθόλου στον πίνακα..

 

Όταν χρησιμοποιώ αυτό

$sql ="DELETE FROM ipaddress where date > DATE_ADD(NOW(), INTERVAL -30 DAY)";

διαγράφει όλες τις εγγραφές του..

 

Μήπως κάνω κάποιο άλλο λάθος στον κώδικα;

 

 

>
<?php {
$ipaddress1 = $_SERVER["REMOTE_ADDR"];
echo "<h3><P style='color:#ee0000'> μπλαμπλα!</p></h3>
<b>μπλαμπλα:</br>
Your IP Address= $ipaddress1</b>"; } ?>


<div style="display:none; visibility:hidden;">
<?php if (!isAdmin()){

$ipaddress = $_SERVER["REMOTE_ADDR"];

$sql = "INSERT INTO ipaddress(ip) VALUES( '$ipaddress' )";





$query = mysql_query("SELECT * FROM ipaddress");
	WHILE($rows = mysql_fetch_array($query)):

		$ip = $rows['ip'];
		$date = $rows['date'];


	echo "$ip<br>$date<br><br><br>";

	endwhile;

$sql ="DELETE FROM ipaddress where date < DATE_ADD(NOW(), INTERVAL -30 DAY)";


if(!mysql_query($sql))
die("ERROR: " .mysql_error());}

?></div>

Δημοσ.

Δεν μας λες τι τύπου είναι η στήλη date και ούτε πώς ακριβώς παίρνει τιμές (προφανώς έχει κάποιου είδους default αλλά ποιό?). Δε νομίζεις ότι η πληροφορία αυτή είναι σημαντική και σχετική με το πρόβλημά σου;

Δημοσ.

Δεν μας λες τι τύπου είναι η στήλη date και ούτε πώς ακριβώς παίρνει τιμές (προφανώς έχει κάποιου είδους default αλλά ποιό?). Δε νομίζεις ότι η πληροφορία αυτή είναι σημαντική και σχετική με το πρόβλημά σου;

Έτσι είναι ο πίνακας της βάσης δεδομένων μου..

 

>
CREATE TABLE `ipaddress` (
 `ip` char(250) default NULL,
 `date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

Πιστεύεις οτι είναι στην βάση το πρόβλημα;

Δημοσ.

Τρέχοντας στον πίνακα που έδωσες το ερώτημα που εχεις

 

DELETE FROM ipaddress where date < DATE_ADD(NOW(), INTERVAL -30 DAY)

 

δούλεψε κανονικά σε μένα, αφαιρώντας μόνο τις σωστές εγγραφες.

Δημοσ.

Τρέχοντας στον πίνακα που έδωσες το ερώτημα που εχεις

 

 

 

δούλεψε κανονικά σε μένα, αφαιρώντας μόνο τις σωστές εγγραφες.

 

Εντάξει, το πρόβλημα λύθηκε.. Το λάθος ήταν συντακτικό γιατί έκανα include ένα αρχείο που είχε query με το ίδιο όνομα...Ευχαριστώ πολύ για την βοήθειά σας..

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...