Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Edycja pola w tabeli
Forum PHP.pl > Forum > Przedszkole
Alakazu
Witam!
Więc znalazłem na internecie skrypt rejestracji i logowania, żeby lepiej poznać php postanowiłem go sam rozbudować. Dodałem miejsce w tabeli o nazwie imie i napisałem skrypt, który ma edytować imię danego użytkownika jednak tego nie robi. Siedziałem godzinę nad tym i nie mogę znaleźć rozwiązania. Mam nadzieje, że u was znajdę pomoc.
CODE
<?
session_start();

include("config.php");

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>Strona po zalogowaniu</title>
</head>
<?php if(isset($_SESSION['zalogowany']))
{
$login = $_SESSION['zalogowany'];
$zapytanie = "SELECT imie FROM users WHERE login='$login'";
$wynik = mysql_query($zapytanie);
$row = mysql_fetch_array($wynik);?>
<form method="post" action="<? echo $PHP_SELF;?>" METHOD=POST enctype="multipart/form-data">
<input type="text" name="imie" value="<? echo $row['imie'];?>" maxlength="15"><br>
<input type="hidden" name="send" value="1">
<input type="submit" value="Wyślij"><br>
</form>
<?
}
else
{
Header('location: logowanie.php');
exit;
}

if ($_POST["send"] == 1){
$imie1 = $_POST['imie'];
$zapytanie = "INSERT INTO `users` (`imie`) VALUES ('$imie1')";
echo 'Udalo sie!';
exit;
}


?>
sadistic_son
No i nic dziwnego, że nie wysyła skoro nigdzie programowi tego nie każesz:
W Twoim skrypcie ułożyłeś tylko zapytanie sql dodające do tabeli nowy rekord z imieniem ale nigdzie go nie wywoływałeś - stąd dodałem mysql_query($zapytanie);

No i jeszcze ważna sprawa.... Jeśli dobrze rozumiem to chcesz edytować istniejące rekordy, tak? W takim razie zamiast INSERT INTO musisz użyć UPDATE.
Przerobiłem Twój skrypt tak aby realizował podstawowe zadanie:
  1. <?
  2.  
  3. include("config.php");
  4.  
  5. ?>
  6. <html>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  9. <title>Strona po zalogowaniu</title>
  10. </head>
  11. <?php if(isset($_SESSION['zalogowany']))
  12. {
  13. $login = $_SESSION['zalogowany'];
  14. $zapytanie = "SELECT imie,id FROM users WHERE login='$login' LIMIT 1";
  15. $wynik = mysql_query($zapytanie);
  16. $row = mysql_fetch_array($wynik);?>
  17. <form method="post" action="<? echo $PHP_SELF;?>" METHOD=POST enctype="multipart/form-data">
  18. <input type="text" name="imie" value="<? echo $row['imie'];?>" maxlength="15" /><br>
  19. <input type="hidden" name="id" value="<? echo $row['id']; ?>" />
  20. <input type="submit" name="submit_send" value="Wyślij" /><br>
  21. </form>
  22. <?
  23. if (isset($_POST['submit_send'] && isset($_POST['imie']) && $_POST['imie']!='' && isset($_POST['id']) && $_POST['id']!=""){
  24. $imie1 = $_POST['imie'];
  25. $id=$_POST['id'];
  26. $zapytanie = "UPDATE users SET imie='".$imie1."' WHERE id=".$id;
  27. mysql_query($zapytanie);
  28. echo 'Udalo sie!';
  29. }
  30. }
  31. else
  32. {
  33. Header('location: logowanie.php');
  34. }
  35. ?>
Pole typu hidden z wartoscia 1 jest zbedne. Zamiast tego przesylamy id uzytkownika edytujacego dane. Warunek logiczny sprawdza czy nacisnieto przycisk wysylania formularza, czy wypelniono imie i czy jest przeslane id. Jesli to wszystko jest spelnione dopiero wtedy edytuje odpowiedni rekord zamiast dodawać nowy zawierający tylko samo imie. No i cały warunek musi znaleźć się wewnątrz warunku sprawdzającego czy user jes w ogole zalogowany.
Alakazu
Dzięki za pomoc jednak w twoim skrypcie wyskakuje błąd:
Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ',' or ')' in D:\Apache\htdocs\edycjaprofilu.php on line 24
Pomożesz?
PawelC
To, w 24 linii:
  1. if (isset($_POST['submit_send'] && isset($_POST['imie']) && $_POST['imie']!='' && isset($_POST['id']) && $_POST['id']!=""){

Zamień na:
  1. if (isset($_POST['submit_send']) && isset($_POST['imie']) && $_POST['imie']!='' && isset($_POST['id']) && $_POST['id']!=""){

Brakowało po if(isset($_POST['submit_send'], nawiasu )
Alakazu
Dzięki wielkie! winksmiley.jpg Nie chce zakładać następnego tematu więc te pytanie zadam tu. Jest sposób w php by po kilku sekundach przenieść na inną stronę? W HTML wiem, że istnieje taka opcja ale trzeba umieszczać metatag, który w środku pliku nie pasuje.
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.