Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Nie działają funkcje MySQL
dzobert
post 4.07.2006, 19:39:11
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 30.06.2006
Skąd: okolice Warszawy

Ostrzeżenie: (0%)
-----


zainstalowałem sobie ostatnio apacha 2.0.58, mysqla 5.0.22 i php 5.1.4. Wszystko działa, lecz php nie wykonuje zapytań mysql'a np. mysql_connect. Mogłem coś źle skonfigurować jeśli tak to powiedzcie co, albo może to być błąd w skrypcie

  1. <?php
  2.  header('Content-Type: text/html; charset = iso-8859-2');
  3.  if (!$dbconnect = mysql_connect('localhost', 'root', 'nie podam')) {
  4. echo "Nie można się połączyć z 'localhost'.";
  5.  } // if
  6.  if (!mysql_select_db('news_xml')) {
  7. echo "Nie można się połączyć z bazą 'news_xml'";
  8.  } // if
  9.  $table_id = 'item';
  10.  $dbresult = mysql_query("SELECT * FROM $table_id");
  11.  // Utworz nowy dokument DOM
  12.  $dom = new DOMDocument('1.0', 'iso-8859-2');
  13.  
  14.  // create the root element
  15.  $rss = $dom->createElement('rss');
  16.  $dom->appendChild($rss);
  17.  $newattr = $dom->createAttribute('version');
  18.  $rss->appendChild($newattr);a
  19.  $sattr = $rss->setAttribute('version', '2.0');
  20.  $rss->appendChild($sattr); 
  21.  
  22.  // create the channel element
  23.  $channel = $dom->createElement('channel');
  24.  $rss->appendChild($channel);
  25.  
  26.  // now create all the subelements for the channel
  27.  $title = $channel->appendChild($dom->createElement('title'));
  28.  $title->appendChild($dom->createTextNode('4asy'));
  29.  
  30.  $link = $channel->appendChild($dom->createElement('link'));
  31.  $link->appendChild($dom->createTextNode('http://www.czteryasy.pl'));
  32.  
  33.  $description = $channel->appendChild($dom->createElement('description'));
  34.  $description->appendChild($dom->createTextNode('Wydarzenia w naszej firmie'));
  35.  
  36.  $language = $channel->appendChild($dom->createElement('language'));
  37.  $language->appendChild($dom->createTextNode('pl'));
  38.  
  39.  $webMaster = $channel->appendChild($dom->createElement('webMaster'));
  40.  $webMaster->appendChild($dom->createTextNode('Dzobert@interia.pl')); 
  41.  
  42.  // create the image element
  43.  $image = $channel->appendChild($dom->createElement('image'));
  44.  $image->appendChild($dom->createTextNode(''));
  45.  
  46.  // now create all the subelements for the image
  47.  $title = $image->appendChild($dom->createElement('title'));
  48.  $title->appendChild($dom->createTextNode('4asy'));
  49.  
  50.  $link = $image->appendChild($dom->createElement('link'));
  51.  $link->appendChild($dom->createTextNode('http://www.czteryasy.pl/'));
  52.  
  53.  $url = $image->appendChild($dom->createElement('url'));
  54.  $url->appendChild($dom->createTextNode('http://www.czteryasy.pl/style/img/nav.gif'));
  55.  
  56.  $height = $image->appendChild($dom->createElement('height'));
  57.  $height->appendChild($dom->createTextNode('80'));
  58.  
  59.  $width = $image->appendChild($dom->createElement('width'));
  60.  $width->appendChild($dom->createTextNode('80'));
  61.  // zaďż˝aduj wiersz z bazy
  62.  while ($row = mysql_fetch_assoc($dbresult)) {
  63.  // utwórz element/wezel dla kazdego rekordu
  64. $occ = $dom->createElement($table_id);
  65. $channel->appendChild($occ);
  66. // Dodaj węzeł potomny dla każďego z elementďów
  67. foreach ($row as $fieldname => $fieldvalue) {($occ);
  68. $child = $dom->createElement($fieldname);
  69.  $occ->appendChild($child);
  70.  $value = $dom->createTextNode($fieldvalue);
  71.  $child->appendChild($value);
  72. } // foreach
  73.  } // while
  74. // pobierz gotowy dokument XML
  75.  $xml_result = $dom->saveXML();
  76.  print $dom->save("rss.xml");
  77.  
  78. print <<<XML_SHOW
  79. <textarea cols='150' rows='40' name='xml_result'>$xml_result</textarea>
  80. XML_SHOW;
  81. ?>


Może to być błąd w pliku php.ini?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
babejsza
post 4.07.2006, 21:45:59
Post #2





Grupa: Zarejestrowani
Postów: 407
Pomógł: 1
Dołączył: 4.03.2003
Skąd: warszawa

Ostrzeżenie: (0%)
-----


Spróbuj pozamieniać komendy mysql_.... na mysqli_...

mysqli" title="Zobacz w manualu php" target="_manual

jakieś błędy wyrzuca?
Go to the top of the page
+Quote Post
ergo
post 4.07.2006, 22:14:23
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


na 99% to jest nie odkomentowana linia wlaczajaca obsluge mysql ( jest to wylaczone w php5 standardowo). sprawdz w php.ini a potem zrob sobie plik wywolujacy phpinfo() i tam bedziesz widzial czy sa odpowiednie biblioteki czy nie.


--------------------
Go to the top of the page
+Quote Post
dzobert
post 5.07.2006, 09:47:54
Post #4





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 30.06.2006
Skąd: okolice Warszawy

Ostrzeżenie: (0%)
-----


Już wszystko działa, tylko teraz wyskakuje błąd
Parse error: parse error, unexpected T_VARIABLE in H:\www\mysql+xml.php on line 21
Go to the top of the page
+Quote Post
tiraeth
post 5.07.2006, 10:52:02
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


W linii 20: $rss->appendChild($newattr);a
usuń a po średniku

Przenoszę na Przedszkole...
Go to the top of the page
+Quote Post
dzobert
post 5.07.2006, 11:24:18
Post #6





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 30.06.2006
Skąd: okolice Warszawy

Ostrzeżenie: (0%)
-----


Teraz mam inny problem. Dotyczy on polskich znaków. Gdy skrypt dojdzie do polskiego znaku wyświetlają się dwa błędy
Warning: DOMDocument::saveXML() [function.DOMDocument-saveXML]: output conversion failed due to conv error, bytes 0x98 0x20 0x67 0x88 in H:\www\mysql+xml.php on line 77

Warning: DOMDocument::save() [function.DOMDocument-save]: encoder erroroutput conversion failed due to conv error, bytes 0x98 0x20 0x67 0x88 in H:\www\mysql+xml.php on line 78

skrypt przestaje odczytywać dalej dane z bazy
w bazie mam ustawione latin2 jak widać poniżej, w skrypcie też tak jest, gdzie leży błąd?
  1. mysql> SHOW VARIABLES LIKE '%character_set%';
  2. +--------------------------+-------------------------------+
  3. | Variable_name | Value |
  4. +--------------------------+-------------------------------+
  5. | character_set_client | latin2 |
  6. | character_set_connection | latin2 |
  7. | character_set_database | latin2 |
  8. | character_set_filesystem | BINARY |
  9. | character_set_results | latin2 |
  10. | character_set_server | latin2 |
  11. | character_set_system | utf8 |
  12. | character_sets_dir | C:\serv\mysql\share\charsets\ |
  13. +--------------------------+-------------------------------+
Go to the top of the page
+Quote Post
nasty
post 5.07.2006, 11:58:49
Post #7





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


wstaw text z polskimi znakami miedzy :

<![CDATA[
Tu text z polskimi znakami

]]>
Go to the top of the page
+Quote Post
-Gość-
post 5.07.2006, 12:35:38
Post #8





Goście







Niestety nic. Zmieniłem tę linię
  1. <?php
  2. $value = $dom->createTextNode($fieldvalue);
  3. ?>

na taką.
  1. <?php
  2. $value = $dom->createCDATASection($fieldvalue);
  3. ?>

Teraz wszystkie dane odczytywanie z bazy są pomiędzy znacznikami cdata, lecz to nic nie pomaga
Go to the top of the page
+Quote Post
dzobert
post 5.07.2006, 22:04:50
Post #9





Grupa: Zarejestrowani
Postów: 46
Pomógł: 1
Dołączył: 30.06.2006
Skąd: okolice Warszawy

Ostrzeżenie: (0%)
-----


Tamto wyżej to byłem ja zapomniałem się zalogować. Błąd wynikał z tego, że pole w tabeli było blob, zmieniłem na varchar i błąd nie wyskakuje, tylko dlaczego zamiast polskich liter mam znaki zapytania?

Doszedłem jak rozwiązać tamten problem, lecz moje rozwiązanie nie działa. Mam taki skrypt

  1. <?php
  2.  //stworzenie nowych danych
  3.  $data = date('G:i j M Y');
  4.  $title = $_POST['title'];
  5.  $link = "http://" . $_POST['link'];
  6.  $description = $_POST['description'];
  7.  
  8.  $signs = array("ą", "Ą", "ć", "Ć", "ę", "Ę", "ł", "Ł", "ń", "Ń", "ó", "Ó", "ś", "Ś", "ź", "Ź", "ż", "Ż");
  9.  $code = array("&#261", "&#260", "&#263", "&#262", "&#281", "&#280", "&#322", "&#321", "&#324", "&#323", "&#243", "&#211", "&#347", "&#346", "&#378", "&#377", "&#380", "&#379");
  10.  
  11.  $title = str_replace($signs,$code,$title);
  12.  $description = str_replace($signs,$code,$description);
  13.  echo $title . "<br>";
  14.  echo $description;
  15. ?>


co zrobić aby w zmiennej znaki po przekodowaniu nie zamieniały się z powrotem na swoje słownikowe odpowiedniki. Jeśli zmienna $title = "ś"; to po str_replace zamienia się na $title = "&#347", lecz ten znak jest z powrotem zamieniany na "ś", co zrobić, aby pozostał takim jak po przekodowaniu.
Może jest jakaś inna metoda, aby uzyskać kod litery??

Ten post edytował dzobert 5.07.2006, 23:03:50
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:22