| Autor | Správa |
jsakac
 Užívateľ
 Založený: 18.08.2007 Príspevky: 421 Bydlisko: Humenné
 | Zaslal: Po 12.11.07 18:47 |   |
Cawte dufam, ze mi s tym pomozete. Potrebujem taku skript, ktory vymaze vsetky prispevky okrem poslednych pridanych 30.
Dik  |
| |
     |
 |
emer
 Užívateľ
 Založený: 26.12.2006 Príspevky: 3683 Bydlisko: Nitra Vek: 18
 | Zaslal: Po 12.11.07 18:51 |   |
a to chces iba raz premazat alebo ches aby vzdy ostalo iba 30 prispevkov? |
_________________ Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať | |
    |
 |
mondzo
 Užívateľ
 Založený: 09.02.2007 Príspevky: 248
 | Zaslal: Po 12.11.07 20:40 |   |
presne tak, chcelo by to viac info, co za aplikaciu to vytvaras, potom strukturu tabulky... potom myslim budeme schopni ti poradit...
dalo by sa rozmyslat nad delete query s limitom... (urcite by sa dalo pouzit subquery ak to tvoja verzia mysql servra podporuje... ale chcelo by to viac info) |
| |
   |
 |
jsakac
 Užívateľ
 Založený: 18.08.2007 Príspevky: 421 Bydlisko: Humenné
 | Zaslal: Ut 13.11.07 14:01 |   |
tak robim ten chat uz tu spominany, potrebujem aby admin premazaval miestnost pripadne miestnosti - tak aby stale zostalo poslednych 30 pridanych riadkov
alebo najlepsie by bolo aby napr. po 100 riadkoch pridanych sa automaticky odstranily z db
 |
| |
     |
 |
mondzo
 Užívateľ
 Založený: 09.02.2007 Príspevky: 248
 | Zaslal: Ut 13.11.07 14:28 |   |
ok, rychlo ma napada...
ok, tak jednoducho predtym ako vlozis novy riadok, skontroluj s mysql_num_rows kolko riadkov ti vrati tabulka, ak toto cislo bude vacsie ako 100 vymaz vsetky riadky z tabulky a pridaj novy...
| kód: |
$sqlCheck = "SELECT * FROM $nazov_tabulky;";
$resultCheck = mysql_query($sqlCheck) OR die(mysql_error());
$numRowsCheck = mysql_num_rows($resultCheck);
if ($numRowsCheck >= 100)
{
// premaz tabulku
$sqlPremaz = "TRUNCATE TABLE $nazov_tabulky;";
$resultPremaz = mysql_query($sqlPremaz ) OR die(mysql_error());
if ($resultPremaz) print "Premazal som 100 starych zaznamov.";
}
// vloz zaznam
$sqlInsert = "INSERT INTO $nazov_tabulky('stlpec1','stlpec2', atd) VALUES('".$value1."','".$value2."', atd);";
$resultInsert = mysql_query($sqlInsert ) OR die(mysql_error());
if ($resultInsert) print "Zaznam vlozeny";
else print "Chyba. Zaznam neulozeny.";
|
No a podmienku OR die(mysql_error()) urcite pri LIVE verzii by chcelo prepisat na nejaku funckiu, pretoze urcite nechces pouzivatelom vypisovat chybu na obrazovku, ak sa naskytne.
Avsak mozno niekoho ineho napadne rychlejsi a efektivnejsi postup |
| |
   |
 |
Tominator
 Zablokovaný užívateľ
 Založený: 21.02.2007 Príspevky: 4009
 | Zaslal: Ut 13.11.07 16:08 |   |
tak dalo by sa že by si si cez MAX vybral naväčšie ID z databázy a potom odrátal 30 aložil ako napr. $XYZ a odstránil všetky ktoré majú ID mänšie ako $XYZ |
| |
  |
 |
vl4kn0
 Užívateľ
 Založený: 22.11.2007 Príspevky: 254 Bydlisko: 127.0.0.1
 | Zaslal: Št 22.11.07 11:23 |   |
asi by som to riesil takto nejak.
| kód: | <?php
class db_delete
{
var $table_prefix;
var $root_path = './';
function $db_connect()
{
include_once ($this->root_path . 'config.php');
mysql_connect($dbserver, $dbuser, $dbpassword) or die('Mysql error: Connecting db');
mysql_select_db($dbname) or die('Mysql error: Selecting DB');
$this->table_prefix = $table_prefix;
}
function db_num($db)
{
$this->db_connect();
$sql = 'SELECT * FROM '.$db;
$result = mysql_num_rows($sql);
$num = mysql_num_rows($result);
return $num;
}
function delete($db)
{
$this->db_connect();
$sql = 'DELETE FROM '.$db.' WHERE id < ('.$this->num($db).' - 30)';
$result = mysql_query($sql);
}
}
?> |
potob by ti stacilo volat v napr. indexe funkciu delete($db)... |
| |
     |
 |
|