Abejoju, ar taip įmanoma. O formos irgi nebūtina, tiesiog linke padaryt nuorodą su kokiu "req=delete" ir po to funkcijų faile

if ($_GET['req'] == "delete"){
    // trinam iš MySQL...
}

62

(7 replies, posted in PHP)

Hehe, po truputį suprantu, kad visai neblogas dalykas tas OOP. Va, pradžiai kokį resizerį pasirašiau :)

    class ImageResize{
        public $name;
        // Seni img dydžiai
        public $W, $H;
        // Nauji img dydžiai
        public $NewW = 800;
        public $NewH = 600;
        // Pakeistų paveiksliukų nuorodos
        public $path;
        // Laikini kintamieji
        public $tmp;
        public $src;
        
        public function __construct(){
            $this->src = imageCreateFromJPEG($_FILES['upload']['tmp_name']);
            list($this->W, $this->H) = getImageSize($_FILES['upload']['tmp_name']);
            $this->name = $_FILES['upload']['name'];
            $this->path = $_SERVER['DOCUMENT_ROOT'] . "/abc/upload/";
        }
        
        public function resize(){
            $this->tmp = imageCreateTrueColor($this->newW, $this->newH);
            imageCopyResampled($this->tmp, $this->src, 0, 0, 0, 0, $this->newW, $this->newH, $this->W, $this->H);
            if ( file_exists($this->path . $this->name) ){                // Jei toks failas egzistuoja
                $exts = explode(".", $this->name);            // Explodinam vardą, kad atskirti extensioną nuo failo vardo
                $this->name = $exts[0] . "_" . rand(0, 999) . "." . $exts[1];
            }
            imageJPEG($this->tmp, $this->path . $this->name, 100);
            imageDestroy($this->tmp);
            return $this->path . $this->name;
        }
        
        public function setSize($width, $height){
            $this->newW = $width;
            $this->newH = $height;
        }
        
        public function setSizeVar($max){
            if ( $this->W > $this->H ){
                $this->newW = round( $this->W * ($max / $this->W) );
                $this->newH = round( $this->H * ($max / $this->W) );
            } else {
                $this->newW = round( $this->W * ($max / $this->H) );
                $this->newH = round( $this->H * ($max / $this->H) );
            }
        }
    }

Bet būtų vienas klausimas - kokia prasmė naudoti private ar protected?

63

(7 replies, posted in PHP)

md5 wrote:

Aišku nėra vienos teisybės, bet mane užknisa tie simple pavyzdžiai įvairiais klausimais, nes pats OOP  principas yra kurt struktūras. Kiek tenka pastebėt, tai pradedantieji dažniausia pasikuria šiukšlyną.

Tame ir yra reikalas, kad realaus pavyzdžio kur panaudoti galima neparodo, tik visokius su dėžėm, mašinom ar šeimom... Design patterns, kiek akį užmetęs buvau, jau kažkas konkrečiau. Reiks pasigilint, dėkui :)

64

(7 replies, posted in PHP)

Sveiki,
Neseniai pradėjau domėtis objektiniu programavimu ir bandau suprast kodėl tai gali būti geriau :)
Tai va, tarkime šis, pavyzdys blogas, nes html struktūra naudojama?
Kaip suprantu, OO naudojama tik įterpt duomenis į HTML elementus?

Heh, užmiršau global $con; funkcijai parašyt, tai ir nerasdavo $con :)
Viskas puikiai veikia dabar.

LOCK TABLE test WRITE;
SELECT @myRight := rgt FROM test
WHERE parent = 'AC';
UPDATE test SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE test SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO test(produktas, lft, rgt, parent, level) VALUES('qwe', @myRight + 1, @myRight + 2, '', '');
UNLOCK TABLES

Bandau įvykdyt komandą per PHP - meta klaidą:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT @myRight := rgt FROM test WHERE parent = 'AC'; UPDATE test SET rg' at line 2

Bet įvykdžius tiesiai per phpMyAdmin - viskas puikiai veikia. Kas čia negerai?
EDIT:
Na, jau supratau, kad su mysql_query keleto užklausų neįmanoma padaryti. Reik daryt su mysqli_multi_query, bet kažko taip pat nenori veikt...

mysqli_multi_query($con, "LOCK TABLE test WRITE;
SELECT @myRight := rgt FROM test
WHERE parent = '$cat';
UPDATE test SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE test SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO test(produktas, lft, rgt, parent, level) VALUES('$produktas', @myRight + 1, @myRight + 2, '', '');
UNLOCK TABLES") or die(mysql_error());
Warning: mysqli_multi_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\skelbiu\config.php on line 136
$con = mysqli_connect($host, $user, $pw, $db);

Pasirinkau MPTT metodą, jau lyg ir perpratau jį, bet dar turiu klausimų:
Tarkim turiu tokią struktūrą:
http://www.ipix.lt/thumbs/18496369.jpg
Kokią mysql užklausą daryt turėčiau, kad gaut 0 lygio elementus(Vaisiai, daržovės). Ar geriau turėti atskirus table'us?

Sveiki,
Norėčiau sužinoti kaip padaryti tokią kategorijų sistemą kaip skelbiu.lt.
Galvoju reik daryt tokias eilutes:

id | produktas | parent_id

1    blah        0
2    blah_1      1
3    n_cat       0
4    n_cat_1     3

Gal patartumėt kaip tai padaryt paprasčiausiai? Dėkui.

69

(9 replies, posted in PHP)

Kaip parašei, taip ir rodo.
info.php?id=duk&apie=kazkas - rodys "duk".
info.php?id=kazkas&apie=pvz - rodys "pvz".
Ko tu tiksliau čia nori?

70

(0 replies, posted in PHP)

<?
    $req = mysql_query("SELECT title, time, COUNT(url) FROM pics GROUP BY title ORDER BY time DESC");
        while($row = mysql_fetch_array($req)) {
            $num = $row['COUNT(url)'];
            $title = $row['title'];
?>
            <h3><?= $row['title']; ?></h3>
<?
            $q = mysql_query("SELECT * FROM pics WHERE title='$title' ORDER BY time DESC");
            for($i = 0; $i < $num; $i++) {
                $r = mysql_fetch_array($q);
?>
                <a href="/cms/back/<?= $r['url']; ?>" rel="lightbox[roadtrip]"><img src="/cms/back/<?= $r['thumb_url']; ?>" /></a>
<?
        };
    };
?>

Noriu padaryt, jog skaitytų iš DB pavadinimą ir po to išspausdintų linkus, kurie turį tą patį "title"... Viskas veikia puikiai, tik gal įmanoma "švariau" parašyti?..

71

(5 replies, posted in PHP)

Aišku, dėkui už atsakymą, gal net nebandysiu iki galo daryt tada :D

72

(5 replies, posted in PHP)

Tokiu tikslu, kad užskaitytų kaip balsuotą. Gan sudėtinga pamatyt ar jis veikia praktiškai, bet man įdomu, ar jis bent parašytas teisingai?

73

(5 replies, posted in PHP)

Sveiki,
Turbūt žinot apie kaledustebuklas.lt? Kad nereiktų spaudinėt kiekvieną kartą sugalvojau parašyt php skriptą, tik kad nedidelė patirtis su php mano, tad nežinau ar įmanoma tokį skriptą padaryt.
Mano kodas: http://pastie.org/753085
Gal galit užmest akį ir pažiūrėt, kas negerai?
Beje, jokių blogų ketinimų neturiu ir tai tik mokymosi tikslais :)