ugrás a tartalomhoz

Űrlap mezők felhasználása változóként

killerricsi · 2010. Jan. 8. (P), 20.23
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>
 
1

register globals

gphilip · 2010. Jan. 8. (P), 20.52
Szia!

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
2

Siker :)

killerricsi · 2010. Jan. 8. (P), 22.24
Szia!


A $_POST['azonosito'] formula meghozta a várt eredményt. :)
Köszi!


Üdv: Ricsi