Problém s PHP scriptem.
- MILHI
- Začátečník

- Registrován: 31. črc 2005
- Kontaktovat uživatele:
Problém s PHP scriptem.
Zdravím. Učím se PHP a ještě na tom nejsem zrovna nejlíp. Napsal sem takový jednodušší script, který má vstup pomocí formuláře porovnat s daty v databázi a vypsat heslo uživatele, který je zadán na vstupu. Problém je že při zápisu který je níže mi to vyhodí chybu
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\documents and settings\mlha\plocha\php\index.php on line 29
Zde je samotný zápis:
<form method="post" action="<?echo $_SERVER["PHP_SELF"]?>">
Nick: <input name="nick">
<input type="Submit" name="odesli">
</form>
<?
If (!empty($_POST))
{
include ("config.php");
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD) or die("Nelze se připojit k MySQL: " . mysql_error());
mysql_select_db(SQL_DBNAME) or die("Nelze vybrat databázi: ". mysql_error());
$zaznamy = mysql_query("SELECT * FROM zensky WHERE nick=".$_POST["nick"]);
while ($tisk = mysql_fetch_array($zaznamy)):
echo $tisk["heslo"]."<BR>\n";
endwhile;
}
?>
problém bude pravděpodobně v tom WHERE v příkazu SELECT, když zapíšu WHERE nick='Dement z databáze' tak to opravdu najde Dementa z databáze a vypíše to jeho heslo, jak chci ale zadávat informace z formuláře narazím na výše popsanou chybu. Pokud máte někdo znalosti a mohl byste mi poradit v čem je problém, byl bych za to moc vděčný. Děkuji
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\documents and settings\mlha\plocha\php\index.php on line 29
Zde je samotný zápis:
<form method="post" action="<?echo $_SERVER["PHP_SELF"]?>">
Nick: <input name="nick">
<input type="Submit" name="odesli">
</form>
<?
If (!empty($_POST))
{
include ("config.php");
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD) or die("Nelze se připojit k MySQL: " . mysql_error());
mysql_select_db(SQL_DBNAME) or die("Nelze vybrat databázi: ". mysql_error());
$zaznamy = mysql_query("SELECT * FROM zensky WHERE nick=".$_POST["nick"]);
while ($tisk = mysql_fetch_array($zaznamy)):
echo $tisk["heslo"]."<BR>\n";
endwhile;
}
?>
problém bude pravděpodobně v tom WHERE v příkazu SELECT, když zapíšu WHERE nick='Dement z databáze' tak to opravdu najde Dementa z databáze a vypíše to jeho heslo, jak chci ale zadávat informace z formuláře narazím na výše popsanou chybu. Pokud máte někdo znalosti a mohl byste mi poradit v čem je problém, byl bych za to moc vděčný. Děkuji
- Lemra
- Čestný člen

- Registrován: 03. zář 2003
Kód: Vybrat vše
$zaznamy = mysql_query("SELECT * FROM zensky WHERE nick=".$_POST["nick"]);- MILHI
- Začátečník

- Registrován: 31. črc 2005
- Kontaktovat uživatele:
Lemra píše:Co ty uvozovky?Kód: Vybrat vše
$zaznamy = mysql_query("SELECT * FROM zensky WHERE nick=".$_POST["nick"]);
Co s nima? Ty by měly bet dobře ne? první blok končí za nick= a k tomu je tečkou připojen post nicku.... myslim že takhle by to mělo fungovat.... ale nefunguje
- sheriff.wiggum
- Začátečník

- Registrován: 08. dub 2005
- Bydliště: Skotsko/Ceska republika
- Kontaktovat uživatele:
- MILHI
- Začátečník

- Registrován: 31. črc 2005
- Kontaktovat uživatele:
sheriff.wiggum píše:$zaznamy = mysql_query("SELECT * FROM zensky WHERE nick=".$_POST['nick']."");mas select ("") a do toho vnorene ".$bla." proste uvozovky
// muzes jeste pridat WHERE nick = '".$_POST['nick']."' aby to bylo pekne
Problém je že když to tak zapíšu tak mi to hodí Parse error, používam PHP4 jestli to má nějakej vliv....
- sheriff.wiggum
- Začátečník

- Registrován: 08. dub 2005
- Bydliště: Skotsko/Ceska republika
- Kontaktovat uživatele:
- MILHI
- Začátečník

- Registrován: 31. črc 2005
- Kontaktovat uživatele:
sheriff.wiggum píše:napis jakej parse error to pise
Tak ne, když to zapíšu přesně jako si mi napsal ty, tak to nehází Parse error, ale taky varování jako když jsem to psal stejně jako dřív. Každopádně je to proto že to co mi radíš je vlastně to samí jako sem zapisoval já, akorát že ty k tomu pak ještě ."" připojíš prázdnej "znak". Takže to vlastně hází stejný varování ale nevim v čem je právě problém. Vyplivne to na mě tohle varování:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\documents and settings\mlha\plocha\php\index.php on line 28
- sheriff.wiggum
- Začátečník

- Registrován: 08. dub 2005
- Bydliště: Skotsko/Ceska republika
- Kontaktovat uživatele:
co mas v tom configu? prihlasis se spravne do mysql? navic nechapu to while kdyz vybiras jen jeden radek ...
//
//
Kód: Vybrat vše
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
Nick: <input name="nick">
<input type="Submit" name="odesli">
</form>
<?php
$sql_server = ("");
$sql_user = ("");
$sql_password = ("");
$sql_database = ("");
if($_POST['odesli'])
{
@mysql_pconnect($sql_server, $sql_user, $sql_password) or die("Nelze se připojit k databázi.");
@mysql_select_db($sql_database) or die("Nelze se připojit k databázi.");
$sql_dotaz = "SELECT * FROM test WHERE nick = '".$_POST['nick']."'";
$dotaz = mysql_query($sql_dotaz) or exit (mysql_error());
$zaznam = @mysql_fetch_array($dotaz);
echo $zaznam['heslo'];
}
?>Kód: Vybrat vše
--
-- Struktura tabulky `test`
--
CREATE TABLE `test` (
`id` int(11) NOT NULL auto_increment,
`nick` varchar(20) NOT NULL default '',
`heslo` varchar(32) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
--
-- Vypisuji data pro tabulku `test`
--
INSERT INTO `test` VALUES (1, 'pct', 'pct');- MILHI
- Začátečník

- Registrován: 31. črc 2005
- Kontaktovat uživatele:
sheriff.wiggum píše:co mas v tom configu? prihlasis se spravne do mysql? navic nechapu to while kdyz vybiras jen jeden radek ...
Mno tak v tom configu mam :
Kód: Vybrat vše
<?
if ($_SERVER["SERVER_ADDR"]=="127.0.0.1")
{
define("SQL_HOST","localhost");
define("SQL_DBNAME","new_db");
define("SQL_USERNAME","root");
define("SQL_PASSWORD","tady mam heslo");
}
else
{
define("SQL_HOST","mysql.nekde.cz");
define("SQL_DBNAME","databaze_u_providera");
define("SQL_USERNAME","user2");
define("SQL_PASSWORD","password2");
}
?>Kód sem přepsal podle tebe na:
Kód: Vybrat vše
<?
If (!empty($_POST))
{
include ("config.php");
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD) or die("Nelze se připojit k MySQL: " . mysql_error());
mysql_select_db(SQL_DBNAME) or die("Nelze vybrat databázi: ". mysql_error());
$sql_dotaz = "SELECT * FROM zensky WHERE nick = '".$_POST['nick']."'";
$dotaz = mysql_query($sql_dotaz) or exit (mysql_error());
$zaznam = @mysql_fetch_array($dotaz);
echo $zaznam['heslo'];
}
?>
- sheriff.wiggum
- Začátečník

- Registrován: 08. dub 2005
- Bydliště: Skotsko/Ceska republika
- Kontaktovat uživatele:
Kód: Vybrat vše
CREATE TABLE `zensky` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`nick` VARCHAR( 20 ) NOT NULL ,
`heslo` VARCHAR( 32 ) NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;Kód: Vybrat vše
INSERT INTO `zensky` ( `id` , `nick` , `heslo` )
VALUES (
'', 'pct', 'pct'
);Kód: Vybrat vše
<?php
define("SQL_HOST","xxx");
define("SQL_DBNAME","xxx");
define("SQL_USERNAME","xxx");
define("SQL_PASSWORD","xxx");
?>Kód: Vybrat vše
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>">
Nick: <input name="nick">
<input type="Submit" name="odesli">
</form>
<?php
if($_POST['odesli'])
{
include ("./config.php");
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD) or die("Nelze se pøipojit k MySQL: " . mysql_error());
mysql_select_db(SQL_DBNAME) or die("Nelze vybrat databázi: ". mysql_error());
$sql_dotaz = "SELECT * FROM zensky WHERE nick = '".$_POST['nick']."'";
$dotaz = mysql_query($sql_dotaz) or exit (mysql_error());
$zaznam = @mysql_fetch_array($dotaz);
echo $zaznam['heslo'];
}
?>- MILHI
- Začátečník

- Registrován: 31. črc 2005
- Kontaktovat uživatele:
Tak jo, udělal sem to přesně podle tebe a nakopíroval tvůj kód a funguje to ano. Nevim v čem sem dělal chybu, každopádně při prvnim spuštění stránky to hodísheriff.wiggum píše:...
Notice: Undefined index: odesli in c:\documents and settings\mlha\plocha\php\index.php on line 23
A bylo by docela vhodný se tohohle upozornění zbavit. Tobě to nedělá? Nemůže to nějak souviset s nastavením PHP?
- sheriff.wiggum
- Začátečník

- Registrován: 08. dub 2005
- Bydliště: Skotsko/Ceska republika
- Kontaktovat uživatele:
cim je tohle netusim na hostingu mi to nedela. localhost jsem nezkousel. imho to tim nastavenim bude 
// register globals off?
// register globals off?
Naposledy upravil(a) sheriff.wiggum dne sob 25. úno 2006, 16:57, celkem upraveno 1 x.
- MILHI
- Začátečník

- Registrován: 31. črc 2005
- Kontaktovat uživatele:
sheriff.wiggum píše:cim je tohle netusim na hostingu mi to nedela. localhost jsem nezkousel. imho to tim nastavenim bude
Hmm, tak to je potom špatný
- MILHI
- Začátečník

- Registrován: 31. črc 2005
- Kontaktovat uživatele:
- sheriff.wiggum
- Začátečník

- Registrován: 08. dub 2005
- Bydliště: Skotsko/Ceska republika
- Kontaktovat uživatele:
- MILHI
- Začátečník

- Registrován: 31. črc 2005
- Kontaktovat uživatele:
- next_ghost
- Začátečník

-
- Registrován: 12. kvě 2005
- Bydliště: Chomutov
- Kontaktovat uživatele:
sheriffe, máš tam jenom vyplý warningy (na webhostingu běžný, z bezpečnostních důvodů). Čistej kód vypadá takhle:
Když se předtim nevodešle formulář, tak $_POST[] nemá žádnej index pojmenovanej 'odesli', tak to bude nadávat.
Kód: Vybrat vše
if(isset($_POST['odesli']))- sovicka
- Středně pokročilý

- Registrován: 17. pro 2003
- Bydliště: východní prágl
- Kontaktovat uživatele:
Přesně tak, na většině serverů pro development jsou zapnutý notices, který tě upozorní i na nedefinovanou proměnou - register_globals na to nemá vliv...
nastavuje se v php.ini (u php.ini-recomended je to na řádce 350)
nastavuje se v php.ini (u php.ini-recomended je to na řádce 350)
Kód: Vybrat vše
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; error_reporting is a bit-field. Or each number up to get desired error
; reporting level
; E_ALL - All errors and warnings (doesn't include E_STRICT)
; E_ERROR - fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it's automatically initialized to an
; empty string)
; E_STRICT - run-time notices, enable to have PHP suggest changes
; to your code which will ensure the best interoperability
; and forward compatibility of your code
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
; initial startup
; E_COMPILE_ERROR - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice message
;
; Examples:
;
; - Show all errors, except for notices and coding standards warnings
;
;error_reporting = E_ALL & ~E_NOTICE
;
; - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE | E_STRICT
;
; - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
;
; - Show all errors, except coding standards warnings
;
error_reporting = E_ALL
Francie ... sladká Francie