Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Nie działają funkcje MySQL
Forum PHP.pl > Forum > Przedszkole
dzobert
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?
babejsza
Spróbuj pozamieniać komendy mysql_.... na mysqli_...

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

jakieś błędy wyrzuca?
ergo
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.
dzobert
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
tiraeth
W linii 20: $rss->appendChild($newattr);a
usuń a po średniku

Przenoszę na Przedszkole...
dzobert
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. +--------------------------+-------------------------------+
nasty
wstaw text z polskimi znakami miedzy :

<![CDATA[
Tu text z polskimi znakami

]]>
Gość
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
dzobert
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??
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.