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.
  1. <INPUT type=button value="    Letölt    " onClick="Load()">,  
  2. illetve  
  3. <INPUT type="text" name="datum" size="26" value="$ab_datum" class="formok">  
2. Javascript:
  1. function Load()  
  2. {...  
  3. var tennivalo = '0';  
  4. document.theForm.action = "data.php";  
  5. document.theForm.submit();  
  6. }  
3. data.php eleje:
  1. <?php  
  2. if ($tennivalo == '0')  
  3. {  
  4.     $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  
  5.     $sorokszama = mysql_num_rows($query_ID2);  
  6.     if ($sorokszama != 0)  
  7.     {  
  8.         $row = mysql_fetch_row($query_ID2);  
  9.         list ($Y$m$do$p$s) = split('[/.:-]'$row[1]);  
  10.         $ab_datum = $Y . "." . $m . "." . $do . ":" . $p;  
  11.             ...  
  12.     }  
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:
  1. <?php  
  2. echo <<<END  
  3. ...  
  4. <INPUT type="text" name="datum" size="26" value="$ab_datum" class="formok">  
  5. ...  
  6. 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.)
  1. $eredmeny = mysql_query("SELECT valmi FROM valamelyik_tablabol");  
  2. if (!$eredmeny) {  
  3.   // légy a levesben, nincs sor  
  4. else {  
  5.   while ($s = mysql_fetch_array($eredmeny, MYSQL_ASSOC)) {  
  6.     echo '<option value="'.$s['valami'].'">'.$s['valami'].'</option>';  
  7.     // XHTML-re figyelvén zárótag  
  8.   }  
  9. }  
A mysql_num_fields-re miért van szükséged?

http://e-arc.hu/