WebPillangó főoldal

Oldalak: 1 2 [3] 4 5 ... 10
 21 
 Dátum: 2012. 05. 08. - 19:04:11 
Indította Tupacko - Utolsó üzenet: írta liptakrobi
Így talán jó.
SELECT DISTINCT(`autosadatlap`.`id`),`autosadatlap`.* FROM `autosadatlap`,`kategoria` WHERE `kategoria`.`a_id` = `autosadatlap`.`id`  AND`kategoria`.`cs_id` IN (1,6,125) GROUP BY `kategoria`.`cs_id`

 22 
 Dátum: 2012. 05. 08. - 18:39:40 
Indította Tupacko - Utolsó üzenet: írta liptakrobi
Köszi

Csak jártam már úgy a left join nal régi e107 el hogy a news részen volt 3 hír, de spam robotok írtak vagy 500-500 kommentet mindhez, és a lekérésnél úgy volt, hogy vagy 3 táblát fűzött össze joinal és baromira belassult az egész vsp mire a kommenteket kilistázta.
Mondjuk én a join-ot nem igazán szoktam használni.
Én ezt tanultam meg:
SELECT * FROM `termek`,`csoport` WHERE `termek`.`cs_id` = `csoport`.`id`

Úgy emlékszem, hogy valami joomlás sobi plugin így oldotta meg ahogy én is kigondoltam, de nem biztos, most nem találom meg, hogy ott hogy volt.

Akkor valahogy így csináljam?
Lényeg hogy lehessen admin felületről új kategóriákat bevinni mint pl.:ajtók száma, üzemanyag, évjárat, stb...

1. tábla lesz a `csoport` ide viszem fel a kategóriákat ha pl újat hozunk létre
valahogy így néz ki: ID; name; value;
sorok pl:
1; üzemanyag; benzin;
2; üzemanyag; diesel;
3; ajtók; 2;
4; ajtók; 3;
5; ajtók; 4;
6; ajtók; 5;
...
125; évjárat; 2005;
126; évjárat; 2006;

2. táblába lesz a `kategoria` ide viszem be az első tábla id-t és a hozzá tartózó termék adatlap id-t
valahogy így néz ki: ID; cs_id; a_id;
Lényegébe ha van egy benzines, 5 ajtós, 2005 évjáratú, kocsi, akkor a csoport táblám 1,6,125 -ös idjeit kell bevinnem
sorok pl:
10; 1; 55;
11; 6; 55;
12; 125; 55;
ha más hasonló kocsi is lesz akkor még a többi sor:
13; 1; 33;
14; 6; 33;
15; 126; 33;

3. tábla lesz az `autosadatlap`
és pl a fent említett benzines, 5 ajtós, 2005 évjáratú kocsi, id-je lesz az 55-ös
valahogy így néz ki: ID; title; kategoriak; leiras;
sorok pl: 55; opel astra eladó; 10,11,12; Megkímélt állapotban...

És a keresésnél pedig ha rákeresnek a benzines, 5 ajtós, 2005 évjáratú autóra akkor én egyből 1,6,125-ös id-ket kapom meg, ha persze az option selectem úgy van megcsinálva pl Évjárat:<select name"evjarat"><option value="125">2005</option>...

Lényegében annyit változott hogy nem 1 táblában vannak az id-k felsorolva hanem erre lesz a 2 es tábla.
viszont akkor a 2 es táblám akár 20x több sort is tartalmazhat mint az autós adatlapom mert elég sok féle dolgot kell egy kocsinál lementeni, és ez ezer autónál akár 20 ezer soros 2 es táblát jelent.

Ha pedig szűkíteni kell a keresésemet, hogy van e benne ABS vagy központi zár (bár ilyenekre ritkábban kell) de akkor csinálok neki egy hasonló táblát még+ ba mint az 1 és a 2 es..


És akkor most jöhet hogy SELECT * FROM `autosadatlap`,`kategoria` WHERE `kategoria`.`a_id` = `autosadatlap`.`id`  AND`kategoria`.`cs_id` IN (1,6,125)

Csak ez így nem jó! mert ezt az 5 sort választja ki:
10; 1; 55;
11; 6; 55;
12; 125; 55;
13; 1; 33;
14; 6; 33;
De itt a 33 as `autosadatlap`.`id` nem kell, mert ott a nincs 125-ös id viszont össze tudja majd kapcsolni, mert az 1 és 6 os van.
Mert ha van 20 féle keresési feltétel nekem olyan kel ahol mind a 20 megfelelő és nem elég hogy csak 1 megegyezik, ezért akartam volna szűrni egymásban a tömböket.

Bár nem tudom, hogy mi van ha csoportosítom a `kategoria`.`cs_id` alapján vagy `kategoria`.`cs_id`, `autosadatlap`.`id`

 23 
 Dátum: 2012. 05. 07. - 21:16:03 
Indította Tupacko - Utolsó üzenet: írta Tupacko
Sziasztok!

Semmi keppen nem ajanlom, hogy egy lekerest ugy oldj meg, hogy beerkezik a lekeres PHP-hoz, az leker egy reszt az adatbazistol, szurest vegez rajta es egyeb atalakitasokat (amit megoldhatsz SQL-bol is), majd egy ujab lekerdezes az adatbazison es ismet csak PHP, ami vegulis HTML-t general. Nem a 20 join miatt atkoznak ki (azert is), hanem a szerverterheles miatt Mosolyog

A tablaszerkezetek megvalasztasa abszolut attol fugg, hogy mekkora adatmennyisegre torekszel. Tovabba az is fontos kerdes, hogy foleg keresni fognak az adatbazisban vagy sokszor szerkeszteni. En azt javasolnam, hogy elso korben normalizald annyira a tablakat, amennyire csak lehet. Ez egy tiszta kiindulasi alap es az esetek tobbsegeben jo megoldas. Ha idovel tul sok join lesz, lelassulnak a dolgok (par millio sorrol beszelunk itt mar), akkor lehet "esszeruen" denormalizalni, olyan oszlopokat osszevonni kulon tablakbol egy uj tablaba, amikre egytt van szukseg es altalaban egyszerre kell adatkiszolgalast vegezniuk. Ezaltal kevesebb join lesz es az adatok is kozel lesznek.

Egy nehany szazezer soros nagysagu adatbazissal en arra torekednek, hogy legyen normalizalt es logikusan lebontott. A mai SQL teljesitmennyel siman elboldogul az ajtok szamanak csoportositasaval az adatbazis motor, csupan egy indexet kell tenni az oszlopra es o majd megoldja, hogy gyors legyen az adott oszlopon levo kereses.

Figyelmedbe ajanlom meglevo nyilt forraskodu rendszerek adatbazisanak es mukodesenek tanulmanyozasat is. Rengeteget lehet tanulni beloluk!

Udv,
Tupacko

 24 
 Dátum: 2012. 05. 07. - 16:27:21 
Indította Tupacko - Utolsó üzenet: írta spier
Értem mire gondolsz, egyszer megpróbálkoztam hasonló megoldással. Ott is csak a képek id-jét - ami az adott termékhez tartozik és feltöltöttek - mentettem a termék tábla adott sorába. Szépen módszeresen úgy emlékszem implode-al betettem a vesszőket, mindig frissítve az adott sort ha új kép került fel. Kiolvasásnál pedig explode-al betettem tömbbe és kezeltem. Hát... hamar leszoktam erről.
A php topikban Tupacko-t is kérdeztem erről, volt róla szó.
A végeredmény az sql adta lehetőségek jobb és átfogóbb ismerete és azok kihasználása lett.
Nem véletlenül találták ki ezeket, mit menet közben tapasztaltam a fent említett kód karbantartása és felépítése során.
Elviselhetetlen terhet rótt a php feldolgozó részre és átláthatatlan lett. Sokszor nem tudtam hol a hiba továbbá a folyamatos frissítések/törlések/módosítások olyan bonyolult php kódot igényeltek amik nem voltak ésszerűek. A kilistázásnál is jóval bonyolultabb program jött létre és megannyi lehetőséget nem tudtam kihasználni vagy csak további táblák vagy kódsor létrehozásával. A bővíthetőség és minden egyéb lehetőség nehezedett vagy megoldhatatlan lett.

Nincs jelentősége pár ezer sornak egy táblában vagy pár tíz összekapcsolásnak, elenyésző erőforrást igényel ha az megfelelően van kódolva/lekérve.

Szerintem próbáld ki mind a két megoldást teljesen leprogramozva és továbbgondolva azt, így szembetűnőek lesznek felhasználás közben a különbségek.
Rosszul fogalmaztam előző post-ban, nem célszerűbb így csinálna, hanem elvileg így kell. De persze ez programozva már mindenkinek szubjektív Mosolyog.

Üdv

 25 
 Dátum: 2012. 05. 06. - 20:32:09 
Indította Tupacko - Utolsó üzenet: írta liptakrobi
Köszi, én végül is csak erre a részre lettem volna kíváncsi, hogy hogyan célszerűbb, kinek mi a véleménye, a többit értem.
Célszerű több táblát létrehozni magának az autóhoz kapcsolódó és meghatározott adatoknak. Egy táblában csak az autó id-je, neve, tipusa van stb. Egy másik táblában az ajtók lehetséges száma 4,5,6 stb. Egy másikban az üzemanyag lehetőségek benzin, gázolaj stb. Egy másikban az évjárat 1950,1951 stb. Ezeket összekapcsolni pl. JOIN-al, GROUP-al stb. lehet egy keresésnél vagy listázásnál pl a mindenhol meghatározott auto id alapján.
Bár ez se jó ha összekapcsolok majd 20 féle táblát, Vigyorog , mert kiátkoznak a hostról.
Ezért írtam egy olyan lehetőséget, hogy nem külön táblákat készítek hanem mindenhez csak 1-1 sor lesz pl üzemenyag = benzin, vagy üzemenyag = disel mintha csak kategóriák lennének, vagy nem is tudom minek nevezzem.
És ha kiakarom listázni a benzinest akkor csak 2 sor lesz ahol az üzemanyag van és abból kell 1 sort kiválasztani, hogy ez így csak gyorsabb mintha lenne 5000 sorom és abból kéne 2000 benzinest kiválasztanom.
Viszont nem egyesével kapom meg az ID-ket hanem egyszerre 2000-ret egy tömbben vagy veszővel elválasztva, és majd tömböt csinálok belőle.
Mert ha pl 20 féle dologra keresnek vagyis a szerint kell kilistázni a kocsikat, akkor elég csak 20 tömböt amikben ID-k szerepelnek.
pl ezt tudnám alkalmazni a tömbökre
array_intersect -- kiszámítja a tömbök metszetét
array array_intersect ( array array1, array array2 [, array ...])

A multkori példám szerint:
Kód:
$ajto = array(2,5,14,222,678);
$uzemanyag = array(2,8,19,222,555);
$evjarat = array(2,25,78,222,555);

$t = array_intersect($ajto,$uzemanyag,$evjarat);
print_r($t); // Array ( [0] => 2 [3] => 222 )
Ügye utána már csak: SELECT * FROM `autosadatlap` WHERE `id` IN (2,222)

 26 
 Dátum: 2012. 04. 30. - 12:56:51 
Indította Tupacko - Utolsó üzenet: írta spier
Szia

Számomra nem teljesen világos a keresés tábla létrehozásának célja adott esetben. Meghatározott feltételekkel adott táblában keresel és adott helyen vagy adott paraméterek alapján választod ki, hogy hol keressen.

Az általad említett koncepciónál maradva egy külön kereső oldal vagy keresési résznél megadja/kiválasztja a kívánt adatokat és/vagy paramétereket. Mivel tudod, hogy ezzel a pl. form-al hol tud keresni (autók között), átadod a kapott paramétereket pl. egy php feldolgozónak. Ezt a php kódot tudatosan a beérkező adatok alapján készíted el (várja a form-ban meghatározott paramétereket stb.). Keresésnél a php feldolgozó megkeresi és visszaadja az adott feltételek alapján az általad meghatározott oldalon a kapott eredményeket. Ha nem talál semmit akkor meg a megfelelő szöveg vagy művelet amit ide gondolsz.

Többféle keresési lehetőséget pl. select-ben megvalósíthatsz. Az oldal tartalmi része vagy az autók között lehessen keresni. A megfelelő feldolgozóra irányítod a kapott paraméter alapján és a megfelelő sablont használod hozzá, hogy megjelenítse a találatot/találatokat.

Célszerű több táblát létrehozni magának az autóhoz kapcsolódó és meghatározott adatoknak. Egy táblában csak az autó id-je, neve, tipusa van stb. Egy másik táblában az ajtók lehetséges száma 4,5,6 stb. Egy másikban az üzemanyag lehetőségek benzin, gázolaj stb. Egy másikban az évjárat 1950,1951 stb. Ezeket összekapcsolni pl. JOIN-al, GROUP-al stb. lehet egy keresésnél vagy listázásnál pl a mindenhol meghatározott auto id alapján.

Ajánlom a Tanuljuk meg 24 óra alatt könyvek közül azt amelyik a mysql-el foglalkozik. Rövid és könnyen emészthető.
Nem csak boltban lehet beszerezni de ez nem ide tartozik. Mosolyog

Üdv

 27 
 Dátum: 2012. 04. 24. - 23:27:38 
Indította Tupacko - Utolsó üzenet: írta liptakrobi
Sziasztok

Én csak pár ötletet kérek, hogy lenne ésszerűbb megcsinálni egy adatbázist amiben sok mindenféle dolgot lehet majd keresni. Mint pl egy használt autós oldalnál.

Kérdés hogy csináljak külön táblát a keresésnek és külön az autós adatlapoknak vagy 1 táblát és ott legyen minden oszloponként?

így gondoltam a külön táblát:
Keresés táblában soronként felvinnék kulcsokat és értékeket és hozzá a kocsi ID ket vagyis autós adatlap táblában levő ID-ket
lenne pl
kulcs:ajtok-szama; ertek:5; ID:2,5,14,222,678
kulcs:uzemanyag; ertek:benzin; ID:2,8,19,222,555
kulcs:evjarat; ertek:2005; ID:2,25,78,222,555

És a keresésnél lekérem, hogy ajtok-szama=5 és uzemanyag=benzin és evjarat=2005
és ugye lenne egy csomó ID-m amit php segítségével kiválogatnák, jelen esetben a 2 és a 222 lenne az eredmény.

Utána már csak le kéne kérnem az autos adatlap táblából a 2 és a 222 es ID vel rendelkező sort.
Az autós adatlapon lenne még sok más adat amiben nem kéne keresni is pl ABS, légszák, fűtött ülés, stb...


Talán a keresés táblámban még így is kevesebb sor lenne, noha pl. az évjáratnál lehet lenne 20 külön féle évjárat érték is.
Ha pl 10 ezer kocsiból kell is válogatni keresni a keresés táblám lehet csak 200 sor lenne, de pl az üzemanyag kulcsomnál meg ott lenne pl 5000 ID egymás után.

Vélemény?

 28 
 Dátum: 2011. 12. 04. - 21:27:58 
Indította Tupacko - Utolsó üzenet: írta pepe0521
Köszi spier!

Ha valaki használni akarja véletlenül a scriptet utf8 alatt is

A comments.php ezt kell cserélni.

Eredeti
Kód:
$comments_db_link = mysql_connect($COM_CONF['dbhost'],$COM_CONF['dbuser'],$COM_CONF['dbpassword']);
mysql_select_db($COM_CONF['dbname'], $comments_db_link);

smcom_main();

Javított
Kód:
$comments_db_link = mysql_connect($COM_CONF['dbhost'],$COM_CONF['dbuser'],$COM_CONF['dbpassword']);
mysql_select_db($COM_CONF['dbname'], $comments_db_link);
mysql_query("SET
NAMES UTF8");
mysql_query("set character
set UTF8");
mysql_query("set collation_connection='utf8_unicode_ci'");
smcom_main();

 29 
 Dátum: 2011. 12. 04. - 12:42:37 
Indította Tupacko - Utolsó üzenet: írta spier
Szia.

Ez a script nem igazán "életre való", elég sok gond lenne vele.
Itt van kettő amit bár nem próbáltam de talán működhet Mosolyog

http://www.phpkode.com/projects/item/swg-miniblog/
http://code.google.com/p/miniblog/downloads/list

Ha a google-ba beírod a "php miniblog" kulcsszót még kiad jó párat. Esetleg lehet keresgélni github-on vagy google code-on, vannak jó kis minták/munkák.

Más projektek szerkesztésénél némi munkába telik, de sajátnál ha hasonlót követsz nem lehet gond ilyennel.
Így más nyelveknél sem lehet majd nagyon probléma.

Programnak a Notepad++ kellemesen és egyszerűen használható át lehet állítani a fájlok kódolását könnyedén UTF8 és BOM nélkülire, ez sok gondtól megkímélhet a későbbiekben.
Jobb alul ki is írja hogy ANSI vagy UTF8 stb. a kódolása magának a fájlnak.

HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

PHP kódban lehet agressziózni ha még mindig nem akarja vagy pl. hibát íratsz ki a kódban majd exit('Érvénytelen valami...'):
<?php header("Content-Type: text/html; charset=UTF-8"); ?>

Adatbázis kapcsolatnál hasznos lehet:
set names UTF8
set character set UTF8

esetleg lehet a collation még utf8_general_ci vagy utf8_unicode_ci bár ezt én sem használom már hozzá, ezen kívül még sok beállítás létezik

SQL:
Ha minden (illesztés és a műveletben az illesztés) utf8_general_ci vagy utf8_unicode_ci akkor nem lehet gond.
Ezt manuálisan is át lehet szerkeszteni ha már telepített, bár babra munka. Tehát mindenhol ezt írja ki.

SQL installnál:
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci

más nem jut eszembe hirtelen.

 30 
 Dátum: 2011. 12. 03. - 13:45:01 
Indította Tupacko - Utolsó üzenet: írta pepe0521
Sziasztok

Nem rég belekezdtem egy kisebb blogmotor megírásába ami utf8 karakterkódolást használ, először úgy gondoltam kommentelni megteszi majd a disqus.
De ezt utólag mégis elvetettem. Saját hobbi projektként indult az egész (nem volt specifikáció) nem több, idő hiányában elkeztem keresgélni a neten hátha találok valmmi kész scriptet és megleszek végre.

Ekkor bukkantam az alábbi scriptre: http://www.scriptsmill.com - egy komment script nem egy újdonság de szerintem amire használnám pont jó.

Viszont karakterkódolási problémába ütköztem a script iso-t használ.

Az eredeti install.php

Kód:
<?

/*

Install v1.04

Copyright (C) 2005-2006 ScriptsMill

E-Mail: info@scriptsmill.com
URL: http://www.scriptsmill.com
Author: Stanislav Perederiy

    This file is part of ScriptsMill Comments.

    ScriptsMill Comments is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2.1 of the License, or
    (at your option) any later version.

    ScriptsMill Comments is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with ScriptsMill Comments; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


*/


main();

function main() {

if ($_REQUEST['action'] == 'make_install') {
make_install();
}
else {
display_config_form();
}

}

function display_config_form() {

preg_match("/(.*)\/install.php/", $_SERVER['REQUEST_URI'], $matches);
$script_dir = $matches[1];


print<<<EOF
<html>
<head>
 <title>Comments script configuration</title>
</head>
<body>
<h1>Comments script configuration</h1>
EOF;
if (file_exists("./config.php")) {
print "It seems that you have already installed comments script. If you want to reinstall it, please delete mysql tables created during previous install and delete file config.php";
}
else {
print<<<EOF
<form action="{$_SERVER['REQUEST_URI']}" method="POST">
<input type="hidden" name="action" value="make_install">
<table>
 <tr>
  <td align="right" valign="top"><b>Site URL:</b></td>
  <td align="left"><input name="site_url" type="text" value="http://{$_SERVER['HTTP_HOST']}" size="80"><br><small>(Without trailing slash)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>MySQL host:</b></td>
  <td align="left"><input name="dbhost" type="text" value="" size="80"><br><small>(Ask your hosting provider about this if you're not sure)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>MySQL username:</b></td>
  <td align="left"><input name="dbuser" type="text" value="" size="80"><br><small>(Ask your hosting provider about this if you're not sure)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>MySQL password:</b></td>
  <td align="left"><input name="dbpassword" type="text" value="" size="80"><br><small>(Ask your hosting provider about this if you're not sure)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>MySQL database:</b></td>
  <td align="left"><input name="dbname" type="text" value="" size="80"><br><small>(Ask your hosting provider about this if you're not sure)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>MySQL tables preffix:</b></td>
  <td align="left"><input name="dbtablespreffix" type="text" value="comments_" size="80"><br><small>(Just unique preffix for sql tables names)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>Script virtual directory:</b></td>
  <td align="left"><input name="script_dir" type="text" value="{$script_dir}" size="80"></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>Admin login:</b></td>
  <td align="left"><input name="admin_name" type="text" value="admin" size="80"><br><small>(Choose login for admin panel of comments script)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>Admin password:</b></td>
  <td align="left"><input name="admin_passw" type="password" value="" size="80"><br><small>(Choose password for admin panel of comments script)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>Confirm password:</b></td>
  <td align="left"><input name="admin_passw2" type="password" value="" size="80"><br><small>(You should remember this password)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>Admin email:</b></td>
  <td align="left"><input name="email_admin" type="text" value="" size="80"><br><small>(leave blank if you don't want to receive notification about new comments on your site)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>Script email:</b></td>
  <td align="left"><input name="email_from" type="text" value="" size="80"><br><small>(Email in field 'From:' of notification messages)</small></td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>Comments sort order:</b></td>
  <td align="left"><select name="sort_order"><option value="">Newest comments in the end</option><option value="desc">Newest comments in the begining</option></select></td>
 </tr>
 <tr>
 <tr>
  <td align="right" valign="top"><b>WordPress API key:</b></td>
  <td align="left"><input name="akismet_apikey" type="text" value="" size="80"><br>
    <small>(Get api key <a href="http://wordpress.com/signup/">here</a>. Or leave blank if you don't want to filter spam comments)</small>
 </td>
 </tr>
 <tr>
  <td align="right" valign="top"><b>Language:</b></td>
  <td align="left"><select name="language">
   <option value="en">English</option>
   <option value="ptbr">Brazilian Portuguese</option>
   <option value="cnS">Chinese Simple</option>
   <option value="zh">Chinese Traditional</option>
   <option value="nl">Dutch</option>
   <option value="est">Estonian</option>
   <option value="fa">Farsi</option>
   <option value="el">Greek</option>
   <option value="he">Hebrew</option>
   <option value="fr">French</option>
   <option value="de">German</option>
   <option value="it">Italian</option>
   <option value="no">Norwegian</option>
   <option value="pt">Portuguese Standard</option>
   <option value="pl">Polish</option>
   <option value="pl2">Polish (alt version)</option>
   <option value="es">Spanish</option>
   <option value="sv">Swedish</option>
   <option value="th">Thai</option>
   <option value="tr">Turkish</option>
   <option value="ru">Russian</option>
   <option value="ua">Ukrainian</option>
   <option value="vn">Vietnamese</option>
     </select>
  </td>
 </tr>
 <tr>
  <td align="center" colspan="2"><br><input type="submit" value="Install"></td>
 </tr>
</table>
</form>
EOF;

}

@mail("info@scriptsmill.com", "Someone trying to install comments", "Trying to install on {$_SERVER['HTTP_HOST']}", "From: Install <install@scriptsmill.com>\r\n");

print<<<EOF
</body>
</html>
EOF;


}

function make_install() {

print<<<EOF
<html>
<head>
 <title>Comments script installation process</title>
</head>
<body>
<h1>Comments script installation process</h1>
EOF;

 foreach ($_POST as $key => $value) {
  if ($key != 'email_admin' &&
   $key != 'sort_order' &&
   $key != 'sript_dir' &&
   $key != 'akismet_apikey' &&
   $value == '') {
$error_message .= "Field '$key' shouldn't be blank.<br>\n";
  }
 }
 if ($_POST['admin_passw'] != $_POST['admin_passw2']) {
$error_message .= "'Password' and 'Confirm password' fields should have equal values.<br>\n";
 }

 if (!$error_message) {
  print "Connecting to mysql ... ";
  $comments_db_link = mysql_connect($_POST['dbhost'],$_POST['dbuser'],$_POST['dbpassword']);
mysql_select_db($_POST['dbname'], $comments_db_link);
  if (mysql_error()) {
$error_message .=  mysql_error() . "<br>\n";
  }
  else {
print "done<br>";
  }
 }

 if (!$error_message) {
   print "Creating table {$_POST['dbtablespreffix']}data ... ";
  mysql_query("CREATE TABLE `{$_POST['dbtablespreffix']}data` (
 `ID` bigint(3) NOT NULL auto_increment,
 `time` datetime NOT NULL default '0000-00-00 00:00:00',
 `href` varchar(255) NOT NULL default '',
 `text` text NOT NULL,
 `author` varchar(255) NOT NULL default '',
 `email` varchar(255) default NULL,
 `dont_show_email` int(11) default '0',
 `ip` varchar(15) default NULL,
 PRIMARY KEY  (`ID`),
 KEY `time` (`time`,`href`),
 KEY `href` (`href`)
)");
  if (mysql_error()) {
$error_message .=  mysql_error() . "<br>\n";
  }
  else {
  print "done<br>";
  }

   print "Creating table {$_POST['dbtablespreffix']}junk ... ";
  mysql_query("CREATE TABLE `{$_POST['dbtablespreffix']}junk` (
 `ID` bigint(3) NOT NULL auto_increment,
 `time` datetime NOT NULL default '0000-00-00 00:00:00',
 `href` varchar(255) NOT NULL default '',
 `text` text NOT NULL,
 `author` varchar(255) NOT NULL default '',
 `email` varchar(255) default NULL,
 `dont_show_email` int(11) default '0',
 `ip` varchar(15) default NULL,
 PRIMARY KEY  (`ID`),
 KEY `time` (`time`,`href`),
 KEY `href` (`href`)
)");
  if (mysql_error()) {
$error_message .=  mysql_error() . "<br>\n";
  }
  else {
  print "done<br>";
  }

   print "Creating table {$_POST['dbtablespreffix']}subscribes ... ";
  mysql_query("CREATE TABLE `{$_POST['dbtablespreffix']}subscribes` (
 `ID` bigint(20) NOT NULL auto_increment,
 `email` varchar(255) NOT NULL default '',
 `href` varchar(255) NOT NULL default '',
 `hash` varchar(255) NOT NULL default '',
 PRIMARY KEY  (`ID`),
 KEY `href` (`href`)
)");
  if (mysql_error()) {
$error_message .=  mysql_error() . "<br>\n";
  }
  else {
  print "done<br>";
  }


   print "Creating table {$_POST['dbtablespreffix']}banned ... ";
  mysql_query("CREATE TABLE `{$_POST['dbtablespreffix']}banned` (
 `ID` int(1) NOT NULL auto_increment,
 `ip` varchar(15) NOT NULL default '',
 PRIMARY KEY  (`ID`),
 UNIQUE KEY `ip` (`ip`)
)");
  if (mysql_error()) {
$error_message .=  mysql_error() . "<br>\n";
  }
  else {
  print "done<br>";
  }


 }

 if (!$error_message) {

$keychars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
$length = 10;
$copy_random_seed = "";
$max=strlen($keychars)-1;
for ($i=0;$i<=$length-1;$i++) {
 $copy_random_seed .= substr($keychars, rand(0, $max), 1);
}

if ($_POST['akismet_apikey']) {
$do_for_check_spam = 1;
}
else {
$do_for_check_spam = 0;
}

$config_file =<<<EOF
<?
\$COM_CONF['site_url'] = "{$_POST['site_url']}";  // Without trailing slash

\$COM_CONF['dbhost'] = "{$_POST['dbhost']}";
\$COM_CONF['dbuser']="{$_POST['dbuser']}";
\$COM_CONF['dbpassword']="{$_POST['dbpassword']}";
\$COM_CONF['dbname']="{$_POST['dbname']}";
\$COM_CONF['dbtablespreffix'] = "{$_POST['dbtablespreffix']}";
\$COM_CONF['dbmaintable'] = "{\$COM_CONF['dbtablespreffix']}data";
\$COM_CONF['dbemailstable'] = "{\$COM_CONF['dbtablespreffix']}subscribes";
\$COM_CONF['dbbannedipstable'] = "{\$COM_CONF['dbtablespreffix']}banned";
\$COM_CONF['dbjunktable'] = "{\$COM_CONF['dbtablespreffix']}junk";

\$COM_CONF['script_dir'] = "{$_POST['script_dir']}";
\$COM_CONF['admin_name'] = "{$_POST['admin_name']}";
\$COM_CONF['admin_passw'] = "{$_POST['admin_passw']}";
\$COM_CONF['email_admin'] = "{$_POST['email_admin']}";
\$COM_CONF['email_from'] = "{$_POST['email_from']}";
\$COM_CONF['admin_script_url']="{\$COM_CONF['script_dir']}/admin.php";

\$COM_CONF['script_url']="{\$COM_CONF['script_dir']}/comments.php";
\$COM_CONF['template']="default";
\$COM_CONF['lang']="{$_POST['language']}";
\$COM_CONF['sort_order']="{$_POST['sort_order']}";      // If you want newest comments at the beginig use "desc"
// otherwise leave blank

\$COM_CONF['anti_flood_pause'] = '60';  // in seconds

\$COM_CONF['akismet_apikey'] = "{$_POST['akismet_apikey']}";
\$COM_CONF['ckeck_for_spam'] = $do_for_check_spam;


\$COM_CONF['copy_random_seed'] = "{$copy_random_seed}"; // Was generated during install.
// Using in email notifications for unsubscribing.
// Don't change it!
?>
EOF;

   print "Writing config file ... ";
  if($handle = fopen("./config.php", 'w')) {
         fwrite($handle, $config_file);
         fclose($handle);
         print "done<br>";
  }
  else {
print "can't open config file for writing, you can manually create file config.php and copy/paste following content into it:<br>
<textarea cols=80 rows=10>{$config_file}</textarea>";
  }


@mail("info@scriptsmill.com", "New install of comments", "Comments installed on {$_SERVER['HTTP_HOST']}", "From: Install <install@scriptsmill.com>\r\n");


$full_path = dirname(__FILE__) . DIRECTORY_SEPARATOR;
  print<<<EOF
<p><b>Installation complete.</b> Now include comments.php to your pages.</p>

<p>For .php files use &lt;? require("{$full_path}comments.php"); ?&gt;</p>

<p>For .shtml files use &lt;!--#include file="/comments/comments.php" --&gt;</p>

<p>See <b>readme.txt</b> for more info.</p>
EOF;

 }

 if($error_message) {
print "<br><b>The following errors occured:</b><br>$error_message";
 }

 print<<<EOF
</body>
</html>
EOF;


}


?>

Viszont  én adtam az adatbázis tábláknak egy másik értéket

Kód:
ENGINE=InnoDB DEFAULT CHARSET=utf8"

Azon is töprengtem már mysql kapcsolódásnál kellene adnom egy
Kód:
mysql_query("SET NAMES 'utf8'");
talán.

Kód:
$comments_db_link = mysql_connect($_POST['dbhost'],$_POST['dbuser'],$_POST['dbpassword']);
mysql_select_db($_POST['dbname'], $comments_db_link);

Ha valaki ismeri a scriptet és tudna segíteni a megoldásban írjon.
Köszönöm mindenkinek előre is.

Oldalak: 1 2 [3] 4 5 ... 10