Jump to content
php.lv forumi

Bunkertor 7

Reģistrētie lietotāji
  • Posts

    95
  • Joined

  • Last visited

Everything posted by Bunkertor 7

  1. Sveiki. Es te nodarbojos ar tādu ļoti vienkāršu meklēšanas skriptu, kas meklē priekšmetus datubāzē pēc tegiem. Šobrīd lietoju šādu: $raw_results = mysql_query("SELECT * FROM items WHERE (`tags` LIKE '$query%'); Vienkāršākiem meklējumiem ir ok, bet ar dažiem vārdiem ir problēmas. Piemēram, ja meklē "car" tad atgriež arī "cards" (loģiski - tas jau galu galā ir tas ko es viņam tanī querijā prasu) "map" atgriež arī "maple" Protams, es varētu aizvākt to procenta zīmi, bet man vajag lai viņš saprastu daudzskaitli. Piemēram, ja kāds meklē daudzskaitli "maps" man vajag, lai atgriež gan "maps" gan "map" un ja meklē vienskaitli "map" - vajag, lai arī atgrieztu "maps" Kāda būtu labākā metode, lai to dabūtu gatavu? Paldies.
  2. Vai te ir kāds GD Library spečuks? :) Visparastākais imagepolygon skripts kas zīmē trijstūri. <?php $image = imagecreatetruecolor(400, 300); $col_poly = imagecolorallocate($image, 255, 255, 255); imagepolygon($image, array(0, 0, 100, 200, 300, 200), 3, $col_poly); header('Content-type: image/png'); imagepng($image); imagedestroy($image); ?> bet lieta tāda, ka man vajag to trijstūri uztaisīt no gatava png faila un pie tam tādā veidā lai viss apkārt tam trijstūrim būtu "transparency". Tātad $image vietā es neveidotu jaunu truecolur bildi definētu to gatavo png. Bet ko tālāk? Kā panākt lai iekšpus trijstūrim būtu tas png gabals bet ārpus trijsūrim "transparency"?
  3. Paldies par uzvedināšanu uz pareizās domas! @briedi, izskatās forši, bet godīgi sakot es neko nesapratu kas Tavā skriptā notiek :) Beigās uzrakstīju šitā. Daudz garāk, bet man vismaz pašam pielec. Možka kādam noder: <?php $query_string = mysql_query("SELECT * FROM `teksti`"); while($string_row = mysql_fetch_array($query_string)){ $string = $string_row['content']; $string = ereg_replace("[^A-Za-z0-9 ]", "", $string); $split_string = explode(" ", $string); $size_split_string = count($split_string); $size_split_string = $size_split_string-1; $x=0; $y=1; $z=2; for($i=0; $i<=$size_split_string; $i++){ if(($split_string[$x]!='')&&($split_string[$y]!='')&&($split_string[$z]!='')){ $three_phrase = $split_string[$x].' '.$split_string[$y].' '.$split_string[$z]; mysql_query("INSERT INTO `split_teksts` (`id` ,`pid` ,`split_teksts`) VALUES (NULL , '".$string_row['id']."', '".$three_phrase."')"); $x++; $y++; $z++; } } ?>
  4. Sveiki! Vajag uzrakstīt skriptu, kas sadalītu doto tekstu 3-vārdu frāzēs un tās frāzes noglabātu kā comma-separated stringu iekš datubāzes. Izdomājos gan šā, gan tā, pamēģināju ar preg match meklēt atstarpes bet šķiet ka visvienkāršāk ir sadalīt tekstu pa vārdam un tad lipināt pa trim vārdiem kopā. Šajā piemērā būs 23 frāzes pa 3 vārdiem: "skrien ezitis apkart", "ezitis apkart mucai", "apkart mucai un" utt... <?php $string = "Skrien ezitis apkart mucai un skrien vienu dienu, divas dienas un tad peksni ezitis apstajas un saka: Ja sita seta nebeigsies, tad es iesu atpakal"; $words = str_word_count(strtolower($string),1); ?> Tagad es no masīva words varu izvilkt jebkuru elementu. Piemēram: $words[2] būtu "apkart". Un vārdu skaitu stringā es arī pavisam viegli varu dabūt. Kopējo frāžu skaitu arī - tas vienmēr būs vienlīdzīgs $wordcount mīnus 2. Varētu vienkārši ņemt While loop un lipināt atsevišķos masīva elementus kopā pa trim, kamēr visas 23 frāzes ir salipinātas. Gribēju pajautāt vai nav kāds loģiskāks un labāks veids kā to visu izdarīt?
  5. Paldies! Un Tu domā, ka es to echo $MyArray[1][0]; no pirksta izzīdu vai nosapņoju? Melns uz balta - pamācībā.
  6. variablis $MyArray satur saliktu Array pār kuru man nav nekādas kontroles. Principā tas Array izskatās šādi: Array ( [Dimensija 1] => Array ( [platums] => 291,5 [garums] => 19,2 ) [Dimensija 2] => Array ( [platums] => 275,7 [garums] => 20,5 ) ) Man vajag otrā apakš-Arraya pirmo elementu (otrās dimensijas platumu). Biju pilnīgi pārliecināts, ka tas iegūstams šādi: echo $MyArray[1][0]; Rezultāts ir: Notice: Undefined offset: 1 Kā tad lai es viņu savādāk definēju?
  7. Super! Paldies. Pēc idejas strādā, bet tagad ir problēma ar Array-u. Sākšu jaunu tēmu, jo principā tam nav nekāda sakara ar klasēm.
  8. Principā jāatzīst, ka es ne visai izprotu sintaksi šajā gadījumā. Es te mēģinu pārveidot vienu klasi, lai viņa darītu to, ko man vajag :) $url = new Klase1("http://www.domain.com/"); print $url->Funkcijas_Nosaukums(); Man savukārt vajag nevis parādīt rezultātu uz ekrāna, bet ielasīt to citā variablī, ko es pēc tam varu apstrādāt, saglabāt datubāzē utt... Bez tam, šī funkcija atgriež Array, un man vajag tikai Array-a trešo elementu. Mēģināju šādi $url = new Klase1("http://www.domain.com/"); $myArray = Funkcijas_Nosaukums($url); echo $myArray[2]; Protams viss beidzas ar Fatal error: Call to undefined function Php manuālī neko nevaru atrast, jo īsti nezinu kā "tas" saucās ko es meklēju
  9. Es mēģinu izprast Loop būtību. Piemēram, ir skripts, kas ievāc informāciju par XML failiem. simplexml_load_file funkcija nobeigsies ar Fatal Error katru reizi kad XML būs invalīds. Pieņemsim ka šis Loop apstrādās 10 XML failus, no kuriem sestais būs invalīds. Tātad skripts pie sestā vienkārši pārtrauks darboties, neskatoties uz to ka aiz tā vēl ir trīs labi XML faili, kurus varētu apstrādāt. Kāds ir vienkāršākais veids, lai šo problēmu atrisinātu? Ideāli, saskaroties ar Fatal Error, šis skripts saglabātu datubāzē kautkādu "dežūrvērtību" kā Error vai Invalid XML un automātiski atsāktu apstrādi pie septītā faila. while($procRow = mysql_fetch_array($toProcess)) { //sheit notiek xml apstraade, variabli utt $xml=simplexml_load_file($file); //apstraade beidzas //ievieto variablus datubaazee $sqlup="UPDATE table"; $resultup=mysql_query($sqlup); }
  10. Jā, bet man vajag tikai root taga dimensijas :) Parasti dimensijas saturēs tikai root tags bet teorētiski iespējams, ka arī citi apakštegi saturētu width un height un tādā gadījumā skriptam sajuks "fiška". Ā, nu laikam man pieleca :)
  11. Man jārēķinās ar to ka pār xml failiem man nebūs nekādas kontroles. Tie nāks no dažādiem resursiem un to skaits būs mērāms desmitos tūkstošu. Man vajadzēs 80 gadu, lai tiem visiem pievienotu base0 tagu :) Šā skripta uzdevums būs apstaigāt visus xml kas jau atrodas serverī un ķert jaunpienākošos un saglabāt viņu dimensijas datubāzē. Varbūt iespējams to root tagu apstrādāt kā Array un tad izvilkt tos width un height?
  12. Jep! Tev bija taisnība. Vaina tiešām bija xml failā. Bet... Izskatīju vairākus reālus paraugus un izskatās ka tie atribūti, kas man patiešām ir nepieciešami atradīsies root elementā. Patiesībā tie xml izskatīsies kaut kā šādi: <?xml version="1.0"?> <root width="120" height="90"> <base1 width="100" height="50"> <option>A</option> <option>B</option> <option>C</option> </base1> <base2 width="60" height="40"> <option>A</option> <option>B</option> <option>C</option> </base2> </root> Vai ir iespējams izdabūt atribūtus no root elementa ar kādu no xml apstrādes funkcijām? (neesmu regular expressions fans)
  13. Paldies par risinājumu. Bet es tomēr gribētu izprast, kāpēc nedarbojas attributes() funkcija. Šorīt vēlreiz apskatīju ar skaidru galvu un neredzu kļūdu... :(
  14. <base1 width="100" height="50"> <option>A</option> <option>B</option> <option>C</option> </base1> Un tas ir viss. Ļoti vienkāršs un primitīvs. Pirmais skripts strādā gan ar šo XML gan ar jebkuru daudz lielāku un daudz sarežģītāku.
  15. Paldies. Principā man bija error reporting ieslēgts, es tikai šeit nekopēju iekšā lai pārredzamāk. Vienigais errors ko viņš izdod ir: Fatal error: Call to a member function attributes() on a non-object XML failus izdodas ielādēt. Pat mēģināju vienu galīgi nepareizu failu un vienalga ielādējās smuki. Ļoti šaubos ka vainīgs ir XML fails. Es izmēģināju dažādus XML failus, bez tam tanī programmā ko es rakstu man būs diezgan maza kontrole pār tiem XML failiem. Tie nāks no ļoti dažādiem resursiem un iespējams (visticamāk) būs ar kļūdām. Neskatoties uz to, šim skriptam vajadzētu strādāt ja "base" objekts satur šos "width" un "height" atribūtus... pat ja viss pārējais XML būtu galīgi sačakarēts.
  16. Uzrakstīju skriptu kas izvelk atribūtu no XML objekta, bet tagad skatos, ka ja vairākiem objektiem ir atribūts ar tādu pašu nosaukumu, tad skripts nestrādās. Manā gadījumā tā nav problēma bet skaidrības labad gribētu izlabot tā lai skripts strādātu ar jebkuru XML failu. $file='/path'; if (file_exists($file)) { $xml = simplexml_load_file($file); print_r($xml); } else { exit('Error opening the file'); } echo "<br/>"; $attrs = $xml->attributes(); $width = $attrs['width']; $height = $attrs['height']; echo $width; echo "<br/>"; echo $height; Šajā gadījumā objektam "base" ir atribūti "width" un "height" un šis "base" ir vienīgais, kuram ir atribūti ar šādu vārdu. Bet, piemēram, kas notiek, ja ir vairāki objekti: "base1", "base2" un "base3" un visiem ir šādi atribūti? Skripts nestrādā :( Mēģināju šādā veidā: $file='/path'; if (file_exists($file)) { $xml = simplexml_load_file($file); print_r($xml); } else { exit('Error opening the file'); } echo "<br/>"; foreach($xml->base1[0]->attributes() as $a => $b) { echo $a,'="',$b,"\"\n"; } It kā nekādu acīmredzamu kļūdu nav, bet kad palaižu skriptu, sanāk errors. Fatal error: Call to a member function attributes() on a non-object Nu kā tad tas nav objekts, ja viņš ir objekts?
  17. izrādās ka esmu gan :) bija viena muļķīga kļūda iekš Path
  18. Paldies. Ja taisa uz $image tad vispār nekas nenotiek. Palaižu skriptu, skatos serverā, bet thumb.png neeksistē. Nekādu erroru nerāda, vienkārši bildi neuztaisa. Drošības pēc pārbaudīju vai $url ir pareizs. Tad jau iznāk, ka kļūda ir otrajā rindiņā, citādi kāpēc $image ir tukšs?
  19. Sveiki, Reku īss kodiņš kas samazina .PNG failu. Beigās thumb.png bilde tiešām tiek saglabāta uz servera, bet kad viņu attaisu vaļā, tad tā ir balta. Visa oriģinālās bildes informācija ir kaut kur pazudusi. Kāpēc? <?php $url = "path/to/large/image.png"; $image = imagecreatefrompng($url); $result = imagecreate(148,111); $fg = imagecolorallocate($result,255,255,255); imagefilledrectangle($result,0,0,148,111,$fg); $w = imagesx($image); $h = imagesy($image); $wscale = 148 / $w; $hscale = 111 / $h; if ($wscale < $hscale) { $xresult = 148; $yresult = $h * $wscale; $xoffset = 0; $yoffset = (111 - $yresult)/2; } else { $yresult = 111; $xresult = $w * $hscale; $xoffset = (148 - $xresult) / 2; $yoffset = 0; } ImageCopyresized($result,$image,$xoffset,$yoffset,0,0,$xresult,$yresult,$w,$h); imagepng($result, "thumb.png"); imagedestroy($result); ?>
  20. mhm... paldies par idejaam, bet es tomeer gribeetu meeginaat to izdariit ar DOM paliidziibu, es tikai nezinu, vai ar "query" paliidziibu var kaut ko mekleet
  21. Sveiki, Meeginu uzskriptot skriptu, kas paraadiitu, vai attieciigaa HTML dokumentaa atrodas links uz kaadu konkreetu resursu. Piemeeram, skripts aiziet uz vilks.lv un paarbauda, vai kaut kur kodaa ir links uz lacis.lv Es saakumaa domaaju, ka to var izdariit ar $xpath->query paliidziibu, bet jo vairaak manuaalus lasu, jo paarliecinos, ka laikam nevar. Ideja bija kaut kaa taa: <?php $doc = DOMDocument::loadHTMLFile('http://www.whatever'); $xpath = new DOMXPath($doc); $links = $xpath->query('//a/@href/MyKeyWordInTheURL'); #$urlz = array(); foreach ($links as $link) { # $urlz[] = $link->value; echo $link->value . "\n"; echo "Linka Teksts:" . $link->nodeValue . "\n"; } ?> Varbuut labaak meeginaat ar Preg Match?
  22. Sveiki, Reku uzrakstīju skriptu, kas ver vaļā CSV tabulu, pārvērš to par Array un tad atdala katru elementu. Ideja ir tāda, ka elementi tiek ierakstīti MySQL tabulā. Kad mēģinu izvadīt elementus are "echo" palīdzību, viss strādā. Kad mēģinu tos pašus datus rakstīt iekšā tabulā, tur nonāk tikai Array[0], Array[1] utt. Izmēģinājos gan tā, gan šitā. Būšu pateicīgs par palīdzību! <?php $csv = array(); $file = fopen('file.csv', 'r'); while (($result = fgetcsv($file)) !== false) { $csv[] = $result; } fclose($file); $con = mysql_connect("***","***","***"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("***", $con); for ($row = 1; $row < 3; $row++) { echo $csv[$row][0]." and ".$csv[$row][1]." and ".$csv[$row][2]; echo "<br />"; mysql_query("INSERT INTO *** (ref, title, url) VALUES ('$csv[$row][0]', '$csv[$row][1]', '$csv[$row][2]')"); } echo "thanks"; mysql_close($con); ?> Varbūt man vajadzētu mēģināt Loop iekš Loop? Tomēr īsti nezinu, kā to izdarīt.
  23. Vislabāk ar pregmatch, bet šitais piemērs darbosies tikai ar tiem domēniem, kuriem ir vienkāršs extension, tā kā .com un .lv Ja būs .co.uk vai .go.jp, tad nekā :P pārtaisi biški, man slinkums! <?php preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.tvnet.lv/auto/par_un_ap/305424-ka_efektigi_iznicinat_auto", $skaldi); $domeens = $skaldi[2]; preg_match("/[^\.\/]+\.[^\.\/]+$/", $domeens, $skaldi); echo "url ir: {$skaldi[0]}\n"; ?>
×
×
  • Create New...