Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zasto nece da izbrise zapis?

[es] :: PHP :: Zasto nece da izbrise zapis?

[ Pregleda: 2106 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

define

Član broj: 41934
Poruke: 288
*.beotel.net.



Profil

icon Zasto nece da izbrise zapis?16.03.2005. u 10:00 - pre 232 meseci
Ovako, ovaj script dobro radi ako se koristi row[0]
$url_array = array();
for ($count = 1; $row = mysql_fetch_row ($result); ++$count)
{
$url_array[$count] = addslashes($row[1]);
}
?>
<br />
<form name=bm_table action="brisi.php" method=post>
<table width=300 cellpadding=2 cellspacing=0>
<?php
echo "<tr><td><strong>ime</strong></td>";
echo "<td><strong>brisi</strong></td></tr>";
if (is_array($url_array) && count($url_array)>0)
{
foreach ($url_array as $url)
{
echo "<tr><td>".htmlspecialchars($url)."</td>";
echo "<td><input type=checkbox name=\"del_me[]\" value=\"$url\"></td>";
echo "</tr>";
}
}
else{
echo "<tr><td>nema zapisa</td></tr>";}

?>
<tr><td><input type="submit" value="brisi"></td></tr>
</table>
</form>


znaci kada pozovem ovaj kod dobijem redom isbn od svake knjige i do nje check box. Kada obelezim i kliknem na brisi, ono je izbrise iz zapisa. Problem je u tome sto meni treba da pise ime knjige, a ne isbn. To sam resio tako sto sam umesto row[0] stavio row[1], i sada ispisuje ime knjige i do nje check box, ali sada nece da izbrise knjigu. Zasto?
Kod koji se poziva za brisanje je

<?php
$del_me = $HTTP_POST_VARS['del_me'];
if (count($del_me) >0)
{
foreach($del_me as $url)
{
$db=mysql_connect('localhost','root','sifra');
if(!$db)
{
echo "nece";
exit;
}
mysql_select_db('books');
$query="delete from books where isbn='$url'";
$result=mysql_query($query,$db);
}
}
else
echo 'No bookmarks selected for deletion';
?>

 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.verat.net.



+257 Profil

icon Re: Zasto nece da izbrise zapis?16.03.2005. u 10:34 - pre 232 meseci
Citat:
define: Ovako, ovaj script dobro radi ako se koristi row[0]
$url_array[$count] = addslashes($row[1]);
foreach ($url_array as $url)
echo "<tr><td>".htmlspecialchars($url)."</td>";
echo "<td><input type=checkbox name=\"del_me[]\" value=\"$url\"></td>";
znaci kada pozovem ovaj kod dobijem redom isbn od svake knjige i do nje check box. Kada obelezim i kliknem na brisi, ono je izbrise iz zapisa. Problem je u tome sto meni treba da pise ime knjige, a ne isbn. To sam resio tako sto sam umesto row[0] stavio row[1], i sada ispisuje ime knjige i do nje check box, ali sada nece da izbrise knjigu.

$query="delete from books where isbn='$url'";

U ala ga zakomplikova....

Obrati paznju da je u selectu isbn=$url, koji ti je dobio vrednost IMENA knjige umesto ISBN broja, tako da NE postoji ISBN sa imenom knjige. Imas dva resenja - ili da brises po imenu knjige (znaci where ime_knjige =$url) sto nije dobro resenje jer sta ako ima vise knjiga sa istim imenom a razlicitim ISBN-om? i drugo resenje da nalazis i IME, pa da ga ispisujes a u checkbox upisujes ISBN (to je ono pravo resenje). Sad, zbog toga ces morati da menjas kod koliko ja vidim.
Inace si ga mnogo zakomplikovao, zasto ne ispisujes u toku trazenja, tj. zasto prvo pravis niz necega pa onda za svaki element niza nesto drugo? Bolje bi bilo nesto (u tvom slucaju posto ne znam kako ti izgeda ceo kod) ovako:
Code:

 <form name=bm_table action="brisi.php" method=post>
<table width=300 cellpadding=2 cellspacing=0>
<?php
echo "<tr><td><strong>ime</strong></td>";
echo "<td><strong>brisi</strong></td></tr>";
 for ($count = 1; $row = mysql_fetch_row ($result); ++$count)
{
$url = addslashes($row[0]);
$ime = addslashes($row[1]);
 echo "<tr><td>".htmlspecialchars($ime)."</td>";
echo "<td><input type=checkbox name=\"del_me[]\" value=\"$url\"></td>";
echo "</tr>"; 
} ?>
<tr><td><input type="submit" value="brisi"></td></tr>
</table>
</form>

Ovo je sad na brzinu i verovatno nije tacno, ali si ga suvise zakomplikovao brojanjem i slicnim stvarima - postoji mysql_num_rows funkcija pomocu koje vidis da li ti mysql vraca nesto na osnovu upita, a ne ovako da ukoliko ne bude nicega u polju (nizu) kazes da nema zapisa...

I na kraju nigde ne vidim za zatvaras konekcije ka mysql bazi.... obrati paznju i na to.



Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

define

Član broj: 41934
Poruke: 288
*.beotel.net.



Profil

icon Re: Zasto nece da izbrise zapis?16.03.2005. u 11:29 - pre 232 meseci
prvo da se zahvalim na pomoci, zbog velikog rada ovih dana prevideo sam onu sitnicu...
ovu dosetku sam i ja imao i poradicu na njoj, a sto se tice zatvaranja mysql konekcije, negde sam procitao da ne moram da zatvaram.
Koju bi mi ti konekciju preporucio
mysql_pconnect
ili mysql_connect
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.verat.net.



+257 Profil

icon Re: Zasto nece da izbrise zapis?16.03.2005. u 12:45 - pre 232 meseci
Posto ne volim da drzim otvorene konekkcije ka bazi (npr da ne bi doslo do zasicenja) obicno koristim connect a ne pconnect i obavezno zatvaram sa close, i nadam se da na taj nacin oslobadjam memoriju :)
Sve u svemu, stvar je izbora...

Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

[es] :: PHP :: Zasto nece da izbrise zapis?

[ Pregleda: 2106 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.