Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Prawidłowe zapytanie wybierające dane
-zbysiu-
post
Post #1





Goście







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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


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

Ten post edytował jaslanin 2.11.2012, 19:43:58
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Brak apostrofów. Powinno być:
  1. WHERE uzytkownik='{$aaa}'
Go to the top of the page
+Quote Post
-zbysiu-
post
Post #4





Goście







Dzięki serdeczne (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
XP'ek
post
Post #5





Grupa: Zarejestrowani
Postów: 263
Pomógł: 9
Dołączył: 3.05.2009
Skąd: Wroc

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


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

Ten post edytował XP'ek 3.11.2012, 12:09:03
Go to the top of the page
+Quote Post
-zbysiu-
post
Post #6





Goście







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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
XP'ek
post
Post #7





Grupa: Zarejestrowani
Postów: 263
Pomógł: 9
Dołączył: 3.05.2009
Skąd: Wroc

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


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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował XP'ek 3.11.2012, 13:45:31
Go to the top of the page
+Quote Post
-zbysiu-
post
Post #8





Goście







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
Go to the top of the page
+Quote Post
-zbysiu-
post
Post #9





Goście







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.
Go to the top of the page
+Quote Post
XP'ek
post
Post #10





Grupa: Zarejestrowani
Postów: 263
Pomógł: 9
Dołączył: 3.05.2009
Skąd: Wroc

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


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ć (IMG:style_emoticons/default/wink.gif)

Ten post edytował XP'ek 3.11.2012, 14:23:04
Go to the top of the page
+Quote Post
-zbysiu-
post
Post #11





Goście







Hej,
Niestety nadal nie dziala.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 4.10.2025 - 13:54