Űrlap mezők felhasználása változóként
A lenti programmal kapcsolatban szeretnék segítséget kérni.
Két napja próbálom megoldani a problémát, de nem sikerül. (Most tanulom a php-t.)
A if ( isset( $azonosito) && isset( $nev ) ) feltétellel indul a program.
Ha a $azonosito és a $nev változónak nincs értéke, akkor generálódik egy űrlap, ahol meg lehetne adni a két változó értékét. Ezután a program a két értéket automatikusan feltöltené egy adatbázisba.
A hiba ott van, hogy az urlap_keszit() alprogram vagy nem ad értéket a $azonosito és a $nev változóknak, vagy ezek már nem élnek az alprogramon kívül, mivel az if ( isset( $azonosito) && isset( $nev ) ) feltétel mindig false.
Próbáltam többféleképpen is átdolgozni a programot, de sehogy nem működött. Ez egyébként egy példaprogram, aminek működnie kéne.
Sokat segítenétek, ha valaki kijavítaná a programot és elmondaná a hibát.
Köszönöm!
<html>
<head>
<title>A felhasználó által megadott adatok beszúrása a táblába</title>
</head>
<body>
<?php
if ( isset( $azonosito) && isset( $nev ) )
{
$dbhiba = "";
$vissza = adatbazis_bovit( $azonosito, $nev, $dbhiba );
if ( ! $vissza ) print "Hiba: $dbhiba<BR>";
else print "Köszönjük!";
}
else {urlap_keszit();}
function adatbazis_bovit( $azonosito, $nev, &$dbhiba )
{
print "adatbazisbovit";
$server = "localhost";
$felhasznalo = "root";
$jelszo = "";
$adatbazis = "adatbazis1";
$kapcsolat = mysql_connect( $server,$felhasznalo, $jelszo );
if ( ! $kapcsolat )
{
$dbhiba = "Nem lehet kapcsolódni a MySQL kiszolgálóhoz!";
return false;
}
if ( ! mysql_select_db( $adatbazis, $kapcsolat ) )
{
$dbhiba = mysql_error();
return false;
}
$parancs = "INSERT INTO table1 ( azonosito,nev ) VALUES ( '$azonosito', '$nev' )";
if ( ! mysql_query( $parancs, $kapcsolat ) )
{
$dbhiba = mysql_error();
return false;
}
return true;
}
function urlap_keszit()
{
global $PHP_SELF;
print "<form action=\"$PHP_SELF\"method=\"POST\">\n";
print "A kívánt azonosito:<p>\n";
print "<input type=\"text\" name=\"azonosito\"><p>\n";
print "Név:<p>\n";
print "<input type=\"text\" name=\"nev\"> ";
print "<input type=\"submit\"value=\"Elküld\">\n</form>\n";
}
?>
</body>
</html>
■ Két napja próbálom megoldani a problémát, de nem sikerül. (Most tanulom a php-t.)
A if ( isset( $azonosito) && isset( $nev ) ) feltétellel indul a program.
Ha a $azonosito és a $nev változónak nincs értéke, akkor generálódik egy űrlap, ahol meg lehetne adni a két változó értékét. Ezután a program a két értéket automatikusan feltöltené egy adatbázisba.
A hiba ott van, hogy az urlap_keszit() alprogram vagy nem ad értéket a $azonosito és a $nev változóknak, vagy ezek már nem élnek az alprogramon kívül, mivel az if ( isset( $azonosito) && isset( $nev ) ) feltétel mindig false.
Próbáltam többféleképpen is átdolgozni a programot, de sehogy nem működött. Ez egyébként egy példaprogram, aminek működnie kéne.
Sokat segítenétek, ha valaki kijavítaná a programot és elmondaná a hibát.
Köszönöm!
<html>
<head>
<title>A felhasználó által megadott adatok beszúrása a táblába</title>
</head>
<body>
<?php
if ( isset( $azonosito) && isset( $nev ) )
{
$dbhiba = "";
$vissza = adatbazis_bovit( $azonosito, $nev, $dbhiba );
if ( ! $vissza ) print "Hiba: $dbhiba<BR>";
else print "Köszönjük!";
}
else {urlap_keszit();}
function adatbazis_bovit( $azonosito, $nev, &$dbhiba )
{
print "adatbazisbovit";
$server = "localhost";
$felhasznalo = "root";
$jelszo = "";
$adatbazis = "adatbazis1";
$kapcsolat = mysql_connect( $server,$felhasznalo, $jelszo );
if ( ! $kapcsolat )
{
$dbhiba = "Nem lehet kapcsolódni a MySQL kiszolgálóhoz!";
return false;
}
if ( ! mysql_select_db( $adatbazis, $kapcsolat ) )
{
$dbhiba = mysql_error();
return false;
}
$parancs = "INSERT INTO table1 ( azonosito,nev ) VALUES ( '$azonosito', '$nev' )";
if ( ! mysql_query( $parancs, $kapcsolat ) )
{
$dbhiba = mysql_error();
return false;
}
return true;
}
function urlap_keszit()
{
global $PHP_SELF;
print "<form action=\"$PHP_SELF\"method=\"POST\">\n";
print "A kívánt azonosito:<p>\n";
print "<input type=\"text\" name=\"azonosito\"><p>\n";
print "Név:<p>\n";
print "<input type=\"text\" name=\"nev\"> ";
print "<input type=\"submit\"value=\"Elküld\">\n</form>\n";
}
?>
</body>
</html>
register globals
talán a szerveren, amin futtatod a PHP-t, nincs bekapscolva a registen_globals direktíva - nem is ajánlott bekapcsolni.
Így hát az űrlapod mezői nem $azonosito, $nev formában kerülnek a scriptedbe, hanem $_POST['azonosito'], $_POST['nev'] néven, és csak így tudod őket elérni (természetesen amennyiben POST metódusról beszélünk).
Próbáld a kérdéses változókat erre lecserélni. És ne használj régi példakódokat, továbbá kapcsold be a notice-okat PHPban.
További infó:
http://php.net/manual/en/security.globals.php
http://www.php.net/manual/en/function.error-reporting.php
Siker :)
A $_POST['azonosito'] formula meghozta a várt eredményt. :)
Köszi!
Üdv: Ricsi