Autor Zpráva
tomnejeschleba
Profil *
Zdravím, mám problém s připojením databáze a nevím si moc rady. Je to projekt do školy, vše mám vytvořené, ale pořád mi to hází chybu na řádku 17: mysql_fetch_array(): supplied argument is not a valid MySQL ...
Můžete se mi na to prosím mrknout ? :)

<?php

  $url = "data.xml";
  $hlavicka = "<?xml version='1.0' encoding='windows-1250'?><jarmarky>";
  $paticka = "</jarmarky>";

  $fp = fopen($url , "w");
  fwrite($fp, $hlavicka);
  fclose($fp);

  $spojeni=MySQL_Connect("localhost", "jmeno", "heslo") or die("Nepodařilo se připojit k databázi");
  $databaze=MySQL_Select_DB("jmeno", $spojeni);
  $vysledek=MySQL_Query("SELECT*FROM jarmarky");
  $fp = fopen($url , "a");
  mysql_set_charset("cp1250");

  while($zaznam=mysql_fetch_array($vysledek)):
  $vypis = "
  <data id=\"$zaznam\">
    <jmeno>$zaznam[jmeno]</jmeno>
    <prijmeni>$zaznam[prijmeni]</prijmeni>
    <firma>$zaznam[firma]</firma>
    <telefon>$zaznam[telefon]</telefon>
    <email>$zaznam[email]</email>
    <obor>$zaznam[obor]</obor>
    <adresa>$zaznam[adresa]</adresa>
    <specifikace>$zaznam[specifikace]</specifikace>
    <elektrika>$zaznam[elektrika]</elektrika>
    <ucast>$zaznam[ucast]</ucast>
    <poznamka>$zaznam[poznamka]</poznamka>
    
  </data>
  ";

  fwrite($fp, $vypis);
  endwhile;

  fwrite($fp, $paticka);
  fclose($fp);
  MySQL_Close();


Jinak když jsem smazal řádek "while($zaznam=mysql_fetch_array($vysledek)):" a na konci "endwhile;", tak mi to dejme tomu funguje, v xml souboru se zobrazí struktura, ale nenačte data z databáze.

Díky moc za info :)
Anonymní
Profil *
Pokud se nepletu tak musíš upravit vypis z
<jmeno>$zaznam[jmeno]</jmeno>

na
<jmeno>{$zaznam['jmeno']}</jmeno>


Možná bych to udělal takhle:
$vypis  = "<data id=\"$zaznam\">";
$vypis .= "<jmeno>" . $zaznam['jmeno'] . "</jmeno>";   
$vypis .= "</data>";
Tori
Profil
tomnejeschleba:
Když změníte takto řádek 13, vypíše vám to nějakou chybu?
$vysledek=MySQL_Query("SELECT * FROM jarmarky") or echo 'Chyba dotazu: '.mysql_error();
Btw na řádku 19 by se do toho atributu id mělo vkládat něco jako $zaznam[id] - takhle by tam bylo jen "Array".

edit:
Anonymní:
To je možné, ale ne nezbytné - v kontextu řetězce může použít i "text $pole[klíč] další text". Chyba je v tom, že dotaz nevrací to co se očekává.
tomnejeschleba
Profil *
Tím by to nemělo být, ve škole podle skript máme používat výpis tak, jak jsem psal já.
Kamarád to má následovně (a funguje mu to korektně):
$fp = fopen($url , "w");
fwrite($fp, $zahlavi);
fclose($fp);

include('otevriDB.inc');  
  @mysql_query("SET NAMES cp1250");
  $vysledek=mysql_query("SELECT*FROM Mesta");
  $fp=fopen($url, "a");
  while($zaznam=mysql_fetch_array($vysledek)):


a zbytek stejně (resp. podobně vzhledem k jiným parametrům u jeho projektu).
Já bohužel nepoužívám include('otevriDB.inc').
Mastodont
Profil
Ne "SELECT*FROM Mesta", ale "SELECT * FROM Mesta"
tomnejeschleba
Profil *
Tori:
Když změníte takto řádek 13, vypíše vám to nějakou chybu?
>
1
>
$vysledek=MySQL_Query("SELECT * FROM jarmarky") or echo 'Chyba dotazu: '.mysql_error();
>
Btw na řádku 19 by se do toho atributu id mělo vkládat něco jako $zaznam[id] - takhle by tam bylo jen "Array".

Pokud poupravím řádek podle Vás, tak výsledek databáze hází chybu:
Parse error: syntax error, unexpected T_ECHO in /var/www-stud/e090189/export.php on line 13

Jinak jak jste psal, že bych měl vkládat něco jako $zaznam=[id], tak to jsem původně měl v kódu, ale skončil jsem pokaždé ve stejné fázi - chybu u mysql_fetch_array, co jsem koukal ke kolegovi, tak ten to má tak, jak to mám já teď (bez ID).
Tori
Profil
tomnejeschleba:
Aha, tak potom to echo dejte na další řádek za dotazem. Totiž ta chybová hláška ("Supplied argument is not valid MySQL resource") znamená, že mysql_query vrátila false, takže chyba je asi v dotazu (myslím, že špatně zadané jméno databáze by vyhodilo chybu už na předchozím řádku).
K tomu $zaznam[id]: mysql_fetch_array vrací pole - jak název naznačuje, které se při pokusu o zápis do řetězce zapíše jako "Array". Nevím, jak to kolegovi funguje, nemělo by.
tomnejeschleba
Profil *
Tak jsem svůj problém nakonec vyřešil a bylo to samozřejmě mou vlastní blbostí.
Co byl problém - připojení k db, v jiném php jsem měl nastavený parametr na $result a v tomto php souboru jsem odkazoval (úplně blbě samozřejmě) na $vysledek.

Díky moc za ochotu a spolupráci, alespoň jsem se trochu do toho php dostal dál, když jsem to řešil :)

Jestli je to možné, tak LOCK, díky :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0