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:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <html>  
  3. <head>  
  4.     <title>Untitled</title>  
  5. </head>  
  6.   
  7. <body>  
  8. <?php  
  9. $server = "localhost";  
  10. $felhasznalo = "root";  
  11. $jelszo = "";  
  12. $adatbazis = "adatbazis1";  
  13. $kapcsolat = mysql_connect( $server,$felhasznalo, $jelszo );  
  14. if (!$kapcsolat) {  
  15.   die( "Nem lehet kapcsolódni a MySQL kiszolgálóhoz!" );  
  16. }  
  17. else {  
  18.   print "Sikerült a kapcsolatfelvétel<P>";  
  19. }  
  20. mysql_select_db($adatbazis) or die ("Nem lehet megnyitni a $adatbázist: ". mysql_error());  
  21. if ( isset( $_POST['azonosito'] ) && !empty( $_POST['nev'] ) ) {  
  22.   $parancs = sprintf(  
  23.     "UPDATE table1 SET nev ='%s' WHERE azonosito='%s'",  
  24.     mysql_real_escape_string($_POST['nev']),  
  25.     mysql_real_escape_string($_POST['azonosito'])  
  26.   );  
  27.   $eredmeny = mysql_query( $parancs );  
  28.     
  29.   if (!$eredmeny) {  
  30.     die("Nem sikerült a módosítás: ". mysql_error());  
  31.   }  
  32.   print "<h1>A tábla módosítva, ". mysql_affected_rows() ." sor változott</h1><p>";  
  33. }  
  34. ?>  
  35. <form action="<?php print $PHP_SELF ?>" method="POST">  
  36. <select name="azonosito">  
  37. <?php  
  38. $eredmeny = mysql_query("SELECT azonosito, nev FROM table1");  
  39. if ($eredmeny) :  
  40.   while($egy_sor = mysql_fetch_object( $eredmeny )) : ?>  
  41.   <option value="<?php print htmlspecialchars($egy_sor->azonosito, ENT_QUOTES); ?>"  
  42.     <?php if (!empty($_POST['nev']) && $_POST['nev'] == $egy_sor->nev) : ?> selected="selected"<?php endif; ?>>  
  43.     <?php print $egy_sor->azonosito ?>  
  44.   </option>  
  45.   <?php endwhile;  
  46. endif;   
  47. mysql_close( $kapcsolat );  
  48. ?>  
  49. </select>  
  50. <input type="text" name="nev">  
  51. <input type="submit" value="Frissítés">  
  52. </form>  
  53.   
  54. </body>  
  55. </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.