Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Update rekordów po zaznaczeniu checkbox
Forum PHP.pl > Forum > Przedszkole
Kloucek
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)
topp
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.