ugrás a tartalomhoz

HTML űrlap adatfeltöltése MySQL lekérdezés alapján

okobogyo · 2006. Már. 3. (P), 16.56
Sziasztok!

Új vagyok, és még igen nyögvenyelősen megy a PHP.
Kérdésem lenne: adott egy HTML form, melyben felvenni/módosítani lehet(ne) adatokat egy mySQL adattáblába; a már fentlévő adatok egy legördülő listából kiválaszthatók (eddig megvagyok), majd kiválasztás és Letölt gombra kattintás után az adattábla megfelelő sora lekérdezésre kerül (ez is megvan).

Ami nem akaródzik működni: a legördülő listában nem szereplő adatmezőknek meg kéne jelennie a form további input és textarea mezőiben.

Az egész lekérés menete a következő:

1. A formot tartalmazó data.php fájlban: pl.
<INPUT type=button value="    Letölt    " onClick="Load()">,
illetve
<INPUT type="text" name="datum" size="26" value="$ab_datum" class="formok">
2. Javascript:
function Load()
{...
var tennivalo = '0';
document.theForm.action = "data.php";
document.theForm.submit();
}
3. data.php eleje:
<?php
if ($tennivalo == '0')
{
	$query_ID2 = mysql_query("SELECT * FROM " . $DBpre . "... WHERE " . $DBpre . "..._ID = '" . $esemeny . "'", $sql_ID); //$esemeny a legördülő lista kiválasztott elemének ID-ja
	$sorokszama = mysql_num_rows($query_ID2);
	if ($sorokszama != 0)
	{
		$row = mysql_fetch_row($query_ID2);
		list ($Y, $m, $do, $p, $s) = split('[/.:-]', $row[1]);
		$ab_datum = $Y . "." . $m . "." . $do . ":" . $p;
	        ...
	}
Tehát az oldal újratöltésekor ki kellene "töltődnie" a beviteli mezőknek. Vagy?


Segítségeteket előre is köszönöm.

P.
 
1

hogy kerül oda?

Hojtsy Gábor · 2006. Már. 3. (P), 17.06
Hát, amit a beviteli mezőknél írsz, az csak az $ab_datum karaktersorozatot fogja betenni így dolárral az input mezőbe.
2

<Nincs cím>

okobogyo · 2006. Már. 3. (P), 17.11
Sorry, én voltam felületes a problémaleírásnál: az említett rész echo-zva van:
<?php
echo <<<END
...
<INPUT type="text" name="datum" size="26" value="$ab_datum" class="formok">
...
END;
Nekem pont idézőjelek nélkül akadt le. Szal nem itt látom (én legalábbis) a probléma okát.
3

$ab_datum

Hojtsy Gábor · 2006. Már. 3. (P), 17.15
Nos, akkor ezelé a blokk elé rögtön kell tenni egy $ab_datum = 'valami'-t, és megnézni, hogy a 'valami' megjelenik-e a weblapon. A kódrészletek alapján bármi lehet a gond. Lehet, hogy nem látják ezt a változót az űrlap kiírásaid például.
4

Query

okobogyo · 2006. Már. 3. (P), 17.40
Köszönöm a gyors reagálást!
Próbáltam szűkíteni a hiba okát. Valami okból a $query_ID2 = mysql_query("SELECT * FROM " . $DBpre . "PROGRAMOK WHERE " . $DBpre . "PROGRAMOK_ID = '" . $esemeny . "'", $sql_ID); lekérdezés nem fut le.
Ez annál is érdekesebb, mert az $esemeny változó értékét megkapja, és a lekérdezés phpmyadminban lefut. PHP-ben nem fut le, minthogy a soron következő változó sem vesz fel értéket: $sorokszama = mysql_num_rows($query_ID2);

Ötlet?

Köszi előre is.
5

<Nincs cím>

Petrusz · 2006. Már. 9. (Cs), 18.29
Szia!

Bocsi de én nem választ adok neked, hanem mint egy kezdő a témádban szereplő már megoldott rész érdekelne. Meg tudod nekem mondani, hogy miként lehetséges egy legördülő listába megjeleníteni az sql es adatokat hogy abból aztán a formon kiválasztható legyen valamelyik. Gondolom valami tömbbe kiolvastatod a megfelelő szelekcióval az adatokat, de milyen php form utasítás tölti fel a listát ezekkel. Ha a megfelelő program részt megosztanád velem az nagyon megköszöném!

Üdv

Péter
6

<Nincs cím>

attyhor · 2006. Már. 11. (Szo), 00.29
<SELECT NAME=valtozo_nev SIZE=1 >
<?php
$kapcsolat = mysql_connect($host, $user, $password);
mysql_select_db("adatbazis_neve",$kapcsolat);
$eredmeny = mysql_query("SELECT valmi FROM valamelyik_tablabol", $kapcsolat);
$sorok_szama = mysql_num_rows($eredmeny);
$oszlopok_szama = mysql_num_fields($eredmeny);
FOR ($i = 0; $i < $sorok_szama ; $i++) {
$sorertek = mysql_fetch_row($eredmeny);
FOR ($j = 0; $j < $oszlopok_szama; $j++){
ECHO ("<OPTION>" . $sorertek[$j]);
}
}
?>
</SELECT><BR><BR>
7

<Nincs cím>

Petrusz · 2006. Már. 11. (Szo), 14.14
Nagyon köszönöm a segítségedet!!!
8

For helyett While!

Dualon · 2006. Már. 11. (Szo), 14.38
Ha for ciklus helyett while-t használsz, megúszod a mysql_num_rows-t.
A lekérések eredményét hasznos lehet ellenőrizni, az adatbázis-kapcsolódás sikerét viszont majdnem mindig kötelező.
mysql API-nál a kapcsolat megadása opcionális.

([ colorer=php ] [/ colorer ] használatával átláthatóbb a kód.)

$eredmeny = mysql_query("SELECT valmi FROM valamelyik_tablabol");
if (!$eredmeny) {
  // légy a levesben, nincs sor
} else {
  while ($s = mysql_fetch_array($eredmeny, MYSQL_ASSOC)) {
    echo '<option value="'.$s['valami'].'">'.$s['valami'].'</option>';
    // XHTML-re figyelvén zárótag
  }
}
A mysql_num_fields-re miért van szükséged?

http://e-arc.hu/