O mica mare problema

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

voodoo
PHPRomania Supporter
Mesaje: 25
Membru din: Lun Apr 19, 2010 6:02 pm
Localitate: Iasi
Contact:

O mica mare problema

Mesajde voodoo » Vin Noi 04, 2011 1:25 am

Am un script gen: dexonline care ia cuvintele din baza de date dexonline.ro. Acum vine problema vreau ca, cuvintele care au fost cautate sa fie salvate intr-un fisier si apoi din script sa apara ultimile 50 sau 30 de cautari, ceva de genu. Multumesc!



MihaiA
Average Member
Mesaje: 184
Membru din: Lun Aug 25, 2008 5:33 pm

Mesajde MihaiA » Vin Noi 04, 2011 1:37 am

de ce nu le salvezi intr-o baza de date , si apoi iei descrescator in fct de timpul cautarii ?

Avatar utilizator
zeuscool
Senior Member
Mesaje: 250
Membru din: Mie Sep 05, 2007 10:59 am
Localitate: Constanta
Contact:

Mesajde zeuscool » Vin Noi 04, 2011 6:04 pm

fa cum a zis MihaiA, sa nu te doara capul rau pe viitor

daca totusi preferi varianta ta:

iei continutul sa zicem cu file_get_contents ...

ii dai explode dupa o regula, sa zicem, " " sau ", " sau cum ai tu acolo, daca e linie noua incearca cu "\r\n", si o sa ai un array, aplicti functia reverse pentru array si il parcurgi crescator cu un for, sau il parcurgi direct fara reverse descrescator

si voila, problema rezolvata
Follow me on (Da cu share, like, +1 sau ce mai stii !!!) sau comenteaza articolele, sugereaza etc, FII SOCIAL ... :) marianzburlea.com

w3apps
Average Member
Mesaje: 156
Membru din: Joi Sep 02, 2010 11:41 pm

Mesajde w3apps » Sâm Noi 05, 2011 1:49 am

+1 pentru varianta cu baza de date. Eu cred ca ar trebui sa afisezi undeva toate cautarile .... sa fie cu link pe ele pentru a obtine o mai buna indexare in google.

Bafta!

Avatar utilizator
zeuscool
Senior Member
Mesaje: 250
Membru din: Mie Sep 05, 2007 10:59 am
Localitate: Constanta
Contact:

Mesajde zeuscool » Sâm Noi 05, 2011 10:48 pm

in functie de multe multe variabile, situatia poate diferi, de aceea eu nu dau nici un +, aleg dupa testare varianta care e mai rapida, asta cauta si el

daca cum am zis eu mai rapid e bine, asta o alege, daca nu sa mearga pe baza de date.
Follow me on (Da cu share, like, +1 sau ce mai stii !!!) sau comenteaza articolele, sugereaza etc, FII SOCIAL ... :) marianzburlea.com

voodoo
PHPRomania Supporter
Mesaje: 25
Membru din: Lun Apr 19, 2010 6:02 pm
Localitate: Iasi
Contact:

Mesajde voodoo » Lun Noi 07, 2011 4:13 pm

Multumesc pentru sfaturi, am facut cu baza de date, merge mai repede. Si acum nu mai iau cuvintele de pe site, am luat baza lor de date ca am vazut ca tot e opensource.

voodoo
PHPRomania Supporter
Mesaje: 25
Membru din: Lun Apr 19, 2010 6:02 pm
Localitate: Iasi
Contact:

Mesajde voodoo » Vin Noi 11, 2011 12:59 am

vreau sa fac un sitemap si imi da eroarea asta: Parse error: syntax error, unexpected T_STRING in /home/============/sitemap.php on line 6

Cod: Selectaţi tot

<?

// Connecting, selecting database
$link = mysql_connect(’localhost’, ‘=======’, ‘=====’)
or die(’Could not connect: ‘ . mysql_error());
mysql_select_db(’=======’) or die(’Could not select database’);


$query = 'SELECT name FROM dex WHERE name = ORDER BY definition ASC';
$result = mysql_query($query) or die(’Query failed: ‘ . mysql_error());


header (”Content-type: application/xml”);
echo “<?xml version=\”1.0\” encoding=\”UTF-8\”?>
<urlset xmlns=\”http://www.google.com/schemas/sitemap/0.84\”>\n”;
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
foreach ($line as $col_value)
{
echo “<url>\n”;
echo “<loc>http://========/cevapeaici.php?coloana=$col_value</loc>\n”;
echo “</url>”;
}
}
echo “</urlset>\n”;


mysql_free_result($result);


mysql_close($link);

?>

Avatar utilizator
ispas
Senior Member
Mesaje: 655
Membru din: Mar Sep 14, 2010 1:35 pm
Localitate: Craiova
Contact:

Mesajde ispas » Vin Noi 11, 2011 10:52 am

Cod: Selectaţi tot

<?
// Connecting, selecting database
$link = mysql_connect('localhost', '=======', '=====')or die('Could not connect: ' . mysql_error());
mysql_select_db('=======') or die('Could not select database');
$query = 'SELECT name FROM dex WHERE name = ORDER BY definition ASC';
$result = mysql_query($query) or die('Query failed: '. mysql_error());
header ("Content-type: application/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
foreach ($line as $col_value)
{
echo "<url>\n";
echo "<loc>http://========/cevapeaici.php?coloana=$col_value</loc>\n";
echo "</url>";
}
}
echo "</urlset>\n";
mysql_free_result($result);
mysql_close($link);
?>

s-ar putea sa mearga,nu am incercat ! si nu mai folosi caractere de genul ````````’’’’’’’’’’’’’

voodoo
PHPRomania Supporter
Mesaje: 25
Membru din: Lun Apr 19, 2010 6:02 pm
Localitate: Iasi
Contact:

Mesajde voodoo » Vin Noi 11, 2011 11:13 am

Merge, multumesc, dar am fost nevoit sa renut la order by asc, ca imi dadea eroare si la aia. Mai am o intrebare: cum pot sa fac sa genereze doar un numar de linkuri pe pagina? Ca vreau sa fac sitemapul la un dex si contine vreo 7 milioane de cuvinte si asta ar insemna vreo 7 milioane de linkuri intr-o pagina, ceea ce nu e posibil. Imi trebuie ceva performant, eventual un sitemap pe litere. Sau exista vriun program care sa faca sitemap dupa o baza de date?
Ultima oară modificat Vin Noi 11, 2011 11:26 am de către voodoo, modificat 1 dată în total.

Avatar utilizator
ispas
Senior Member
Mesaje: 655
Membru din: Mar Sep 14, 2010 1:35 pm
Localitate: Craiova
Contact:

Mesajde ispas » Vin Noi 11, 2011 11:15 am

Cod: Selectaţi tot

ORDER BY ASC DESC LIMIT 0,10

LIMIT start de la un numar,oprire la un numar

iti dadea eroare pentru ca :

Cod: Selectaţi tot

$query = 'SELECT name FROM dex WHERE name = ORDER BY definition ASC';

name= cu ce?
poate :

Cod: Selectaţi tot

name = '';

sau

Cod: Selectaţi tot

name = LIKE'%ceva%'

sau

Cod: Selectaţi tot

name = ceva

si asa mai departe

voodoo
PHPRomania Supporter
Mesaje: 25
Membru din: Lun Apr 19, 2010 6:02 pm
Localitate: Iasi
Contact:

Mesajde voodoo » Vin Noi 11, 2011 11:36 am

name, e numele cuvantului din baza de date, care vine pus pe link in sitemap asa http://link.rp/definitiecuvant.php?coloana='name'.

Avatar utilizator
ispas
Senior Member
Mesaje: 655
Membru din: Mar Sep 14, 2010 1:35 pm
Localitate: Craiova
Contact:

Mesajde ispas » Vin Noi 11, 2011 12:48 pm

si atunci interogarea mysql nu ar trebui sa fie asa:

Cod: Selectaţi tot

$query = 'SELECT name FROM dex WHERE name ='".$_GET['name']."' ORDER BY definition ASC';

??

voodoo
PHPRomania Supporter
Mesaje: 25
Membru din: Lun Apr 19, 2010 6:02 pm
Localitate: Iasi
Contact:

Mesajde voodoo » Vin Noi 11, 2011 5:15 pm

Nu a mers, tot eroare. Am lasat asa.

<?
// Connecting, selecting database
$link = mysql_connect('localhost', '-----', '------')or die('Could not connect: ' . mysql_error());
mysql_select_db('---------') or die('Could not select database');
$query = 'SELECT name FROM dex';
$result = mysql_query($query) or die('Query failed: '. mysql_error());
header ("Content-type: application/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
foreach ($line as $col_value)
{
echo "<url>\n";
echo "<loc>http://------------/definitiecuvant.php?w=$col_value</loc>\n";
echo "</url>";
}
}
echo "</urlset>\n";
mysql_free_result($result);
mysql_close($link);
?>

Partea nasoala e ca google imi ia doar 50 000 de linkuri, dar nu pe toate. Ma gandeam la un program care sa ia toate linkurile din sitemapul asta si sa faca alte sitemapuri a cate 50000 sau 10000 de linkuri. Exista?

w3apps
Average Member
Mesaje: 156
Membru din: Joi Sep 02, 2010 11:41 pm

Mesajde w3apps » Vin Noi 11, 2011 6:50 pm

De ce nu faci din doua bucati:

1. Prima data cand intrii in sitemap sa fie litere de la A la Z cu link-uri pe ele care sa deschida:

2. Pagina a doua-a sa contina cuvinte care incep cu litera respectiva


Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 29 vizitatori