DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
Staro 01. 02. 2010.   #1
kameleon
novi član
Na probnom radu
 
Datum učlanjenja: 16.07.2008
Poruke: 24
Hvala: 2
0 "Hvala" u 0 poruka
kameleon is on a distinguished road
Default Problem sa našim slovima u PHP skripti

Imam dva problema:

napravio sam PHP skriptu koja sa dva klika mišem odn. jednim klikom mišem (aktivira se preko JavaScript koda u Bookmark-u Firefox-a) parsira željeni članak sa sajta rtrs.tv i ubacuje ga u html formu skripte, a zatim drugim klikom mišem na dugme "submit" ubacuje članak u Joomla-inu bazu podataka (da ne bih morao po ko zna koliko puta preko copy&paste prebacivati pojedine dijelove članka u Joomla backend, pa još to ide i jako sporo - ovako mogu da ubacim veći broj članaka za desetak minuta, odn. za šta bi mi inače trebalo 2 sata).


Ovo je kod skripte:


PHP kôd:
<?php
if(isset($_POST['add']))
{
$dbhost 'localhost';
$dbuser 'user';
$dbpass 'password';
$conn mysql_connect($dbhost$dbuser$dbpass);
if(! 
$conn )
{
  die(
'Could not connect: ' mysql_error());
}

if(! 
get_magic_quotes_gpc() )
{
   
$title addslashes ($_POST['title']);
   
$alias addslashes ($_POST['alias']);
   
$introtext addslashes ($_POST['introtext']);
   
$fulltext addslashes ($_POST['fulltext']);
   
$state addslashes ($_POST['state']);
   
$sectionid addslashes ($_POST['sectionid']);
   
$catid addslashes ($_POST['catid']);
   
$created addslashes ($_POST['date']);
   
$created_by addslashes ($_POST['created_by']);
   
$modified addslashes ($_POST['modified']);
   
$modified_by addslashes ($_POST['modified_by']);
   
$publish_up addslashes ($_POST['date']);
   
$attribs addslashes ($_POST['attribs']);
   
$version addslashes ($_POST['version']);
   
$metadata addslashes ($_POST['metadata']);   
}
else
{
   
$title $_POST['title'];
   
$alias $_POST['alias'];
   
$introtext $_POST['introtext'];
   
$fulltext $_POST['fulltext'];
   
$state $_POST['state'];
   
$sectionid $_POST['sectionid'];
   
$catid $_POST['catid'];
   
$created $_POST['date'];
   
$created_by $_POST['created_by'];
   
$modified $_POST['modified'];
   
$modified_by $_POST['modified_by'];
   
$publish_up $_POST['date'];
   
$attribs $_POST['attribs'];
   
$version $_POST['version'];
   
$metadata $_POST['metadata'];
}

$metakey $title ' - ' $alias;
$metadesc $metakey;

$ordering 1;

$sql "UPDATE jos_content SET ordering = ordering + 1 WHERE sectionid = '$sectionid' AND catid = '$catid' AND ordering > 0";

mysql_select_db('database');
$retval mysql_query$sql$conn );
if(! 
$retval )
{
  die(
'Could not enter data: ' mysql_error());
}
echo 
"Updated database successfully, \n";

$sql "INSERT INTO jos_content (title, alias, introtext, `fulltext`, `state`, `sectionid`, `catid`, `created`, `created_by`, `modified`, `modified_by`, publish_up, attribs, version, ordering, metakey, metadesc, metadata) VALUES ('$title', '$alias', '$introtext', '$fulltext', '$state', '$sectionid', '$catid', '$created', '$created_by', '$modified', '$modified_by', '$publish_up', '$attribs', '$version', '$ordering', '$metakey', '$metadesc', '$metadata')";
       
mysql_select_db('database');
$retval mysql_query$sql$conn );
if(! 
$retval )
{
  die(
'Could not enter data: ' mysql_error());
}
echo 
"Entered data successfully\n";

mysql_close($conn);
}
else
{
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Parse and Add article in Joomla database</title>
</head>
 
<body>
<?php

// get the HTML
$address $_GET['address'];

$html file_get_html("$address");

// Dump contents (without tags) from HTML

// Find all element with class nwz1
$title $html->find('.nwz1');
$title strip_tags($title[0]);

$alias $title;
$alias str_replace(" ""-"$alias);


$unwantedchars  = array("Č""č""Ć""ć""Đ""đ""Š""š""Ž""ž""J""--""---");
$replacingchars = array("C""c""C""c""DJ""dj""S""s""Z""z""j""-""-");
$alias str_replace($unwantedchars$replacingchars$alias);
$alias preg_replace('/["!?$%(),:;<>&*~|#]/'''$alias);
// PROBLEM SA SLOVOM j NASTAJE U OVOM DIJELU
$alias strtolower($alias);

$introtext $html->find('.nwz2');
$introtext strip_tags($introtext[0]);

$fulltext $html->find('.nwz3');
$fulltext strip_tags($fulltext[0]);
// $textsignature = strip_tags($fulltext[1]);

$source $html->find('.px11');
$source strip_tags($source[0]);
if (
strstr($source"Izvor: RTRS")) 
$source $source;
else
$source $source "\n" "Izvor: RTRS";

$source_test $source;

?>

<form action="<?php $_PHP_SELF ?>" id="form" name="form" method="POST">
<p><input name="title" type="text" id="title" value="<?php echo $title?>" size="90" />  
title</p>
<p><input name="alias" type="text" id="alias" value="<?php echo $alias?>" size="90" />  
alias</p>
<p><select name="catid">
        <option value="1">vijesti</option>
        <option value="2">sport</option>
        <option value="3">zanimljivosti</option>
        <option value="11">privreda</option>
        <option value="12">kultura</option>
    </select>  category</p>
<p><textarea name="introtext" cols="50" rows="3" id="introtext"><?php echo $introtext?></textarea>  introtext</p>
<p><input name="state" type="hidden" id="state" value="1" />
   <input name="sectionid" type="hidden" id="sectionid" value="1" />
   <input name="created_by" type="hidden" id="created_by" value="62" />
   <input name="modified_by" type="hidden" id="modified_by" value="62" />
   <input name="version" type="hidden" id="version" value="2" />
</p>
<p><textarea name="fulltext" cols="50" rows="10" id="text"><?php echo $fulltext "\n\n" $source?></textarea>  text </p>
<p><input name="date" type="text" id="date" value="<?php echo date("Y-m-d H:i:s"); ?>" size="20" />  date &amp; time</p>
<p><textarea name="attribs" rows="1" id="attribs">show_title=
link_titles=
show_intro=
show_section=
link_section=
show_category=
link_category=
show_vote=
show_author=
show_create_date=
show_modify_date=
show_pdf_icon=
show_print_icon=
show_email_icon=
language=
keyref=
readmore=</textarea> 
  <textarea name="metadata" rows="1" id="metadata">robots=
author=</textarea></p>

<p><input type="submit" name="add" value="Submit" /></p>
</form>
<?php
}
?>

</body>
</html>

1. Imam problem sa našim slovima. Kada skripta izparsira neki članak, i ubaci ga u formu - nastaju problemi sa nekim našim slovima

recimo namjesto malog slova 'j' u formi u polju 'alias' mi se pojavi veliko slovo 'J'. (a kada skriptu izvrsim na svom web serveru t.j. localhost-u namjesto malog slova 'j' pojavi se nekakav simbol (crni romb sa upitnikom u sebi)??


2. a drugi problem je da kada članak ubacim u bazu podataka klikom na 'Submit' forme, u bazi podataka u phpmyadmin-u dobijem ovo:

namjesto svih naših kvakastih slova se pojave neka čudna slova, kao na primjer:


title:
USVOĐˆEN ZAKON O ODUZIMANJU IMOVINE STEÄŒENE IZVRĹ ENJEM KRIVIÄŒNOG DĐˆELA

introtext:
Narodna skupština Republike Srpske usvojila je ju�e Zakon o oduzimanju imovine ste�ene izvršenjem krivi�nog djela koji predviđa osnivanje agencije za upravljanje oduzetom imovinom u sastavu Ministarstva pravde RS.


Collation baze podataka je podešen na utf8_general_ci

MySQL charset je UTF-8 Unicode (utf8)


Kako ta skripta radi na djelu može se vidjeti na adresi:

http://balkan-online.com/test.php?ad...t.php?id=15240


Skripta parsiranje radi uz pomoć "PHP Simple HTML DOM Parser"-a

PHP Simple HTML DOM Parser
http://simplehtmldom.sourceforge.net/manual.htm


testirajući sam otkrio da prvi problem sa zamjenom slova j je na ovoj liniji:

$alias = strtolower($alias);



Zahvaljujem se unaprijed na pomoći i na odgovorima

Poslednja izmena od kameleon : 01. 02. 2010. u 20:02.
kameleon je offline   Odgovorite uz citat
Staro 01. 02. 2010.   #2
357_97
novi član
Na probnom radu
 
Avatar 357_97
 
Datum učlanjenja: 06.01.2010
Poruke: 10
Hvala: 0
8 "Hvala" u 3 poruka
357_97 is on a distinguished road
Default

Probaj sa mb_strtolower i dodaj ovaj sql upit pre unosa vesti u bazu
Kôd:
 $sql = 'set names "utf8"';
357_97 je offline   Odgovorite uz citat
"Hvala" 357_97 za poruku:
Staro 01. 02. 2010.   #3
LiquidBrain
Milan Cvejic
Wrote a book
 
Avatar LiquidBrain
 
Datum učlanjenja: 05.09.2006
Lokacija: Beograd
Poruke: 1.241
Hvala: 32
73 "Hvala" u 56 poruka
LiquidBrain će postati "faca" uskoro
Pošaljite poruku preko Yahoo za LiquidBrain
Default

mozda ti php fajl nije snimljen kao utf-8. proveri i to...
__________________
http://weevify.com
LiquidBrain je offline   Odgovorite uz citat
Staro 02. 02. 2010.   #4
Croll
član
Certified
 
Datum učlanjenja: 01.09.2006
Lokacija: Temerin
Poruke: 51
Hvala: 7
7 "Hvala" u 7 poruka
Croll is on a distinguished road
Pošaljite poruku preko Skype™ za Croll
Default

Citat:
Originalno napisao kameleon Pogledajte poruku
testirajući sam otkrio da prvi problem sa zamjenom slova j je na ovoj liniji:

$alias = strtolower($alias);
Zbog kodiranja, obavezno koristi mb_convert_case(); i ostale MultiByte string funkcije.

Generalno, imas nekoliko sekcija koje mogu da prave problema:
  • javascript
  • formular i sam html
  • konekcija i upis u bazu
kod konekcije na bazu, obavezno SET NAMES... a nije lose uraditi:
Kôd:
$query = "SET NAMES 'utf8'";
$result = mysql_query($query) or die('Error : ' . mysql_error());

$query = "SET CHARACTER SET utf8";
$result = mysql_query($query) or die('Error : ' . mysql_error());

$query = "SET COLLATION_CONNECTION='utf8_general_ci'";
$result = mysql_query($query) or die('Error : ' . mysql_error());

$query = "ALTER DATABASE $dbname DEFAULT CHARACTER SET utf8";
$result = mysql_query($query) or die('Error : ' . mysql_error());
Znam da je mozda glupo pitanje ali da li si podesio filetype i encoding priliko snimanja same php skripte i ostalih fajlova? i ne zaboravi da postavis header:
Kôd:
header('Content-Type: text/html; charset=utf-8');
I proveri sve string funkcije da prebacis u MultiByte ekvivalent (prav
i problem sa nasim slovima, cirilicom itd...)

Kod formulara, dodaj accept-charset atribut.

Pozdrav,
Sasa
Croll je offline   Odgovorite uz citat
"Hvala" Croll za poruku:
Staro 03. 02. 2010.   #5
kameleon
novi član
Na probnom radu
 
Datum učlanjenja: 16.07.2008
Poruke: 24
Hvala: 2
0 "Hvala" u 0 poruka
kameleon is on a distinguished road
Default Riješio sam probleme

Prvi problem sam riješio sa:

Kôd:
$alias = mb_strtolower($alias, mb_detect_encoding($alias));
a drugi sa:

Kôd:
$query = "SET NAMES 'utf8'";
$result = mysql_query($query) or die('Error : ' . mysql_error());

$query = "SET CHARACTER SET utf8";
$result = mysql_query($query) or die('Error : ' . mysql_error());

$query = "SET COLLATION_CONNECTION='utf8_general_ci'";
$result = mysql_query($query) or die('Error : ' . mysql_error());

$query = "ALTER DATABASE $dbname DEFAULT CHARACTER SET utf8";
$result = mysql_query($query) or die('Error : ' . mysql_error());
Zahvaljujem se još jednom na pomoći
kameleon je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
problem sa nasim slovima, sece ih na dva dela... [nq] Sva početnička pitanja 2 01. 09. 2008. 16:30
Sphinx Free open-source SQL full-text search engine - problem sa našim slovima pcigre SQL baze podataka - Sponzor: Baze-Podataka.net 9 01. 04. 2008. 10:29
Problem sa WP i nasim slovima [nq] Web aplikacije, web servisi i software 16 07. 10. 2007. 12:44
Problem sa našim slovima ? Ministar (X)HTML, JavaScript, DHTML, XML, CSS 5 21. 10. 2006. 16:13
Problem sa nasim slovima [nq] (X)HTML, JavaScript, DHTML, XML, CSS 4 24. 05. 2006. 02:33


Vreme je GMT +2. Trenutno vreme je 07:31.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.