Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Update rekordów po zaznaczeniu checkbox
Kloucek
post 9.10.2008, 15:09:54
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.10.2008

Ostrzeżenie: (0%)
-----


Ok, pisze w przedszkolu bo chce być potraktowany jak ignorant i dostać w miarę idiotoodporne rozwiązanie winksmiley.jpg Jestem bardzo zielony w php i jest to mój pierwszy projekt.

Otoż chcę aby użytkownik wybrał sobie (za pomocą checkbox) które rekordy bazy go interesują. Skrypt ma zmienić wartość kolumny 'display' z '0' na '1' w przypadku gdy checkbox obok danego wiersza jest zaznaczony.

Po żmudnych poszukiwaniach udało mi się nakreślić taki kod:
Kod
<span id="intelliTxt"><pre class="alt2" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 466px;">$result = mysql_query("SELECT * FROM football");
$row = mysql_fetch_array( $result );
while($row = mysql_fetch_array($result)){
echo "<table border='1'><tr>";
echo "<td>".$row['id']."</td>";
echo "<td>".$row['team1']."</td>";
echo "<td> vs </td>";
echo "<td>".$row['team2']."</td>";
echo "<td> on </td>";
echo "<td>".$row['channel']."</td>";
echo "<td>".$row['date']."</td>";
echo "<td>".$row['time']."</td>";    
echo "<td><input type='checkbox' name=''check[" . $row['id'] . "]'  ></td></tr>";
foreach ( $_POST['check'] AS $id => $check ) {
     mysql_query("update football set display = 1 where id = $id");

}

}  
    
?>
<form name="send" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<tr>
<td colspan="9" align="center"><input type="submit" value="choose"  ></td>
</tr>
</form>
</table>


No i mam dwa problemy:
1. Pierwszy rekord bazy (id=1) wogóle się nie wyświetla, tabela zaczyna się dopiero od id =2
2. Po zaznaczeniu wybranych checkbox'ów i wduszeniu 'send' strona się szybciutko odświeża, ale nie robi żadnych zmian w tabeli...

Bardzo proszę jakąś szybką i w miarę (jak na moje możliwości rozumienia) prostą odpowiedź. Robota stoi a deadline już jutro (to szkolny projekt)
Go to the top of the page
+Quote Post
topp
post 9.10.2008, 20:25:04
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 3.10.2008

Ostrzeżenie: (0%)
-----


No to po kolei:

1. Pobierasz pierwszy wiersz z wyników i nic z nim nie robisz.. O tu:
  1. <?php
  2. $row = mysql_fetch_array( $result );
  3. while (...)
  4. ?>



2. Masz błąd w składni:
  1. <?php
  2. echo "<td><input type='checkbox' name=''check[" . $row['id'] . "]'  ></td></tr>";
  3. ?>

Zauważ, że po name masz 2 apostrowy, a zatem przypisujesz parametrowi pusty ciąg znaków, a nie, jak byś chciał, np. check[1]

Ponadto:
pętla foreach jest u Ciebie wywoływana wewnątrz pętli while, a zatem wykonuje się tyle razy, ile masz wierszy wyników zapytania. Po co? smile.gif Wystarczy raz. Wyrzuć ją poza pętlę while.

Ten post edytował topp 9.10.2008, 20:27:57
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 14:10