[ ramonakkkk @ 09.11.2005. 14:47 ] @
Htela bih da napravim php stranu koja bi bila namenjena cenzurisanju pristiglih poruka pre njihovog objavljivanja na sajtu. Poruke koje su za cenzuru zelim npr da obrisem. Posavila sam <input> u petlju, ali je problem u tome sto on stalno brise poslednju poruku, a ne onu koju mu ja odredim. Ne znam gde gresim.

Hvala.

Code:
<form action='listamat.php' method='post' enctype='multipart/form-data' name='form1'> <?
include ('connect.php');

function check_mysql()
{
   if(mysql_errno() >>0)
  {
   die("<r> mysql error" . mysql_errno() . ": " . mysql_error());
   } 
}
if(!isset($id))
{
$id=0;
$ime="";
$poruka="";
$datum="";
}
}
if (isset($delete))
{
$query="delete from maturanti where id=$id";
$result=mysql_query($query);
check_mysql();
$ime="";
$poruka="";
$datum="";
    
}


$query=mysql_query("select * from maturanti order by id desc"); 
echo "<table>";

while ($row=mysql_fetch_array($query))
{
$ime="$row[1]";
$poruka="$row[2]";
$datum="$row[3]";
$id=$row[0];



echo " <tr class=\"unnamed1\"><td><strong>$row[3]&nbsp;&nbsp;&nbsp;$row[1]</strong>($row[0])<br>$row[2]<input type='hidden' name='id' value='$id'><input name='delete' type='Submit' value='obrisi'><br><br></td></tr>";

        
    }
echo "</table>";
?></form>


[Ovu poruku je menjao noviKorisnik dana 09.11.2005. u 16:48 GMT+1]
[ SmilieBG @ 09.11.2005. 15:25 ] @
probaj umesto:

echo " <tr class=\"unnamed1\"><td><strong>$row[3]&nbsp;&nbsp;&nbsp;$row[1]</strong>($row[0])<br>$row[2]<input type='hidden' name='id' value='$id'><input name='delete' type='Submit' value='obrisi'><br><br></td></tr>";

da stavis:

echo "id = ".$id;
itd.


Mada mislim da je greska u:

<input type='hidden' name='id' value='$id'>

i da umesto $id treba da stavis $row[0]

Poz,
Sale
[ jablan @ 09.11.2005. 15:41 ] @
ID ne treba da ti bude value nevidljivog inputa, već submit buttona. Hidden polje ti ne treba uopšte.

P.S. Koristi code tagove.
[ ramonakkkk @ 09.11.2005. 19:21 ] @
Hvala na brzom odgovoru, ali ne pomaze...bar ne za sada.

1.
Citat:
jablan: ID ne treba da ti bude value nevidljivog inputa, već submit buttona. Hidden polje ti ne treba uopšte.
>> U ovom slucaju ne radi brisanje uopste. Ako u submit buttom value stavis id onda je to natpis na dugmetu, ali ne resava problem

2.
Koristi code tagove.

>>Kako?

________________________

3. [quote]SmilieBG: probaj umesto:

echo " <tr class=\"unnamed1\"><td><strong>$row[3]&nbsp;&nbsp;&nbsp;$row[1]</strong>($row[0])<br>$row[2]<input type='hidden' name='id' value='$id'><input name='delete' type='Submit' value='obrisi'><br><br></td></tr>";

da stavis:

echo "id = ".$id;
itd.

>>nije mi bas jasno kako ovo da izvedem.

4. Mada mislim da je greska u:

<input type='hidden' name='id' value='$id'>

i da umesto $id treba da stavis $row[0]
>> Ne pomaze.


Pozdrav od Anite
[ SmilieBG @ 09.11.2005. 19:45 ] @
@jablan - to ne moze, mora da ima hidden, da bi prenela _sta_ da brise, prema tome, ostavi to hidden polje.

A ono na sta sam mislio, jeste da umesto:

Code:

$ime="$row[1]";
$poruka="$row[2]";
$datum="$row[3]";
$id=$row[0];

echo " <tr class=\"unnamed1\"><td><strong>$row[3]&nbsp;&nbsp;&nbsp;$row[1]</strong>
($row[0])<br>$row[2]<input type='hidden' name='id' value='$id'><input name='delete' type='Submit' value='obrisi'><br><br></td></tr>";


stavis, bukvalno sledece samo:

Code:

echo "id = ".$row[0]."<br>";
echo "ime = ".$row[1]."<br>";
echo "poruka = ".$row[2]."<br>";
echo "datum = ".$row[3]."<br>";


na ovaj nacin, prvo proveris da dobijas podatke koji tebi trebaju! Ako u ovom slucaju vidis sve sto treba da vidis, onda radis sledece (umesto prvog koda, stavis sledece):

Code:

echo "
<tr class=\"unnamed1\">
       <td><strong>$row[3]&nbsp;&nbsp;&nbsp;$row[1]</strong>
       ($row[0])<br>$row[2]<input type='hidden' name='id' value=$row[0]>
       <input name='delete' type='Submit' value='obrisi'><br><br></td></tr>";


Primeti, da sam samo promenio $id u $row[0]

Ukoliko ne dobijes u prvom koraku zeljene rezultate, javi... posto je onda negde drugde greska ;)

Poz,
Sale
[ ramonakkkk @ 09.11.2005. 20:44 ] @
Ne radi ni dalje. Ono sto si napisao pomaze za resavanje, jer vidis vrednosti, ali problem je na nekom drugom mestu. Problem je u tome da on iz baze iz nekog svog razloga brise poslednji red, mozda je razlog u tome sto se on tu zaustavlja. Mozda bi resenje bilo da se odgovarajuci ID trazi ponovo u bazi, i da se ponovo pozicionira neposredno pre brisanja. Pokusala sam to da izvedem, ali mi nesto ne ide.
[ SmilieBG @ 09.11.2005. 21:55 ] @
sta radis u ovoj skripti: listamat.php (ona koju pozivas na submit dugme)?

Poz,
Sale
[ ramonakkkk @ 09.11.2005. 22:00 ] @
TO je isti taj script. Vraca se na isti file.
[ SmilieBG @ 09.11.2005. 22:44 ] @
eh, sta umor ucini od coveka :)

Malo sam prepravio, ali nemam trenutno nijedan php editor instaliran, pa je vrlo moguce da ima sintaksickih gresaka negde :(

Code:

<?

echo "<form action= $_SERVER['PHPSELF'] method='post' enctype='multipart/form-data'>";

include ('connect.php');

function check_mysql()
{
   if(mysql_errno() >>0)
   {
       die("<r> mysql error" . mysql_errno() . ": " . mysql_error());
   } 
}

if(!isset($GET['$id']))
{
    $id=0;
    $ime="";
    $poruka="";
    $datum="";
}

if ($GET['delete'] = 'da')
{
    $query="delete from maturanti where id=$GET['$id']";

        // savet!! obrisi kometar sledeceg reda, a $result i check_mysql stavi u komentar, pa jednom tako pokreni skriptu
        // echo $query;

    $result=mysql_query($query);
    check_mysql();

    echo "<a href = 'listamat.php'>Nazad</a>";
    exit;
}


$query=mysql_query("select * from maturanti order by id desc"); 
echo "<table>";

while ($row=mysql_fetch_array($query))
{

echo "
<tr class=\"unnamed1\">
    <td>
    <strong>$row[3];$row[1]</strong>($row[0])
    <br>$row[2]
    <input type='hidden' name='id' value='row[0]'>
    <input type='hidden' name='delete' value='da'>
    <input name='delete' type='Submit' value='obrisi'>
    <br><br>
    </td>
</tr>";
}

echo "</table></form>";

?>


Poz,
Sale

[Ovu poruku je menjao SmilieBG dana 09.11.2005. u 23:49 GMT+1]
[ noviKorisnik @ 09.11.2005. 23:32 ] @
Problem je bio što se sve nalazilo u jednom formularu, sa mnogo Submit dugmadi na kojima piše nešto o brisanju, i sa mnogo skrivenih inputa različitih vrednosti koji dele isto ime.

I - šta se dešava kada se prosledi formular? ... Prepozna se poslednji definisani hidden input i briše se ono što mu odgovara.

Da bi to funkcionisalo ovako kako stoji, treba umesto jednog formulara za sve da se napravi po jedan formular za svaku kombinaciju hiddena i submita. To nije teško, zar ne?
Code:
<form action='listamat.php' method='post'>
<input type='hidden' name='id' value='$id' />
<input name='delete' type='Submit' value='obrisi' />
</form>


Ono što je jablan predlagao radi - jedino što nije intuitivno gledati dugme s nekim brojem - "ako klikneš na broj, nestaće poruka" ;-)

Naravno, odradio bih to na sasvim treći način, koje omogućava da se izaberu poruke za brisanje i da se jednim klikom na submit odradi brisanje izabranih poruka. Onda treba samo jedno submit dugme, a umesto hiddena koriste se hiddeni s imenom id[].

Ovo je u petlji
Code:
<input type='checkbox' name='id' value='$id' />

A ovo u formularu van petlje
Code:
<input name='delete' type='Submit' value='obrisi' />


Proces brisanja...
Code:
if ($_SERVER ['REQUEST_METHOD'] == 'POST' && isset ($_POST ['delete']) && isset ($_POST ['id']))
{
    foreach ($_POST ['id'] as $id)
    {
        $query="delete from maturanti where id=$id";
        $result=mysql_query($query);
        check_mysql();
    }
}


... i još nešto... potrudi se da isključiš register_globals i prilagodi tome skripte - čuva od gomile bočnih efekata.
[ jablan @ 10.11.2005. 08:39 ] @
Citat:
noviKorisnik: Ono što je jablan predlagao radi - jedino što nije intuitivno gledati dugme s nekim brojem - "ako klikneš na broj, nestaće poruka" ;-)

Užas... Skroz sam ispao iz fazona...

Da probam da se iskupim:
Code:

<form>
<input type="hidden" name="val">
<?php
if (isset($_REQUEST['val']))
  echo $_REQUEST['val']. " <br />\n";


for ($i = 0; $i < 10; $i++) {
  echo "text$i <input type=submit onclick=\"val.value=$i\" value=\"delete\"> <br/>\n";
}
?>
</form>
[ k0nj!na @ 10.11.2005. 13:43 ] @
Da si napisao ovo:

Code:

<form>
<?php
if (isset($_REQUEST['delete']))
  echo $_REQUEST['delete']. " <br />\n";

for ($i = 0; $i < 10; $i++) {
  echo "text$i <input type=submit onclick=\"this.value=$i\" value=\"delete\"> <br/>\n";
}
?>
</form>


iskupio bi se. Ovako ništa.. :)
[ ramonakkkk @ 10.11.2005. 15:53 ] @
Havala na pomoci!!! Uspela sam. Najvise mi je pomogla poruka od noviKorisnik. Svaka cast.


Znala sam da je neka sitnica u pitanju, ali zaista mi pomoc puno znaci. Sada dosta stvari mogu da unapredim zahvaljujuci ovome.

I drugi deo sugestije od NK je jako koristan, mozda cu ga upotrebiti bas u tom obliku u kombinaciji sa jos jednim ili dva radio buttona za prikazivanje ili ne prikazivanje poruka.

Hvala svima jos jednom!!!

Pozdrav od Anite