ikaros32 Δημοσ. 7 Δεκεμβρίου 2012 Δημοσ. 7 Δεκεμβρίου 2012 Καλησπέρα σας, Έχω μία βάση δεδομένων σε mysql και μέσα έχω φτιάξει έναν πίνακα που κρατάω ip και ώρα. Τον πίνακα αυτόν δεν τον εμφανίζω κάπου ούτε τον επεξεργάζομαι.. Θα ήθελα αν είναι εύκολο να μου πείτε έναν τρόπο να διαγράφονται μερικές από τις εγγραφές του πίνακα αυτόματα όταν περάσουν για π.χ. 30 μέρες..
ikaros32 Δημοσ. 7 Δεκεμβρίου 2012 Μέλος Δημοσ. 7 Δεκεμβρίου 2012 Site: Cron'>http://en.wikipedia..../Cron']Cron job έφτιαξα έναν πίνακα που εμφανίζω τις τιμές των 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 Είδα αυτό που μου έστειλες αλλά δεν έβγαλα άκρη.. όποιος μπορεί να μου πεί πώς συντάσσετε το ερώτημα αυτό στην βάση δεδομένων..
defacer Δημοσ. 7 Δεκεμβρίου 2012 Δημοσ. 7 Δεκεμβρίου 2012 Το μόνο σου θέμα είναι πώς να πεις "Ν μέρες πριν" εκεί που αυτή τη στιγμή λες "τώρα". Δεν είναι και πολύ δύσκολο να το κάνεις google. Συγκεκριμένα: > where `date` < DATE_ADD(NOW(), INTERVAL -30 DAY)
ikaros32 Δημοσ. 7 Δεκεμβρίου 2012 Μέλος Δημοσ. 7 Δεκεμβρίου 2012 Το μόνο σου θέμα είναι πώς να πεις "Ν μέρες πριν" εκεί που αυτή τη στιγμή λες "τώρα". Δεν είναι και πολύ δύσκολο να το κάνεις google. Συγκεκριμένα: > where `date` < DATE_ADD(NOW(), INTERVAL -30 DAY) To έχω ψάξει αρκετή ώρα αλλά δεν μπορώ να βρω μία function που να κάνει αφαίρεση για π.χ. στην date.. Βασικά, το κάνω αλλά δεν λειτουργεί! Για παράδειγμα εδώ λέει πως εκτελείτε ένα τέτοιο ερώτημα αλλά δυστυχώς δεν λειτουργεί..
defacer Δημοσ. 7 Δεκεμβρίου 2012 Δημοσ. 7 Δεκεμβρίου 2012 To έχω ψάξει αρκετή ώρα αλλά δεν μπορώ να βρω μία function που να κάνει αφαίρεση για π.χ. στην date.. Βασικά, το κάνω αλλά δεν λειτουργεί! Δεν καταλαβαίνω τι εννοείς ότι κάνεις (και λογικό αφού δεν το ξεκαθαρίζεις). Το μόνο σίγουρο είναι ότι αυτό που έγραψα και που είδες και μόνος σου, λειτουργεί. Αν έχεις πρόβλημα πάει να πει πως κάνεις κάτι διαφορετικό απ' αυτό που λέμε.
ikaros32 Δημοσ. 7 Δεκεμβρίου 2012 Μέλος Δημοσ. 7 Δεκεμβρίου 2012 Δεν καταλαβαίνω τι εννοείς ότι κάνεις (και λογικό αφού δεν το ξεκαθαρίζεις). Το μόνο σίγουρο είναι ότι αυτό που έγραψα και που είδες και μόνος σου, λειτουργεί. Αν έχεις πρόβλημα πάει να πει πως κάνεις κάτι διαφορετικό απ' αυτό που λέμε. Έχω μία βάση δεδομένων σε 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>
defacer Δημοσ. 7 Δεκεμβρίου 2012 Δημοσ. 7 Δεκεμβρίου 2012 Δεν μας λες τι τύπου είναι η στήλη date και ούτε πώς ακριβώς παίρνει τιμές (προφανώς έχει κάποιου είδους default αλλά ποιό?). Δε νομίζεις ότι η πληροφορία αυτή είναι σημαντική και σχετική με το πρόβλημά σου;
ikaros32 Δημοσ. 7 Δεκεμβρίου 2012 Μέλος Δημοσ. 7 Δεκεμβρίου 2012 Δεν μας λες τι τύπου είναι η στήλη 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; Πιστεύεις οτι είναι στην βάση το πρόβλημα;
bnvdarklord Δημοσ. 7 Δεκεμβρίου 2012 Δημοσ. 7 Δεκεμβρίου 2012 Τρέχοντας στον πίνακα που έδωσες το ερώτημα που εχεις DELETE FROM ipaddress where date < DATE_ADD(NOW(), INTERVAL -30 DAY) δούλεψε κανονικά σε μένα, αφαιρώντας μόνο τις σωστές εγγραφες.
ikaros32 Δημοσ. 7 Δεκεμβρίου 2012 Μέλος Δημοσ. 7 Δεκεμβρίου 2012 Τρέχοντας στον πίνακα που έδωσες το ερώτημα που εχεις δούλεψε κανονικά σε μένα, αφαιρώντας μόνο τις σωστές εγγραφες. Εντάξει, το πρόβλημα λύθηκε.. Το λάθος ήταν συντακτικό γιατί έκανα include ένα αρχείο που είχε query με το ίδιο όνομα...Ευχαριστώ πολύ για την βοήθειά σας..
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα