Autor Zpráva
Joukerka
Profil
Dobrý den,
jsem v začátcích, kód mám z předlohy..a mělo by mě to normálně připojit a vytvořit tabulku. Už nevím v čem je chyba.

<?
# připojení k databázi
mysql_connect('bbeffect.php5.cz', 'muj_login', 'moje heslo') or die('Nelze se pripojit k databazi.');
mysql_select_db('czbbeffect') or die('databaze neexistuje');

# vložení údajů zaslaných formulářem
mysql_query(sprintf("INSERT INTO adresar VALUES (0, '%s', '%s', '%s')",
$jmeno, $prijmeni, $tel));
printf("Data byla uložena!<BR>");
printf("<A HREF=\"vlozit.html\">Další</A>");

# ukončení práce s databází
mysql_close();
?> 

...píše mi to, že se nelze připojit k databázi

*asi bude chyba v host, ale už mě nenapadá co by tam mohlo být:
*moje adresa je:bbeffect.php5.cz
*když jsem v mysql tak to mám zobrazené jako localhost:3306, zkoušel sem taky bbeffect.php5.cz:3306
Díky za rady.
Joker
Profil
Joukerka:
Informujte se u hostingu, jaký server se má dávat do připojení k databázi. Obvykle to není adresa webu.

Jestli to je php5.cz, tak tam podle jejich FAQ má být localhost.
Joukerka
Profil
Joker:
díky moc, přesně tohle info sem hledal....
Joukerka
Profil
ještě bych se chtě zeptat...

Myslím, že je teď vše v pořádku... napíše se mi, že se to uložilo...

Nevíte kde se v admin sekci můžu podívat na výpis všech uložených hodnot v tabulce ?... nějak to nemůžu najít...takže nevim na 100% jestli se mi to ukládá..
IdemeNaHavaj
Profil
Joukerka:
http://nibiru.zarea.net/sqladmin/ tvuj login / tvoje heslo
Joukerka
Profil
tam jsem... myslel jsem kde přesně... možná to taky nemůžu nají, protože to tam prostě neni :)


tady je mux kód:

<?
function db_connect()
{
 @$result=mysql_pconnect('localhost', 'XXX', 'XXX');
 if (!$result)
  return false;

 if (!@mysql_select_db('czbbeffect'))
  return false;

 return $result;
}

# vložení údajů zaslaných formulářem
mysql_query(sprintf("INSERT INTO adresar VALUES (0, '%s', '%s', '%s')",
$jmeno, $prijmeni, $tel));
printf("Data byla uložena!<BR>");
printf("<A HREF=\"vlozit.html\">Další</A>");

# ukončení práce s databází
mysql_close();
?> 

kód formuláře je tady:

<FORM ACTION="zpracovani.php" METHOD="post">
Jméno: <INPUT TYPE="text" NAME="jmeno"><BR>
Příjemní: <INPUT TYPE="text" NAME="prijmeni"><BR>
Telefonní číslo: <INPUT TYPE="text" NAME="tel"><BR>
<INPUT TYPE="submit" VALUE="Odeslat">
</FORM>

...napíše se mi, že data byla uložena... možná čím doplnit kód...abych věděl, kde je chyba.. by mi pomohlo
ShiraNai7
Profil
Zkus:
mysql_query(sprintf(
    "INSERT INTO adresar VALUES (0, '%s', '%s', '%s')",
    mysql_real_escape_string($jmeno),
    mysql_real_escape_string($prijmeni),
    mysql_real_escape_string($tel)
)) or die(mysql_error());

+ by jsi měl ošetřit vstup toho MySQL dotazu pomocí mysql_real_escape_string() (to jsem doplnil také).
Moderátor jenikkozak: Přesunuto z duplicitního vlákna.
Tori
Profil
Jestli to máte jen takhle, tak se vám to uložit nemůže, protože se nepřipojujete k databázi (= chybí volání funkce db_connect):
if (!db_connect()) 
    echo 'Nepodařilo se připojit k databázi. Chyba: '.mysql_error();

Dál byste mohl zkontrolovat, jestli se data opravdu uložila:
if (mysql_query($sql))
    echo "Data byla uložena!<br>";
else
    echo 'Při ukládání došlo k chybě: '.mysql_error();

A taky data se při vkládání do DB ošetřují jiným způsobem, tohle není spolehlivé. Číselné hodnoty jednoduše přetypujete na čísla, uvozovky se okolo nepíšou:
$sql = "insert into tabulka (cislo) values (" . (int)$promenna . ")";  // anebo intval($promenna)
Řetězce se u každého typu databáze escapují trochu jinak, takže pro každý typ DB je jiná funkce. Pro rozhraní MySQL je to:
$sql = "insert into tabulka (retezec) values ('" . mysql_real_escape_string($promenna) . "')";
Joukerka
Profil
Dělal jsem to podle návodu www.php5.cz ... kde to dělají takhle:

function db_connect()
{
 @$result=mysql_pconnect('localhost', '<login>', '<heslo>');
 if (!$result)
  return false;

 if (!@mysql_select_db('<databáze>'))
  return false;

 return $result;
}

.... a tady ta funkce db_connect je ...stejně jako v mém kódu
Nemohl bymi to někdo napsat jak by to mělo celé vypadat ?
Tori
Profil
Joukerka:
tady ta funkce db_connect je ...stejně jako v mém kódu
Ano, ve vašem kódu tu funkci definujete, ale nevoláte (viz začátek [#8]).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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