[php/mysql] submit ma ostatnia wart. Jak to poprawic?

0

Witam,
krotki skrypt do wysylania newsleterow i zapetlilem sie przy usuwaniu kontaktow. Ponizszy fragment dziala dobrze, ale chcialem by przy kazdym buttonie usuń ort! konieczności wciskania radio - jednak po zmianie input z radio na hidden wskazuje mi zawsze ostatnia wartosc obojetnie ktory button kliknac (przeleci wszystkie rekordy i zatrzymuje sie na ostatnim). W ktorym mam byka ? ; P

<?php
.
.
$query='SELECT * FROM kontakty ORDER BY nazwa ASC;';
$result = mysql_query($query);
echo '<table align="center"><tr><td><center>Lp</center></td><td><center>Adres e-mail</center></td><td><center>Imię i nazwisko / nazwa</center></td><td ><center>Akcja</center></td></tr>';
for($i=0; $i<mysql_num_rows($result);$i++)
{
$row=mysql_fetch_row($result);

echo '<tr><td><form method="POST" action="?p=del_kont">
<input type="radio" name="kontakt" value='.$row[0].' >
</td><td style="border: 1px solid #CCCCCC;"><input type="hidden" name="kontakt2" value='.$row[0].'>'.$row[0].' </td>
<td style="border: 1px solid #CCCCCC;">'.$row[1].'</td><td><input type="submit" value="usuń!" class="przycisk"></td></tr>';
}
echo '</table><br>';	    
?>
0

Np.
<input type=submit name='submit_$id' ... >
Wyslany zostanie ten przycisk, ktory zostal wcisniety. Czyli lecisz przez tablice $_POST/$_GET i szukasz wartosci zaczynajacej sie na submit - a pozniej rozdzielasz stringa i masz id.

Ja zazwyczaj robie jeszcze inaczej:

while(...)
  echo "<input type='checkbox' name='delete[]' value='$id'>";
echo "<input type='submit' value='Usun'>";

...

//obsluga powyzszego
$ids = implode(",", $_POST['delete']);
//$id zawiera teraz liste id do usuniecia poprzedzielanych przecinkami, idealne do takiego zapytania:
'delete from tabela where id in($id)'

Zaznaczasz, ktore chcesz usunac, jeden przycisk usun i leca hurtem :)

0

tez mam usuwanie hurtem jednym buttonem, tu chcialem miec przy kazdym adresie w ort! guzik do usuwania. Tak jak pisales tez robilem, tylko ze guzik byl wtedy opisany jako adres@emaildo.kasacji a chce zeby sie nazywal "Usuń!".

Cos mam ort! w petli - kombinowalm juz z ID rekordow ale wychodzi na to samo.

0

Nie rozumiem ani jednego, ani drugiego. Co ma napis na guziku do tego co napisalem? I podaj kod, z ktorym kombinowales, bo na 'nietak' to wiesz co mozna... a jak nie wiesz, to lepiej ;)

0

Chodzi o to ze jak dam name guzika to wyglada to tak:
user image

Chce zeby na guziku bylo napisane usun :)

co do kodu:

<?php
include ("baza.php");
include ("login.php");
$polaczenie = new BAZA;
echo "Poniżej widoczna jest lista adresów które można usunąć.<BR><BR>";

$query='SELECT * FROM kontakty ORDER BY nazwa ASC;';

$result = mysql_query($query);
echo '<table align="center"><tr><td><center>Lp</center></td><td><center>Adres e-mail</center></td><td><center>Imię i nazwisko / nazwa</center></td><td ><center>Akcja</center></td></tr>';
for($i=0; $i<mysql_num_rows($result);$i++){
$row=mysql_fetch_row($result); //$row=mysql_fetch_row($result);
$mail = $row[0];
echo '<tr><td><form method="POST" action="?p=del_kont">

</td><td style="border: 1px solid #CCCCCC;"><input type="hidden" name="kontakt2" value='.$row[0].'>'.$row[0].' </td>
<td style="border: 1px solid #CCCCCC;">'.$row[1].'</td><td><input name="kontakt" type="submit" value='.$row[0].' class="przycisk"></td></tr>';

}
echo '</table><br>';	    
?>

O to chodzilo ? Wysylam postem name="kontakt"

0

a dlaczego nie uzyc normalnego linka w stylu:

?p=del_kont&k=jakismail@cos.pl

nie trzeba wtedy zadnego formularza, po prostu link [Usun] czy nawet jakis ladny butonik

0

Ale przeciez to value decyduje co na guziku napisane, nie name... Zle podstawiasz w kodzie. Ja napisalem:
<input type="submit" name="submit_$id" value="Usun">
Ty piszesz co innego.

//edit
PS. adres mail to u Ciebie identyfikator? To nie jest najlepszy pomysl zazwyczaj...

0

wlasnie, zmieszales name z value, tak czy siak nie widze jak mialo by to dzialac w ten sposob? jak formularz ma to wyslac, skoro on razem z nim wysle Ci wszystko? imo te rozwiazanie jest pod gorke jezeli chodzi o kasowanie tylko i wylacznie jednego wpisu

0

Nie wysle wszystkiego, tylko ten przycisk, ktory jest wcisniety. Ja, jak napisalem preferuje inne rozwiazania, ale skoro autor upiera sie przy takim, to tez mozna.

0

przepraszam, zle przeczytalem linijke z <form>...
imo rozwiazanie nadal jest niefajne, uzylbym mojego :P
po co zaprzegac cale form na jeden guzik? takie nieeleganckie, ah... :P

0

Dzieki za podpowiedzi - juz smiga. Zalozenia sa takie ze musi to byc wysylane guzikiem, linki z GETem odpadaja, poprawilem w zasadzie tylko <form> - teraz jest osobny dla kazdego submita i jak johny_bravo pisal identyfikatorem jest od teraz id maila a nie sam email.

odchudzony kod:

$query='SELECT * FROM kontakty ORDER BY nazwa ASC;';
$result = mysql_query($query);
echo '<table align="center"><tr><td><center>Lp</center></td><td><center>Adres e-mail</center></td><td><center>Imię i nazwisko / nazwa</center></td><td><center>Akcja</center></td></tr>';
for($i=0; $i<mysql_num_rows($result);$i++){
    $row=mysql_fetch_row($result);
    $mail = $row[0];
    echo '<tr><td><form method="POST" action="?p=del_kont">
          <input type="hidden" name="id_maila" value='.$row[7].'></td>
          <td style="border: 1px solid #CCCCCC;">'.$row[0].'</td>
          <td style="border: 1px solid #CCCCCC;">'.$row[1].'</td>
          <td><input type="submit" class="przycisk"></form></td></tr>';
}
echo '</table><br>';	 

1 użytkowników online, w tym zalogowanych: 0, gości: 1