Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Błędny kod i racjonalne rozwiązanie...
Forum PHP.pl > Forum > Przedszkole
Day Walker
Witam!

Mam problem z UPDATE w mysql...
Chce by mnie z adresu edytuj.php?show=$id ACTION po wykonaniu poniższego kody przekierowywał na adres edytuj.php?edit=$id (gdzie edytowałby już dane w bazie)
Mam kod :

Kod
<html>
<head></head>
</head>
<body>
<?
$connection = mysql_connect("localhost","root","pass");
$db = mysql_select_db("news", $connection);
$sql = mysql_query("SELECT * FROM news WHERE id='$id'");
while ($row = mysql_fetch_array($sql)) {
$id = $row["id"];
$tytul = $row["tytul"];
$tresc = $row["tresc"];
$dodal = $row["dodal"];


echo '<form action="edytuj.php?edit='.$id.'" method="post">';
echo '<p align="center">Tytul:<br>';
echo '<input type="text" name="odsylacz" value="'.$tytul.'"/>';
echo '</p>';
echo '<p align="center">
       tresc:<br>
     <input type="text" name="nazwamaskujaca" value="'.$tresc.'"/>
     </p>';
echo '<p align="center">Nick dodającego:
     <br>
     <input type="text" name="nickdodajacego" value="'.$dodal.'"/>
     <br>
     <br>
     <input name="Wyślij link!" type="submit" id="Wyslij news!" value="Wyślij news!" />
     </p>';
echo '</form>';
?>
</body>
</html>


I nie wiem ale pokazuje mi błąd w ostatniej linijce... błąd brzmi:

Cytat
Parse error: parse error, unexpected $end in C:\Program Files\WebServ\httpd\tutorial\admin\edytuj.php on line 34


Jeśli można prosić o pomoc to proszę smile.gif

Pozdro!
cornholio666
domknij pętle WHILE
Day Walker
No okej...

Ale teraz pytanie ...

Dlaczego mi w formularzu nie wyświetla danych do edycji ?
nospor
  1. <?php
  2. $sql = mysql_query("SELECT * FROM news WHERE id='$id'");
  3. ?>

No a teraz powiedz mi gdzie ty te $id ustawiasz? Bo ja nigdzie nie widze. nie uwazasz, ze napoczatky powinno byc tak:
  1. <?php
  2. $id=$_GET['edit'];
  3. $sql = mysql_query("SELECT * FROM news WHERE id='$id'") or die(mysql_error());
  4. ?>

?

i uzywaj wlasciwego bbcode
Day Walker
No dobra ja się poddaje tongue.gif

Kto mi powie co dokładnie robię źle:

Plik Edytuj.php

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5.  
  6. <?
  7.  
  8. $connection = mysql_connect("localhost","root","pass");
  9. $db = mysql_select_db("linki", $connection);
  10. $id=$_GET['edit'];
  11. $sql = mysql_query("SELECT * FROM linki WHERE id='$id'");
  12. while ($row = mysql_fetch_array($sql)) {
  13. $id = $_POST["id"];
  14. $link = $_POST["link"];
  15. $nazwa = $_POST["nazwa_linku"];
  16. $dodal = $_POST["dodal"];
  17. }
  18. echo '<form action="edytujlink.php?edit="'.$id.'" method="post">';
  19. echo '<p align="center">Odsyłacz:<br>'; 
  20. echo '<input type="text" name="odsylacz" value="'.$_POST['link'].'"/>';
  21. echo '</p>';
  22. echo '<p align="center">
  23.  Nazwa maskująca:<br>
  24.  <input type="text" name="nazwamaskujaca" value="'.$_POST['nazwa_linku'].'"/>
  25.  </p>';
  26. echo '<p align="center">Nick dodającego: 
  27.  <br>
  28.  <input type="text" name="nickdodajacego" value="'.$_POST["dodal"].'"/>
  29.  <br>
  30.  <br>
  31.  <input name="Wyślij link!" type="submit" id="Wyślij link!" value="Wyślij link!" />
  32.  </p>';
  33. echo '</form>';
  34.  
  35. ?>
  36. </body>
  37. </html>


A teraz plik który bedzie to "trawił" o nazwie edytujlink.php

  1. <?php
  2. $con = mysql_connect("localhost","root","pass");
  3. if (!$con)
  4. {
  5. die('Nie mogę się połączyć: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("linki", $con);
  9. $sql="UPDATE linki SET link='$link', nazwa_linku='$nazwa', dodal='$dodal' WHERE id='$id'";
  10.  
  11. if (!mysql_query($sql,$con))
  12. {
  13. die('Błąd: ' . mysql_error());
  14. }
  15. echo "Link został pomyślnie zedytowany :) <br>";
  16.  
  17. ?>
  18. <?
  19. echo '<a href="http://localhost/tutorial/index.php">Wróć do strony głównej</a>';
  20. echo '<br>';
  21. ?>


I nie wiem ale mi nie wywołuje konkretnego ID sad.gif

~nospor - pomóż mi...

Dzięki!
Pozdrawiam!
nospor
Cytat
I nie wiem ale mi nie wywołuje konkretnego ID
To znaczy co? w edytujlink ci nie robi update? No a czemu sie dziwsz? Przeciez znowu nie okresliles zmiennej $id

A tam we wczesniejszym co ci mowilem bys napisal $id=$_GET['edit'] to jesli ci to nadal nie dziala to powinno byc $id=$_GET['show'], bo ty raz masz parametr show w url a raz edit wiec sobie dostosuj co jest co.
Day Walker
Ale to nie działa... Jesli w pliku edytuj.php wypełnie formularz to w pasku adresu jest .../edytuj?show=1 a jak nacisne zeby wysłało formularz to w adresie juz nie ma tego id...

Bardzo potrzebuje ten skrypt edycji...

Acha i jeszcze mi w formularzu nie wyswietla w "Value" danych zeby zobaczyć co i gdzie sie edytuje....

Pomoooocy smile.gif

Pozdrawiam!
cornholio666
Pokaz poprawiony skrypt to bedzie może łątwiej...
Day Walker
Skrypt masz wyżej... oby dwa pliki. Nic nie poprawiłem bo nawet nie wiem w czym błąd sad.gif

[...]

Moze znacie jakieś gotowe rozwiązania ? Jesli nie wiecie to chociaż poprawcie mi ten kod bo ja już nie mam sił sad.gif
cornholio666
Cytat
Nic nie poprawiłem bo nawet nie wiem w czym błąd


Nie dziwie się że nie działa jak nie poprawiłeś. Nospor podał ci rozwiązanie, przeczytaj jego posty jeszcze raz
Day Walker
cornholio666 ale to co on powiedział nie działa... Czy ktoś może mi napiosać jak powinno być poprawnie ? Bez zbędnego nabijania postów ? Wkoncy to jest forum o PHP a nikt nie umi pomóc sad.gif

Prosze was!

Przyjaciele mam teraz taki kod:

  1. <?
  2. include("config.php");
  3. $id=$_GET['id'];
  4. $link=mysql_query("SELECT * FROM linki WHERE id='$id'");
  5. $result = mysql_query ($link);
  6. while($row=mysql_fetch_array($link))
  7. {
  8. echo '<form name="name" action="edytuj2.php?id='.$row['id'].'" method="post">
  9. Tytuł<br>
  10. <input name="link" type="text" id="link" value="'.$row['link'].'" size="100%" />
  11. <br>
  12. Treść<br>';
  13. echo '<textarea name="nazwa_linku" cols="100%" rows="11" wrap="VIRTUAL" id="nazwa_linku">'.$row['nazwa_linku'].'</textarea>
  14. <br>';
  15. echo 'Autor<br>
  16. <input name="dodal" type="text" id="dodal" value="'.$row['dodal'].'" size="50%" />
  17. <input name="submit" type="submit" value="wyslij">';
  18. echo '</form>';
  19. }
  20. ?>

w nim wsio jest chyba ok...

a o to kod który ma upldate wykonywać...

  1. <?
  2. $id = $_POST['id'];
  3. $link = $_POST['link'];
  4. $nazwa = $_POST['nazwa_linku'];
  5. $dodal = $_POST['dodal'];
  6.  
  7. include("config.php");
  8. $id=$_GET['id'];
  9. $query = "UPDATE 'linki' SET 'link' = '$link', 'nazwa_linku' = '$nazwa', 'dodal' = '$dodal' WHERE 'id' = '$id'";
  10. $result = mysql_query($query);
  11. echo "Record Updated";
  12.  
  13. ?>


Nie pokazuje zadnego błędu ale nie mam w bazie zaaktualizowanych danych sad.gif Tym razem jestem za blisko zeby odpuścić smile.gif

Pomoicy!
mickula
  1. <?
  2. $id = $_GET['id'];
  3. $link = $_POST['link'];
  4. $nazwa = $_POST['nazwa_linku'];
  5. $dodal = $_POST['dodal'];
  6.  
  7. include("config.php");
  8. $id=$_GET['id'];
  9. $query = "UPDATE 'linki' SET 'link' = '$link', 'nazwa_linku' = '$nazwa', 'dodal' = '$dodal' WHERE 'id' = '$id'";
  10. $result = mysql_query($query);
  11. echo "Record Updated";
  12.  
  13. ?>


Mimo, że podałeś "method=post" zmienna $id jest przesyłana w adresie (atrybut action) dlatego musisz ją odebrać GET-em.
Day Walker
Zaskocze Cie ale nadal nic nie aktualizuje sad.gif
nospor
no ale masz bledy w zapytaniu. powinno byc:
  1. <?php
  2. $query = "UPDATE linki SET link = '$link', nazwa_linku = '$nazwa', dodal = '$dodal' WHERE id = '$id'";
  3. ?>
Czemu wy zawsze ty ciapkow tak sie czepiacie? Gdzie wyczytaliscie ze one musza byc, kiedy nie mogą? Jak juz jakies powinny byc to powinny to byc ``

A na przyszlosc pisz tak:
  1. <?php
  2. $result = mysql_query($query) or die ('zapytanie: '.$query.'---blad'.mysql_error());
  3. ?>
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.