Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Prawidłowe zapytanie wybierające dane
Forum PHP.pl > Forum > Przedszkole
zbysiu
Witam,
Jest sobie strona, pobierająca dane z mysql, korzystając z następującego kodu:

  1. $query = "SELECT *
  2. FROM testowa
  3. $wynik = mysql_query ($query, $connection);
  4. while ($row = mysql_fetch_array($wynik))
  5. {
  6. echo "<tr>";
  7. echo "<td>".$row["id"]."</td>";
  8. echo "<td>".$row["data"]."</td>";
  9. echo "<td>".$row["nr budynku"]."</td>";
  10. echo "<td>".$row["nr mieszkania"]."</td>";
  11. echo "<td>".$row["zgloszenie"]."</td>";
  12. echo "</tr>";


Żeby dostać się do strony dana osoba musi się zalogować, sesja jest przechowywana i prawidłowo wyświetlana: <?php echo $_SESSION['user_name'];?>
próbowałem zmodyfikować powyższe zapytanie:
  1. <?php $aaa = $_SESSION['user_name'];
  2. $query = "SELECT *
  3. FROM testowa
  4. WHERE uzytkownik = {$aaa}";
  5. $wynik = mysql_query ($query, $connection);
  6. while ($row = mysql_fetch_array($wynik))
  7. {
  8. echo "<tr>";
  9. echo "<td>".$row["id"]."</td>";
  10. echo "<td>".$row["data"]."</td>";
  11. echo "<td>".$row["wartosc1"]."</td>";
  12. echo "</tr>";
  13. }


Niestety nic się nie wyświetla, czy ta konstrukcja zapytania jest prawidłowa?
Z góry dzięki za pomoc.
jaslanin
1. nie powinno już się używać funkcji mysql_*
2. mysql jest w stanie zwrócić informacje że w zapytaniu wystąpił błąd i mniej więcej gdzie np.:
http://stackoverflow.com/questions/2104481...-pdo-exceptions
mmmmmmm
Brak apostrofów. Powinno być:
  1. WHERE uzytkownik='{$aaa}'
zbysiu
Dzięki serdeczne smile.gif
Przy okazji mam kolejne pytanie
Jest sobie petla while wybierajaca i wyświetlajaca dane.
  1. while ($row = mysql_fetch_array($wynik))
  2. {
  3. echo "<tr>";
  4. echo "<td>".$row["id"]."</td>";
  5. echo "<td>".$row["data"]."</td>";
  6. echo "<td>"."<input type=\"text\" name=\"edytuj\" value=\"echo $row["dane"]\" />""</input>"."</td>";
  7. echo "</tr>";
  8. }


O ile dodanie \ powoduje ladne wyświetlenie pola do wprowadzenia danych o tyle, z tym value chyba za bardzo zagmatwalem.
Chcialbym, zeby wyswietlone dane trafialy od razu do pol edycyjnych. Bylbym wdzieczny za wskazanie bledu.
XP'ek
hej nie lepiej zrobić

Kod
while ($row = mysql_fetch_array($wynik))
            {
            print "<tr><td>{$row["id"]}</td><td>{$row["data"]}</td><td><input type='text' name='edytuj' value='{$row["dane"]}' /></td></tr>";
            }



a jeśli chodzi o wysyłanie formularza kwestia jest czy chcesz wysyłać dane z jednego spisu edycji czy kilka wpisów na raz
zbysiu
Hej,
Moze od poczatku, jest sobie kod:
  1. if (isset($_POST['submit'])){
  2. $wyszukaj = ($_POST['wyszukaj']);
  3. $query = "SELECT * FROM testowa WHERE id='$wyszukaj'";
  4. $wynik = mysql_query($query, $connection);
  5. if (!$wynik) {
  6. die('Niepoprawne zapytanie: ' . mysql_error());
  7. }
  8. }


ktory wyswietla rekord z bazy danych, bazujac na id wpisanym w:
  1. <form action="strona.php" method="post">
  2. <?php
  3. echo '<table>
  4. <tr>
  5. <td>
  6. <input type="text" name="wyszukaj" maxlength="3" value="" /></input>
  7. </td>
  8. </tr>
  9. </table>';
  10. echo '<tr>
  11. <td colspan="2"><input type="submit" name="submit" value="wyszukaj" /></td>
  12. </tr>';
  13. ?>


nizej dane są wyświetlane (dzieki za pomoc tutaj smile.gif)
  1. while ($row = mysql_fetch_array($wynik))
  2. {
  3. print "<tr><td>{$row["id"]}</td><td>{$row["data"]}</td><td><input type='text' name='edytuj' value='{$row["dane"]}' /></td></tr>";
  4. }
  5. ?>


i dalej
chcialem ponizej akcji wyszukiwania dodac kod:
  1. if (isset($_POST['edytuj'])){
  2. $id = $wyszukaj;
  3. $dane = ($_POST['dane']);
  4. $query = "UPDATE testowa SET
  5. nr_budynku = '{$dane}'
  6. WHERE id = '{$id}'";
  7. $wynik = mysql_query($query, $connection);
  8. }


a w samej stronce dorzucic:
<form action="wy_ed.php" method="post">
<tr>
<td colspan="2"><input type="submit" name="edytuj" value="edytuj" /></td>
</tr>
</form>

Niestety dane w bazie nie są aktualizowane, ogolnie chcialbym, aby aktualizowal sie jeden wiersz bazy (jezeli zaktualizuje sie pojedyncza komorka dalej sobie jakos poradze). Dzieki za pomoc.
XP'ek
a więc sam pętla niech tworzy ci formularz

Kod
while ($row = mysql_fetch_array($wynik)){
print "<tr><td>{$row["id"]}</td><td>{$row["data"]}</td><td><form action='link-do-pliku-z-akcja-edycji' method='post'><input type='text' name='edytuj' value='{$row["dane"]}' /><input type='hidden' name='edycja_id' value='{$row["id"]}' /><input type='submit' value='zapisz zmiany' /></form></td></tr>";
}


dalej w pliku gdzie php ma dokonać zmiany

Kod
if (isset($_POST['edytuj'])){
$id = trim($_POST["edycja_id"]);
$dane = trim($_POST['edytuj']);
$query = "UPDATE testowa SET
nr_budynku = '{$dane}'
WHERE id = '{$id}'";
$wynik = mysql_query($query, $connection);



według mnie lepiej wysłać ID wpisu w formularzu ponieważ post'ując formularz jakoś id musisz przekazać wpisu który edytujesz smile.gif
zbysiu
Hej,
Dzieki za wsparcie

Aktualnie kod wyglada tak:
  1. if (isset($_POST['submit'])){
  2. $wyszukaj = ($_POST['wyszukaj']);
  3. $query = "SELECT * FROM testowa WHERE id='$wyszukaj'";
  4. $wynik = mysql_query($query, $connection);
  5. $dane= ($_POST['dane']);
  6. if (!$wynik) {
  7. die('Niepoprawne zapytanie: ' . mysql_error());
  8. }
  9. }
  10. if (isset($_POST['edytuj'])){
  11. $id = ($_POSST["edycja_id"]);
  12. $dane = ($_POST['dane']);
  13. $query = "UPDATE testowa SET
  14. dane = '{$dane}'
  15. WHERE id = '{$id}'";
  16. $wynik = mysql_query($query, $connection);
  17. }


+
  1. <form action="strona.php" method="post">
  2. <?php
  3. echo '<table>
  4. <tr>
  5. <td>
  6. <input type="text" name="wyszukaj" maxlength="3" value="" /></input>
  7. </td>
  8. </tr>
  9. </table>';
  10. echo '<tr>
  11. <td colspan="2"><input type="submit" name="submit" value="wyszukaj" /></td>
  12. </tr>';
  13. ?>
  14. </form>


+
  1. while ($row = mysql_fetch_array($wynik)){
  2. print "<tr><td>{$row["id"]}</td><td>{$row["data"]}</td><td><form action='strona.php' method='post'><input type='text' name='edytuj' value='{$row["dane"]}' /><input type='hidden' name='edycja_id' value='{$row["id"]}' /><input type='submit' value='zapisz zmiany' /></form></td></tr>";
  3. }


niestety nie zapisuje zmian w bazie
zbysiu
Ewentualnie - co w sumie by bardziej pasowalo - jezeli zapytanie wyswietli wiecej wierszy, to przy kazdym wierszu moglby sie znajdowac przycisk edycji kierujacy do nowej strony, na ktorej pola sa zdatne do edycji, a poczatkowe wartosci juz wpisane.
XP'ek
w kodzie masz błąd błąd jak masz
Kod
$id = ($_POSST["edycja_id"]);

powinno być
Kod
$id = ($_POST["edycja_id"]);


i powinno działać wink.gif
zbysiu
Hej,
Niestety nadal nie dziala.
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.