ugrás a tartalomhoz

Adatbázis rekordok betöltése űrlapba

killerricsi · 2010. Jan. 13. (Sze), 18.42
A lenti programmal kapcsolatban szeretnék segítséget kérni.
A program először kapcsolódik a "adatbazis1" nevű adatbázishoz.
Onnét lekérdezi az "azonosito" és "nev" mezők tartalmát.
Az "azonosito" mezők tartalmát be kellene töltenie egy legördülő listába.
Ezt nem csinálja meg a program.
Ez után a kiválasztott azonosítóhoz tartozó "nev" mező értékét tudnánk módosítani.
Ha ez megtörtént, akkor a frissítés gomb megnyomásával a program feltöltené az adatbázisba a "nev" mező új rekordját.

Az adatbázisból kiolvasott mezők értéke nem töltődik be az űrlapba.
Ezzel kapcsolatban szeretnék segítséget kérni.
Ez egy régebbi példa program. Most tanulom a php-t.
Nem világos az sem, hogy hol kell használni a $_POST['azonosito'] formulát...
Köszönöm!

<html>
<head>
<title>Sorok frissítése az adatbázisban</title>
</head>
<body>

<?php
$server = "localhost";
$felhasznalo = "root";
$jelszo = "";
$adatbazis = "adatbazis1";
$kapcsolat = mysql_connect( $server,$felhasznalo, $jelszo );
if ( ! $kapcsolat ) die( "Nem lehet kapcsolódni a MySQL kiszolgálóhoz!" );
print "Sikerült a kapcsolatfelvétel<P>";
mysql_select_db( $adatbazis ) or die ( "Nem lehet megnyitni a $adatbázist: ".mysql_error() );


if ( isset( $_POST['azonosito'] ) && isset( $_POST['nev'] ) )
{
$parancs = "UPDATE table1 SET nev ='$nev' WHERE azonosito=$azonosito";
$eredmeny = mysql_query( $parancs );

if ( ! $eredmeny ) die ("Nem sikerült a módosítás: ".mysql_error());
print "<h1>A tábla módosítva, ".mysql_affected_rows() ." sor változott</h1><p>";
}
?>

<form action="<? print $PHP_SELF ?>" method="POST">
<select name="azonosito">
<?
$eredmeny = mysql_query( "SELECT azonosito, nev FROM table1" );
while( $egy_sor = mysql_fetch_object( $eredmeny ) )
{
print "<option value=\"$egy_sor->azonosito\"";
if ( isset($nev) && $nev == $egy_sor->nev )
print " selected";
print "> $egy_sor->azonosito\n";
}
mysql_close( $kapcsolat );
?>
</select>
<input type="text" name="nev">
<input type="submit" value="Frissítés">
</form>


</body>
</html>
 
1

Lekérdezés

Poetro · 2010. Jan. 13. (Sze), 22.18
A lekérdezésed biztosan ad vissza adatokat? Mert egyébként jónak tűnik a kód (leszámítva, hogy elfelejtetted használni a kódszínezőt).

Álljon itt azért egy tisztább kód:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<title>Untitled</title>
</head>

<body>
<?php
$server = "localhost";
$felhasznalo = "root";
$jelszo = "";
$adatbazis = "adatbazis1";
$kapcsolat = mysql_connect( $server,$felhasznalo, $jelszo );
if (!$kapcsolat) {
  die( "Nem lehet kapcsolódni a MySQL kiszolgálóhoz!" );
}
else {
  print "Sikerült a kapcsolatfelvétel<P>";
}
mysql_select_db($adatbazis) or die ("Nem lehet megnyitni a $adatbázist: ". mysql_error());
if ( isset( $_POST['azonosito'] ) && !empty( $_POST['nev'] ) ) {
  $parancs = sprintf(
    "UPDATE table1 SET nev ='%s' WHERE azonosito='%s'",
    mysql_real_escape_string($_POST['nev']),
    mysql_real_escape_string($_POST['azonosito'])
  );
  $eredmeny = mysql_query( $parancs );
  
  if (!$eredmeny) {
    die("Nem sikerült a módosítás: ". mysql_error());
  }
  print "<h1>A tábla módosítva, ". mysql_affected_rows() ." sor változott</h1><p>";
}
?>
<form action="<?php print $PHP_SELF ?>" method="POST">
<select name="azonosito">
<?php
$eredmeny = mysql_query("SELECT azonosito, nev FROM table1");
if ($eredmeny) :
  while($egy_sor = mysql_fetch_object( $eredmeny )) : ?>
  <option value="<?php print htmlspecialchars($egy_sor->azonosito, ENT_QUOTES); ?>"
    <?php if (!empty($_POST['nev']) && $_POST['nev'] == $egy_sor->nev) : ?> selected="selected"<?php endif; ?>>
    <?php print $egy_sor->azonosito ?>
  </option>
  <?php endwhile;
endif; 
mysql_close( $kapcsolat );
?>
</select>
<input type="text" name="nev">
<input type="submit" value="Frissítés">
</form>

</body>
</html>
2

:)

killerricsi · 2010. Jan. 14. (Cs), 18.24
Szia!

A te kódod működik.
Az enyémmel nem tudom, hogy mi volt a hiba.
Köszönöm a segítséget!

Üdv: Ricsi
3

short_open_tag

deadcode · 2010. Jan. 27. (Sze), 16.03
<? helyett <?php van a színezett kódban, valószínűleg a short_open_tag beállítás "Off" a szerveren, egy ideje az új PHP verziókban már "Off" a default.

EDIT: ha nem fatal error a hiba, akkor meg valahol logikai bukfenc volt az eredeti kódban, a <? használaton kívül más különbség elsőre nem tűnt fel.