[ prginfo @ 04.06.2009. 13:31 ] @
Imam sledeci problem.

Napravio sam formu sa padajucom listom u kojoj su nazivi a, b, c i vrednosti tih naziva a=10 b=20 c=30
Forma ima Action stranica.php

U MySQL bazi koja se zove test imam napravljenu tabelu proba. Tabela ima polja id i sum. Podaci su:
id 1 sum 100
id 2 sum 200
id 3 sum 300

FormMethod je POST, a dugme na formi je Submit button.

Stranica.php ima sledeci kod:
Code:

<?php

  $vrednost = $_POST['vrednost'];

//konektuj se na bazu
$conn = mysql_connect("localhost", "", "");
mysql_select_db("test", $conn);

//napravi upit
$sql = "SELECT sum FROM proba where id=$vrednost";
$result = mysql_query($sql, $conn);

print $result;

print "<table border = 1>\n";

//get field names
print "<tr>\n";
while ($field = mysql_fetch_field($result)){
  print " <th>$field->name</th>\n";
} // end while
print "</tr>\n\n";

//get row data as an associative array
while ($row = mysql_fetch_assoc($result)){
  print "<tr>\n";
  //look at each field
  foreach ($row as $col=>$val){
    print " <td>$val</td>\n";
  } // end foreach
  print "</tr>\n\n";
}// end while

print "</table>\n";

?>

Problem je sledeci:

print $result; mi vraca samo Resource id #3, a deo gde je print "<table border = 1>\n"; pa nadalje mi vraca normalnu vrednost u tabeli.


Da li neko zna sta je u pitanju?

Unapred se zahvaljujem.

[Ovu poruku je menjao flylord dana 02.07.2009. u 20:51 GMT+1]
[ Tudfa @ 04.06.2009. 14:51 ] @
Nisam se bas udubio u kod, ali cek prvo da razjasnimo nesto

mysql_query vraca resource za uspesan SELECT, SHOW, DESCRIBE, EXPLAIN upit ili false drugacije. U slucaju drugih vrsta upita za uspeh vraca true, a drugacije false.

Sta zelis da vidis, tj. sta pokusavas sa tim print $result ? Jel dobijas neke greske kod ispisa ili ?
Ako hoces detaljnije informacije o nekoj promenljivoj koristi var_dump...
[ bogdan.kecman @ 04.06.2009. 14:55 ] @
pazi kada tvoje pitanje nema apsolutno nikakve veze sa mysql-om osim sto imas jedan upit u tom php-u...


$result je handle na rezultat .. print $result; ti to i otstampa "ovo je handle broj 3" .. da si pre toga imao neki $f = fopen(); to bi bio broj 4 a $f bi bio broj 3 .. tako da to sto ti php stampa je validno ...

dve while petlje kojima prolazis kroz rezultat ti stampaju horizontalni i vertikalni skup polja .. i to deluje da treba da radi

[ bogdan.kecman @ 04.06.2009. 14:57 ] @
nece mu vard dump ni print_r pomoci mnogo kada je handle u pitanju ... u promenjivoj $rezultat se nalazi integer i to je sve .. ona samo pokazuje na redni broj objekta unutar php-a kome ne mozes direktno da pristupis vec kom pristupas koristeci mysql_fetch_row() i slicne funkcije...

http://en.wikipedia.org/wiki/Handle_(computing)

[ Tudfa @ 04.06.2009. 15:05 ] @
Ma znam, nego pretpostavio sam da hoce da vidi sadrzaj promenljive, pa reko ako to radi, neka koristi var_dump ko covek , a ne print.
[ prginfo @ 04.06.2009. 15:17 ] @
Da se ponovo ukljucim sa dodatkom na problem.

1. Kada izaberem u padajucem meniju prvu stavku (u primeru-a) onda kao rezultat dobijam Resource id #3
2. Kada izaberem drugu stavku u padajucem meniju (u primeru-b) onda kao rezultat dobijam isto Resource id #3, ali mi u tabeli ne prikazuje nikakav podatak osim naslova kolone (prazna tabela).
3. Kada izaberem trecu stavku u padajucem meniju (u primeru-c) onda ne dobijem nikakav rezultat (prikazuje mi se prazna stranica).

Da li ovo pomaze.

P.S. Zeleo bih da napomenem da nisam expert za PHP i MySQL. Trenutno pokusavam da proucim sintaksu i logiku PHPa. Ja 90% svog vremena radim sa D2007 i bazama Informix i Interbase.Relativno dobro poznsjem HTML, JavaScript, CSS. Ovim primerima, zelim da nesto naucim (a verovatno i drugi ljudi, posto sam ja dosta stvari resio citajuci postove i pitanja od drugih korisnika).

Hvala.
[ prginfo @ 04.06.2009. 15:39 ] @
Promenio sam sledece:

$sql = "SELECT sum FROM proba where id=$vrednost"

u

$sql = "SELECT sum FROM proba where id='$vrednost'"

Posle toga mi za sve slucajeve vraca ispravne vrednosti u tabeli, a deo sa print $result; mi i dalje za sve slucajeve prikazuje Resource id #3.
[ Tudfa @ 04.06.2009. 15:45 ] @
izbrisi ono print $result
[ Tudfa @ 04.06.2009. 15:51 ] @
Da te ne buni kao sto je vec napomenuto, $result je samo handle na rezultat, ne sam rezultat. Citaj prethodne postove !!

I ukljuci error_reporting kad radis.

poz

[ prginfo @ 04.06.2009. 16:37 ] @
1. Kako se ukljucuje error_reporting?
[ prginfo @ 04.06.2009. 16:50 ] @
I jos jedno pitanje, da ne bih otvarao posebnu temu.

Kako da rezultete prikazem na istoj stranici, a ne da mi otvara novu, tj, da ispod forme kreiram tabelu i da poljima te tabele dodelim tagove, tako da mi se podaci ispisuju tacno u odredjenim poljima tabele, bez da se otvara nova stranica koja samo prikazuje podatke?

Hvala
[ Tudfa @ 04.06.2009. 17:15 ] @
Ako sam te dobro shvatio postavis action u formi ovako :
Code:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

Error reporting podesavas ili u php.ini pod sekcijom Error handling and logging
ili mozes u toku izvrsavanja skripta pomocu odredjenih funkcija. Imas ovde vise o tome.