Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL] Problem z rejestracją
Forum PHP.pl > Forum > Bazy danych > MySQL
guzior
Napisałem sobie skrypt PHP rejestracji z połączeniem do bazy danych MySQL i z jakiegoś powodu podczas logowania pisze że dane wpisane do formularza podczas logowania się nie zgadzają.

Bardzo proszę o pomoc.

Oto skrypty:

Skrypt logowania:

  1. <? #logowanie.php
  2. if (isset($_POST['submit'])) {
  3.    require_once ('includes/mysql_connect.php');
  4.    
  5.    //Funkcja wstawiająca przed znakami specjalnymi znak odwrotengo ukośnika.
  6.    function escape_data ($data) {
  7.        global $dbc;
  8.        if (ini_get('magic_quotes_gpc')) {
  9.            $data = stripslashes($data);
  10.        }
  11.        return mysql_real_escape_string($data, $dbc);
  12.    }
  13.    //Koniec funkcjii.
  14.  
  15. $message = NULL;
  16.  
  17. //Sprawdź nazwę użytkownika
  18. if (empty($_POST['username'])) {
  19.    $u = FALSE;
  20.    $message .= '<p>Zapomniałeś wprowadzić nazwę użytkownika!</p>';
  21. } else {
  22.    $u = escape_data($_POST['username']);
  23. }
  24.  
  25. //Sprawdź hasło
  26. if (empty($_POST['password'])) {
  27.    $p = FALSE;
  28.    $message .= '<p>Zapomniałeś wprowadzić hasło!</p>';
  29. } else {
  30.    $p = escape_data($_POST['password']);
  31. }
  32.  
  33. if ($u && $p) {
  34.    //Odczytaj user_id i first_name dla podanej kombinacji nazwy użytkownika i hasla.
  35.    $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')";
  36.    $result = @mysql_query ($query);
  37.    $row = mysql_fetch_array ($result, MYSQL_NUM);
  38.    
  39.    if ($row) { //Z bazy danych wyciągnięto właściwy rekord
  40.        setcookie ('first_name', $row[1], time()+3600, '/', '', 0);
  41.        setcookie ('user_id', $row[0], time()+3600, '/', '', 0);
  42.        header ("Location: http://". $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']). "/zalogowany.php");
  43.    exit();
  44.    
  45.    } else {
  46.        $message = '<p>Wprowadzone przez Ciebie nazwa użytkownika i hasło nie zgadzają się z danymi w bazie.</p>';
  47.    }
  48.    
  49.    mysql_close();
  50.    
  51. } else {
  52.    $message .= '<p>Spróbuj jeszcze raz</p>';
  53. }
  54.  
  55. } //Koniec głównego formularza warunkowego Submit.
  56.  
  57. //Tytuł strony i nagłowek
  58. $page_title = 'Logowanie';
  59. include ('szablony/naglowek.inc');
  60.  
  61. //Jeżeli jest jakiś komunikat o błędzie, wyświetl go na stronioe.
  62. if (isset($message)) {
  63.    echo '<font color="red">'. $message .'</font>';
  64. }
  65. ?>
  66. <!-- Początek formularza -->
  67. <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
  68. <fieldset><legend>Wprowadź wymagane informacje:</legend>
  69.  
  70. <p><b>Nazwa użytkownika</b> <input type="text" name="username" size="10" maxlength="20" value="<? if (isset($_POST['username'])) echo $_POST['username']; ?>" /></p>
  71. <p><b>Hasło:</b> <input type="password" name="password" size="20" maxlength="20" /></p>
  72.  
  73. </fieldset>
  74. <div align="center"><input type="submit" name="submit" value="Zaloguj się" /></div>
  75. </form>
  76. <!-- Koniec formularza -->
  77. <?
  78. include('szablony/stopka.inc');
  79. ?>


Skrypt rejestracji:

  1. <? #rejestracja.php
  2.  
  3. //Tytuł strony i nagłówek
  4. $page_title = 'Zarejestruj się!';
  5. include ('szablony/naglowek.inc');
  6.  
  7. if (isset($_POST['submit'])) { //Obsluga formularza
  8.  
  9. require_once('includes/mysql_connect.php'); //Połącz z bazą danych
  10.  
  11. //funkcja wstawiająca przed znakami specjalnymi znak odwrotengo ukośnika.
  12. function escape_data ($data) {
  13.    global $dbc; //Wymaga połączenia
  14.    if (ini_get('magic_quotes_gpc'))
  15.    {
  16.        $data = stripslashes($data);
  17.    }
  18.    return mysql_real_escape_string($data, $dbc);
  19. }
  20. //koniec funkcji
  21.  
  22.    $message = NULL; //nowa pusta zmienna
  23.    
  24.  //sprawdź imie
  25.  if (empty($_POST['first_name'])) {
  26.      $fn = FALSE;
  27.      $message .= '<p>Zapomniałeś podać swoje imię!</p>';
  28.  } else {
  29.      $fn = escape_data($_POST['first_name']);
  30.  }
  31.  
  32.  //sprawdź nazwisko
  33.  if (empty($_POST['last_name'])) {
  34.      $ln = FALSE;
  35.      $message .= '<p>Zapomniałeś podać swoje nazwisko!</p>';
  36.  } else {
  37.      $ln = escape_data($_POST['last_name']);
  38.  }
  39.  
  40.  //sprawdź adres email
  41.  if (empty($_POST['email'])) {
  42.     $e = FALSE;
  43.     $message .= '<p>Zapomnialeś podać swój adres e-mail!</p>';
  44.  } else {
  45.     $e = escape_data($_POST['email']);
  46.  }    
  47.  
  48.  //sprawdź nazwę użytkownika  
  49.  if (empty($_POST['username'])) {
  50.     $u = FALSE;
  51.     $message .= '<p>Zapomniałeś wprowadzić nazwę użytkownika</p>';
  52.  } else {
  53.     $u = escape_data($_POST['username']);
  54.  }
  55.  
  56.  //sprawdź czy użytkownik wprowadził hasło poprawnie w oba pola
  57. if (empty($_POST['password1'])) {
  58.    $p = FALSE;
  59.    $message .= '<p>Zapomniałeś wprowadzić hasło</p>';
  60. } else {
  61.    if ($_POST['password1'] == $_POST['password2']) {
  62.        $p = escape_data($_POST['password1']);
  63.        } else {
  64.        $p = FALSE;
  65.        $message .= '<p>Za drugin razem wpisałeś inne hasło!</p>';
  66.        }
  67.  }
  68.  
  69. if ($fn && $ln && $e && $u && $p) { //Jeżeli wszystko jest OK
  70.  
  71.  //Zarejestruj użytkownika w bazie danych
  72.    
  73.    $query = "SELECT user_id FROM users WHERE username='$u'";
  74.    $result = @mysql_query ($query);
  75.    if (mysql_num_rows($result) == 0) {
  76.  //Utwórz zapytanie
  77.    $query = "INSERT INTO users (username, first_name, last_name, email, password, registration_date) VALUES ('$u', '$fn', '$ln', '$e', PASSWORD('$p'), NOW() )";
  78.    $result = @mysql_query ($query); //Wykonaj zapytanie
  79.  if ($result) { //Jeżeli zostało wykonane
  80.    
  81.    //Wyślij maila jeśli trzeba
  82.     echo '<p><b>Zostałeś zarejestrowany!</b></p>';
  83.     include ('szablony/stopka.inc');
  84.     exit();
  85.    
  86.  } else { //Jeżeli nie zostało wykonane
  87.    $message .= '<p>Nie zostałeś zarejstrowany z powodu awarii naszego systemu.<br>Przepraszamy za kłopot</p><p>'. mysql_error() .'</p>';
  88.  }
  89.    } else {
  90.        $message = '<p>Ktoś wybrał już sobie tę nazwę użytkownika.</p>';
  91.    }
  92.  mysql_close(); //Zamknij połączenie z bazą danych
  93.  
  94.  } else {
  95.    $message .= '<p>Spróbuj jeszcze raz</p>';
  96.  }
  97. } //Koniec głównego wyrażenia warunkowego Submit
  98.  
  99. //Jeżeli jest jakiś komunikat o błędzie, wyświetl go na stronie
  100. if (isset($message)) {
  101. echo '<font color="red">'. $message .'</font>';
  102. }
  103. ?>
  104.  
  105. <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
  106. <fieldset><legend>Wprowadź do poniższego formularza podane informacje:</legend>
  107. <p><b>Imię:</b> <input type="text" name="first_name" size="15" maxlenght="15" value="<? if (isset($_POST['first_name'])) echo $_POST['first_name']; ?>" /></p>
  108. <p><b>Nazwisko:</b> <input type="text" name="last_name" size="20" maxlenght="40" value"<? if (isset($_POST['last_name'])) echo $_POST['last_name']; ?>" /></p>
  109. <p><b>Adres E-mail:</b> <input type="text" name="email" size="40" maxlenght="60" value"<? if (isset($_POST['email'])) echo $_POST['email']; ?>" /></p>
  110. <p><b>Nazwa użytkownika:</b> <input type="text" name="username" size="20" maxlenght="40" value"<? if (isset($_POST['username'])) echo $_POST['username']; ?>" /></p>
  111. <p><b>Hasło:</b> <input type="password" name="password1" size="20" maxlenght="40" /></p>
  112. <p><b>Potwierdź hasło:</b> <input type="password" name="password2" size="20" maxlenght="40" /></p>
  113. </fieldset>
  114. <div align="center"><input type="submit" name="submit" value="Zarejestruj" /></div>
  115. </form>
  116. <?
  117. include('szablony/stopka.inc');
  118. ?>
dziurson
usuń na chwile @ z linii zapytania do bazy i zobacz czy jest poprawne. Jeśli nic nie będzie to w warunku zamiast $row spróbuj mysql_num_rows($result) > 0
guzior
Cytat(dziurson @ 20.02.2009, 22:32:09 ) *
usuń na chwile @ z linii zapytania do bazy i zobacz czy jest poprawne. Jeśli nic nie będzie to w warunku zamiast $row spróbuj mysql_num_rows($result) > 0


dla którego pliku?

można to sprawdzić na tej www: http://guzior.jor.pl/www1/
dziurson
chodziło mi o plik logowania
guzior
sprawdzałem nie działa :/ ,może to coś z kodowaniem bazy ?
dziurson
no też możliwe. a jakie masz w bazie i jakie na stronie?? jeśli się różnią to użyj mysql_query("SET NAMES nazwa"); gdzie 'nazwa' to kodowanie bazy. np. latin1
guzior
ustawione kodowanie jest takie latin2_general_ci a na stronie utf-8
dziurson
No to po wyborze bazy danych ale przed zapytaniami dajesz to
mysql_query("SET NAMES latin2");
guzior
Cytat(dziurson @ 27.02.2009, 19:05:19 ) *
No to po wyborze bazy danych ale przed zapytaniami dajesz to
mysql_query("SET NAMES latin2");


dane połączenia do bazy danych i wybór jest w osobnym pliku mysql_connect.php
dziurson
no to wrzuć to do tego osobnego pliku. Ale coś nie sądzę by to rozwiązało problem. Trzeba analizować skrypt linijka po linijce. Dodawać w różnych miejscach wypisywanie i sprawdzać czy wszystko jest tak jak powinno.
guzior
Cytat(dziurson @ 28.02.2009, 10:05:37 ) *
no to wrzuć to do tego osobnego pliku. Ale coś nie sądzę by to rozwiązało problem. Trzeba analizować skrypt linijka po linijce. Dodawać w różnych miejscach wypisywanie i sprawdzać czy wszystko jest tak jak powinno.

nie rozwiazało problemu :/
mogę Ci podać adres www gdzie można to przetestować
dziurson
Ale mi nic nie da że zobaczę to z zewnątrz. Musisz sobie sprawdzić wszystkie elementy. Czy do bazy dobrze zapisuje, robić co kawałek test zmiennych czy nie zmieniły się, sprawdzić zapytanie przez or die(). Usuwanie błędów to żmudna praca
guzior
rozwiązałem ten problem pisząc od nowa i łatwiejszy skrypt

mam jeszcze małe pytanie otóż mam w pliku index.php dodana pętle switch i podaje linki jako index.php?go=nr ale chciałbym dołączyć do tego stronicowanie i nie wiem jak to zrobić pomógłby ktoś?
erix
Poszukaj na forum; stronicowanie już było n-razy omawiane.
guzior
Cytat(erix @ 21.03.2009, 19:16:56 ) *
Poszukaj na forum; stronicowanie już było n-razy omawiane.


tak wiem tylko nie wiem jak to połączyć z moją pętlą switch
erix
  1. switch" title="Zobacz w manualu PHP" target="_manual, to nie pętla
  2. łączysz z zapytaniem do bazy; widać, nie szukałeś albo zrobiłeś to bardzo powierzchownie
guzior
zrobiłem ale teraz mam problem ,chciałem dodać stronicowanie do mojej księgi wpisów, ale po kliknięciu w link przejścia na następna strona przechodzi na główną stronę, pomoże ktoś?
Spawnm
tak , jak tylko pokażesz co zrobiłeś smile.gif
guzior
Cytat(Spawnm @ 23.03.2009, 16:29:15 ) *
tak , jak tylko pokażesz co zrobiłeś smile.gif


użyłem tego skryptu
a to jest www gdzie mam problem klik

kod mojej księgi:
  1. <?
  2. include('include/connect.php');
  3. ?>
  4.  
  5. <?
  6. echo '<div id="news" class="boxed"><h2 class="title">Ilość wpisów</h2>';
  7. list($ile)=mysql_fetch_row(mysql_db_query("SELECT * FROM ksiega"));
  8. echo("<center>Wpisów: $ile<br></center>");
  9. echo '</div>';
  10. ?>
  11.  
  12. <div id="news" class="boxed"><h2 class="title">Księga wpisów</h2>
  13. <form method="post">
  14.  <table align="center" border="0" cellpadding="0" cellspacing="0">
  15.    <tr>
  16.        <td>
  17.            Nazwa użytkownika:
  18.        </td>
  19.        <td style="padding-left: 5px">
  20.            <input type="text" name="autor" size="46">
  21.        </td>
  22.    </tr>
  23.    <tr>
  24.        <td>
  25.            Treść:
  26.        </td>
  27.        <td style="padding-left: 5px">
  28.            <textarea rows="2" name="tresc"  cols="35"></textarea>
  29.        </td>
  30.    </tr>
  31.  </table>
  32.  <table><tr><td style="padding-top: 5px; padding-bottom: 13px">
  33.        <input type="submit" value="Dodaj"><input type="reset" value="Reset">
  34.  </td></tr></table>
  35. </form>
  36. </div>
  37. <?
  38. // odbieramy dane z formularza
  39. $tytul = $_POST['autor'];
  40. $tresc = $_POST['tresc'];
  41.  
  42.  
  43. if($tytul && $tresc) {
  44.        
  45.    $ins = @mysql_query("INSERT INTO ksiega SET autor='$autor', tresc='$tresc'");
  46.    
  47.    if($ins) echo "Wpis został dodany.";
  48.    else echo "Błąd. nie udało się dodac nowego wpisu";
  49.    
  50.    mysql_close();
  51.    
  52. }  
  53. //wyswietlanie
  54.  
  55. define('ILOSC_WYNIKOW_NA_STRONIE', 5);
  56. /*
  57.  * połączenie z bazą, itp.
  58.  */
  59.  
  60. $SQL = "SELECT SQL_CALC_FOUND_ROWS *
  61.       FROM ksiega
  62.       ORDER BY date ASC
  63.       LIMIT ".mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  64. // pobiera ILOSC_NA_STRONIE rekordów z bazy, sortując wg daty rosnąco, zaczynając od $_GET['porcja']*ILOSC_NA_STRONIE
  65. $RES = mysql_query($SQL); // wykonujemy zapytanie
  66. while($AFR = mysql_fetch_assoc($RES)){
  67.   /*Wyświetlanie wyników, przykładowo:*/
  68. echo '<div id="news" class="boxed"><h2 class="title">Wpisy</h2>';
  69. echo '<table align="center" border="0" cellpadding="0" cellspacing="0" width="600" bordercolor="#ffffff">';
  70. echo '<tr>';
  71. echo '<td valign="middle">';
  72. echo '<table border="0" cellpadding="0" cellspacing="0">';
  73. echo '<tr>';
  74. echo '<td style="padding-left: 7px" valign="middle" align="left" width="260" height="20" bgcolor="#800000">';
  75. echo '<font color="white">';
  76. echo 'Dodał: '.$AFR['autor'] .'';
  77. echo '</font>';
  78. echo '</td>';
  79. echo '<td style="padding-right: 7px" valign="middle" align="right" width="360" height="20" bgcolor="#800000">';
  80. echo '<font color="white">';
  81. echo $AFR['date'];
  82. echo '</font>';
  83. echo '</tr>';
  84. echo '</table>';
  85. echo '</td>';
  86. echo '</tr>';
  87. echo '<tr>';
  88. echo '<td style="padding-top: 7px; padding-bottom: 7px; padding-left: 7px; padding-right: 7px" align="center">';
  89. echo $AFR['tresc'];
  90. echo '</td>';
  91. echo "</tr>";
  92. echo "</table>";
  93. echo "</div>";
  94. }
  95.  
  96. // w inny sposób pobieramy ilosc danych w bazie
  97. $SQL = "SELECT FOUND_ROWS() as Ilosc";
  98. $RES= mysql_query($SQL);
  99. list($iloscWpisow) = mysql_fetch_row($RES);
  100.  
  101. //Teraz wypadało by wyświetlić jakąś nawigację
  102. echo '<div id="news" align="center">';
  103. //jeśli nie jesteśmy na pierwszej stronie
  104.  
  105. if($_GET['porcja']>0){
  106.    //wyswietlamy link do poprzedniej strony
  107.   echo '<a href="?porcja='.($_GET['porcja']-1).'">Poprzednie</a> ';
  108. }
  109.  
  110. for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  111.   echo '<a href="?porcja='.($i).'">[ '.($i+1).' ]</a> ';
  112. }
  113. //jeśli nie jesteśmy na ostatniej stronie
  114. if($_GET['porcja']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){
  115.  //wyświetlamy link do nastepnej strony
  116.   echo ' <a href="?porcja='.($_GET['porcja']+1).'">następne</a>';
  117. }
  118. echo '</div>';
  119.  
  120. ?>
Spawnm
gubisz zmienną get o nazwie go
daj ?go=21&porcja=1
guzior
Cytat(Spawnm @ 23.03.2009, 17:00:13 ) *
gubisz zmienną get o nazwie go
daj ?go=21&porcja=1


aa już mam wielkie dzięki smile.gif

Napisałem skrypt edycji news'a tylko mam problem bo poprzez pętle while edytuje mi wszystkie i nie wiem jak to podzielić żeby każdy news mógł być edytowany osobno.

  1. <?
  2. include('include/connect.php');
  3. ?>
  4. <?
  5. if (isset($_SESSION['zalogowany']) AND (substr($_SERVER['PHP_SELF'], -15) !='index.php?go=4"')) {
  6.  
  7. $zapytanie1 = "SELECT * FROM news";
  8. $wykonaj1 = @mysql_query($zapytanie1);
  9.    
  10. while($wiersz = mysql_fetch_array($wykonaj1))
  11. {
  12. ?>
  13. <div id="admin" class="boxed"><h2 class="title">Edycja news'a</h2>
  14. <form method="post">
  15.  <table border="0" cellpadding="0" cellspacing="0">
  16.     <tr>
  17.        <td>
  18.            ID:
  19.        </td>
  20.        <td style="padding-left: 5px">
  21.            <input type="text" name="data" disabled="disabled" value="<? echo $wiersz['id']; ?>" size="46">
  22.        </td>
  23.    </tr>
  24.    <tr>
  25.        <td>
  26.            Data:
  27.        </td>
  28.        <td style="padding-left: 5px">
  29.            <input type="text" name="data" disabled="disabled" value="<? echo $wiersz['data']; ?>" size="46">
  30.        </td>
  31.    </tr>
  32.    <tr>
  33.        <td>
  34.            Tytuł:
  35.        </td>
  36.        <td style="padding-left: 5px">
  37.            <input type="text" name="tytul" value="<? echo $wiersz['tytul'] ?>" size="46">
  38.        </td>
  39.    </tr>
  40.  
  41.    <tr>
  42.        <td>
  43.            Treść:
  44.        </td>
  45.        <td style="padding-left: 5px">
  46.            <textarea rows="2" name="tresc" cols="35"><? echo $wiersz['tresc']; ?></textarea>
  47.        </td>
  48.    </tr>
  49.  </table>
  50. <table><tr><td style="padding-top: 5px; padding-bottom: 13px"><input type="submit" name="a" value="Zmień"></td></tr></table>
  51. </form>
  52. </div>
  53. <?
  54. }
  55. ?>
  56. <?
  57. $tytul = $_POST['tytul'];
  58. $tresc = $_POST['tresc'];
  59.  
  60. if($tytul && $tresc) {
  61.  
  62.          $query = "UPDATE news SET tytul='$tytul', tresc='$tresc'";
  63.          $wynik = mysql_query ($query);
  64. if($query) echo "<div id=\"admin\">News został zmieniony.</div>";
  65.    else echo "<div id=\"admin\">Błąd nie udałoo się edytować news'a</div>";
  66.    }
  67.    
  68. mysql_close();    
  69.  
  70. } else {
  71.            echo "<div id=admin\" class=\"boxed\" align=\"center\"><h2 class=\"title\">Błąd</h2>Musisz być zalogowany aby obejrzeć stronę. <a href=\"index.php\">Strona Główna</a> lub <a href=\"index.php?go=3\">Zaloguj się</a>";
  72. }            
  73. ?>


pomoże ktoś?
K4mil94
Jeśli w bazie masz uporządkowane newsy po id to edytuj przez $_GET. Jeśli ?id=1 to pytaj SELECT * FROM news WHERE id='$id' tylko ustaw $id = $_GET['id'], reszte dopisz sobie sam smile.gif
guzior
Cytat(K4mil94 @ 26.03.2009, 15:16:02 ) *
Jeśli w bazie masz uporządkowane newsy po id to edytuj przez $_GET. Jeśli ?id=1 to pytaj SELECT * FROM news WHERE id='$id' tylko ustaw $id = $_GET['id'], reszte dopisz sobie sam smile.gif


ok ale w którym miejscu to dopisać bo już się pogubiłem
K4mil94
  1. <?php
  2. $id =$_GET['id'];
  3. if(isset($_GET['id'])) {
  4. $zapytanie "SELECT * FROM news WHERE id='$id';";
  5. $wynik = mysql_query($zapytanie);
  6.  
  7. $dane = mysql_fetch_array($wynik);
  8. //dalej wyswietlasz tam gdzie masz wyswietlic i zapytanie z uaktualnieniem przez update
  9. ?>
guzior
  1. <?php
  2. $tytul = $_POST['tytul'];
  3. $tresc = $_POST['tresc'];
  4.  
  5. if($tytul && $tresc) {
  6.  
  7.          $query = "UPDATE news SET tytul='$tytul', tresc='$tresc'";
  8.          $wynik = mysql_query ($query);
  9. if($query) echo "<div id=\"admin\">News został zmieniony.</div>";
  10.    else echo "<div id=\"admin\">Błąd nie udałoo się edytować news'a</div>";
  11.    }
  12.    
  13. ?>


czyli to na koncu?
K4mil94
Na początku smile.gif Od pierwszego zapytania. Dostosuj to pod swoje potrzeby tongue.gif Jeśli w adresie jest ustawiony GET to wyszukuje w bazie w niego podany id i wczytujesz w formularz potem już masz kod ok.
Spawnm
  1. <?php
  2. $tytul = $_POST['tytul'];
  3. $tresc = $_POST['tresc'];
  4. $id=$_POST['id'];
  5.  
  6. if($tytul && $tresc) {
  7.  
  8.         $query = "UPDATE news SET tytul='$tytul', tresc='$tresc' WHERE id='$id'";
  9.         $wynik = mysql_query ($query);
  10. if($query) echo "<div id=\"admin\">News został zmieniony.</div>";
  11.   else echo "<div id=\"admin\">Błąd nie udałoo się edytować news'a</div>";
  12.   }
  13.  
  14. ?>

i dodaj w formie: <input type="hidden" name="id" value="id do edycji">
guzior
chodzi mi głównie o to że jak mam więcej niż jednego news'a do edycji to przez pętle edytuje mi wszystkie
ajj teraz to już totalnie jestem w kropce :/
K4mil94
No to tak jak ci pisze. Wybierasz newsa po id.
guzior
  1. <?
  2. include('include/connect.php');
  3. ?>
  4. <?
  5.  
  6. function listuj()
  7. {
  8. $sql = "SELECT id,tytul FROM news";
  9. $res = mysql_query($sql);
  10. while ($afr = mysql_fetch_array($res)) {
  11. echo '<a href=?id='.$afr['id'].'>'.$afr['tytul'].'</a><br>';
  12.  }
  13. }
  14.  
  15. $id =$_GET['id'];
  16. if(isset($_GET['id'])) {
  17. $zapytanie "SELECT * FROM news WHERE id='$id';";
  18. $wynik = mysql_query($zapytanie);
  19.  
  20. $dane = mysql_fetch_array($wynik);
  21. //dalej wyswietlasz tam gdzie masz wyswietlic i zapytanie z uaktualnieniem przez update
  22. ?>
  23. <div id="admin" class="boxed"><h2 class="title">Edycja news'a</h2>
  24. <form method="post">
  25.  <table border="0" cellpadding="0" cellspacing="0">
  26.     <tr>
  27.        <td>
  28.            ID:
  29.        </td>
  30.        <td style="padding-left: 5px">
  31.            <input type="hidden" name="id" value="<?php echo $id; ?> ">
  32.        </td>
  33.    </tr>
  34.    <tr>
  35.        <td>
  36.            Tytuł:
  37.        </td>
  38.        <td style="padding-left: 5px">
  39.            <input type="text" name="tytul" value="<? echo $dane['tytul']; ?>" size="46">
  40.        </td>
  41.    </tr>
  42.  
  43.    <tr>
  44.        <td>
  45.            Treść:
  46.        </td>
  47.        <td style="padding-left: 5px">
  48.            <textarea rows="2" name="tresc" cols="35"><? echo $dane['tresc']; ?></textarea>
  49.        </td>
  50.    </tr>
  51.  </table>
  52. <table><tr><td style="padding-top: 5px; padding-bottom: 13px"><input type="submit" name="a" value="Zmień"></td></tr></table>
  53. </form>
  54. </div>
  55. <?
  56. } else { listuj(); }
  57.  
  58. $tytul = $_POST['tytul'];
  59. $tresc = $_POST['tresc'];
  60. $id = $_POST['id'];
  61.  
  62. if($id && $tytul && $tresc) {
  63.  
  64.        $query = "UPDATE news SET tytul='$tytul', tresc='$tresc' WHERE id='$id'";
  65.        $wynik = mysql_query ($query);
  66. if($wynik) echo "<div id=\"admin\">News został zmieniony.</div>";
  67.  else echo "<div id=\"admin\">Błąd nie udałoo się edytować news'a</div>";
  68.  }    
  69. ?>


osiągnąłem coś takiego, ale nie działa :/
K4mil94
Zobacz tak:
  1. <?php
  2. include("include/connect.php");
  3. $id = $_GET['id'];
  4. if(isset($_GET['id'])) {
  5.    $zapytanie = "SELECT * FROM news WHERE id='$id';";
  6.    $wynik = mysql_query($zapytanie);
  7.    $dane = mysql_fetch_array($wynik);
  8.    $nazwa = $dane['tytul'];
  9.    $tresc = $dane['tresc']
  10.    echo "<form method=post>Nazwa:<input type=text name=tytul value=$nazwa><br />
  11.    <textarea name=tresc>$tresc</textarea><br />
  12.    <button type=sumbit name=sumbit>Zaedytuj</button>";
  13.    else { echo "Nie mozna zaedytowac"; }
  14.    if(empty($_POST['tytul']) && empty($_POST['tresc'])) {
  15.        echo "Nie wypelniono pol";
  16.        }
  17.        else {
  18.        $tytul = $_POST['tytul'];
  19.        $trescedit = $_POST['tresc'];
  20.        $zapytanie2 = "UPDATE `news` SET `tytul`='$tytul', `tresc`='$trescedit' WHERE id='$id';";
  21.        echo "News zaedytowano";
  22.        }
  23.    }
  24.    ?>
guzior
Cytat(K4mil94 @ 26.03.2009, 18:29:28 ) *
Zobacz tak:
  1. <?php
  2. include("include/connect.php");
  3. $id = $_GET['id'];
  4. if(isset($_GET['id'])) {
  5.    $zapytanie = "SELECT * FROM news WHERE id='$id';";
  6.    $wynik = mysql_query($zapytanie);
  7.    $dane = mysql_fetch_array($wynik);
  8.    $nazwa = $dane['tytul'];
  9.    $tresc = $dane['tresc']
  10.    echo "<form method=post>Nazwa:<input type=text name=tytul value=$nazwa><br />
  11.    <textarea name=tresc>$tresc</textarea><br />
  12.    <button type=sumbit name=sumbit>Zaedytuj</button>";
  13.    else { echo "Nie mozna zaedytowac"; }
  14.    if(empty($_POST['tytul']) && empty($_POST['tresc'])) {
  15.        echo "Nie wypelniono pol";
  16.        }
  17.        else {
  18.        $tytul = $_POST['tytul'];
  19.        $trescedit = $_POST['tresc'];
  20.        $zapytanie2 = "UPDATE `news` SET `tytul`='$tytul', `tresc`='$trescedit' WHERE id='$id';";
  21.        echo "News zaedytowano";
  22.        }
  23.    }
  24.    ?>


z jakiegos powodu wyswietla mi pusta strone
chcialem dodac ze odnosnik do tej strony jest przez index.php?go=5
K4mil94
nazwij to test.php i wejdz w test.php?id=1 i zobacz co będzie.
guzior
Cytat(K4mil94 @ 26.03.2009, 18:40:18 ) *
nazwij to test.php i wejdz w test.php?id=1 i zobacz co będzie.


nic sie niedzieje
Klik
artur_dziocha
chyba nie przeczytałeś tego posta
Temat: Najczestsze_bledy

wyświetlaj swoje zapytania
echo $zapytanie;
mysql_query($zapytanie) or die(mysql_error());
i wszystko bedzie jasne
K4mil94
Tutaj zaedytowałem i przetestowałem skrypt:
  1. <?php
  2. include("include/connect.php");
  3. $id = $_GET['id'];
  4. if(isset($_GET['id'])) {
  5.    $zapytanie = "SELECT * FROM news WHERE id='$id';";
  6.    $wynik = mysql_query($zapytanie);
  7.    $dane = mysql_fetch_array($wynik);
  8.    $nazwa = $dane['tytul'];
  9.    $tresc = $dane['tresc'];
  10.    echo "<form method=post>Nazwa:<input type=text name=tytul value=$nazwa><br /><textarea name=tresc>$tresc</textarea><br /><button type=sumbit name=sumbit>Zaedytuj</button></form>";
  11.    }
  12.    else {
  13.    echo "Nie mozna zaedytowac";
  14.    }
  15.    if(empty($_POST['tytul']) && empty($_POST['tresc'])) {
  16.        echo "Nie wypelniono pol";
  17.        }
  18.        else {
  19.        $tytul = $_POST['tytul'];
  20.        $trescedit = $_POST['tresc'];
  21.        $zapytanie2 = "UPDATE `news` SET `tytul`='$tytul', `tresc`='$trescedit' WHERE id='$id';";
  22.        echo "News zaedytowano";
  23.        }
  24.    
  25.    ?>
U mnie działa, jak chcesz to TU!
guzior
Cytat(artur_dziocha @ 26.03.2009, 18:45:59 ) *
chyba nie przeczytałeś tego posta
Temat: Najczestsze_bledy

wyświetlaj swoje zapytania
echo $zapytanie;
mysql_query($zapytanie) or die(mysql_error());
i wszystko bedzie jasne


zbytnio to nic nie zmienia
$res = mysql_query($sql) or die(mysql_error());
K4mil94
Przetestuj to: http://kamilstudios.xt.pl/skrypty/Pozdrowienia/test.php?id=1
guzior
Cytat(K4mil94 @ 26.03.2009, 19:06:29 ) *


spoko tylko jak to połączyć z moim jak mam index.php?go=nr_strony
K4mil94
no jak masz ?go=1&id=3. Tu masz caly skrypt:
test.php
  1. <?php
  2. include("config.php");
  3. $id = $_GET['id'];
  4. if(isset($_GET['id'])) {
  5.    $zapytanie = "SELECT * FROM news WHERE id='$id';";
  6.    $wynik = mysql_query($zapytanie);
  7.    $dane = mysql_fetch_array($wynik);
  8.    $nazwa = $dane['tytul'];
  9.    $tresc = $dane['tresc'];
  10.    echo "<form method=post action=edycja.php?id=$id>Nazwa:<input type=text name=tytul value=$nazwa><br /><textarea name=tresc>$tresc</textarea><br /><button type=sumbit name=sumbit>Zaedytuj</button></form>";
  11.    }
  12.    else {
  13.    echo "Nie mozna zaedytowac";
  14.    }
  15.  
  16.    
  17.    ?>

edycja.php
  1. <?php
  2. include("config.php");
  3.        $id = $_GET['id'];
  4.        $tytul = $_POST['tytul'];
  5.        $trescedit = $_POST['tresc'];
  6.        $zapytanie2 = "UPDATE `news` SET `tytul`='$tytul', `tresc`='$trescedit' WHERE id='$id';";
  7.        echo "$zapytanie";
  8.        $wynik = mysql_query($zapytanie2);
  9.        echo "$wynik";
  10.        echo "News zaedytowano";
  11. ?>
Dostosuj do swoich potrzeb winksmiley.jpg
guzior
no tak ale ja tu widze dwa pliki test.php i edit.php
K4mil94
Patrz poprzedni post smile.gif
guzior
  1. <?php
  2. include("include/connect.php");
  3. $id = $_GET['id'];
  4. if(isset($_GET['id'])) {
  5.   $zapytanie = "SELECT * FROM news WHERE id='$id';";
  6.   $wynik = mysql_query($zapytanie);
  7.   $dane = mysql_fetch_array($wynik);
  8.   $nazwa = $dane['tytul'];
  9.   $tresc = $dane['tresc'];
  10.   echo "<form method=post>Nazwa:<input type=text name=tytul value=$nazwa><br /><textarea name=tresc>$tresc</textarea><br /><button type=sumbit name=sumbit>Zaedytuj</button></form>";
  11.   }
  12.   else {
  13.   echo "Nie mozna zaedytowac";
  14.   }
  15.   if(empty($_POST['tytul']) && empty($_POST['tresc'])) {
  16.       echo "Nie wypelniono pol";
  17.       }
  18.       else {
  19.       $tytul = $_POST['tytul'];
  20.       $trescedit = $_POST['tresc'];
  21.       $zapytanie2 = "UPDATE `news` SET `tytul`='$tytul', `tresc`='$trescedit' WHERE id='$id';";
  22.       echo "News zaedytowano";
  23.       }
  24.  
  25.   ?>

to zadziałało ale mam pytanie bo po wejsciu na test.php mam odrazu: Nie mozna zaedytowacNie wypelniono pol
Spawnm
  1. <?php
  2. if($_POST['submit']){
  3.  if(empty($_POST['tytul']) && empty($_POST['tresc'])) {
  4.      echo "Nie wypelniono pol";
  5.      }
  6.      else {
  7.      $tytul = $_POST['tytul'];
  8.      $trescedit = $_POST['tresc'];
  9.      $zapytanie2 = "UPDATE `news` SET `tytul`='$tytul', `tresc`='$trescedit' WHERE id='$id';";
  10.      echo "News zaedytowano";
  11.      }
  12. }
  13. ?>

nie
<button type=sumbit name=sumbit>
a
<input type=sumbit name=sumbit value=wyślij>
K4mil94
Tak zawsze nie pokazywało mi napisu i button był taki mały. "Nie mozna zaedytowacNie wypelniono pol" Efek nieużywania action= w PHP ;P PS. Mozesz dac Pomógł ;d
Spawnm
Cytat(K4mil94 @ 26.03.2009, 19:34:07 ) *
Tak zawsze nie pokazywało mi napisu i button był taki mały.

ja zawsze daje tak : <input type='submit' name='submit' value='wyślij'>
i działa.
zresztą pokaż kurs gdzie inaczej pokazują niż tak jak u mnie ...
K4mil94
Nie ma się o co kłucić ;P Obydwa sposoby działają winksmiley.jpg
guzior
wszystko ladnie tylko jak dam Klik to mam cos takiego a po jakiej kolwiek modyfikacji nic sie niedzieje.
znalazlem napisane kiedys skrypt inny tylko w tym skrypcie po kliknieciu edytuj nie wyswietla danych w formularzu.
K4mil94
to zrób z action=do edytuj.php
guzior
Zrobiłem sobie logowanie według tego Turiala

ale coś jest nie tak próbowałem coś poprawić i teraz przenosi na główną stronę i nie loguje ,a chciałem żeby według pola access wyświetlało się menu, uzyskałem coś takiego:

  1. <?
  2.    require_once('config.php'); // załaczamy plik config.php
  3.  
  4.    function usun($data){
  5.    
  6.        GLOBAL $dbc;
  7.      if (ini_get('magic_quotes_gpc')){
  8.        $data = stripslashes($data);
  9.      }
  10.       return mysql_real_escape_string($data, $dbc);
  11.    }
  12.    
  13. if (isset($_POST['submit'])){
  14.    
  15.    if (empty($_POST['login'])){
  16.        $message .= 'Nie podałeś loginu<br />';
  17.        $l = FALSE;
  18.    }else{
  19.        $l = usun($_POST['login']);
  20.    }
  21.        
  22.    if (empty($_POST['haslo'])){
  23.        $message .= 'Nie podałeś hasła<br />';
  24.        $h = FALSE;
  25.    }else{
  26.        $h = usun($_POST['haslo']);
  27.    }
  28.    
  29. if ( $l && $h ){
  30.    
  31.    $query = "SELECT username, access FROM user WHERE username='$l' AND haslo=password('$h')";
  32.    $result = mysql_query($query);
  33.        $row = mysql_fetch_array ($result, MYSQL_ASSOC);
  34.    
  35.    if($row){
  36.    session_start();
  37.        $_SESSION['username'] = $row['username'];
  38.        $_SESSION['access'] = $row['access'];
  39.        header ("Location: index.php?go=25");
  40.    }else{
  41.        $message .= 'Błędne hasło lub login<br />';
  42.    }
  43. }else{
  44.    $message .= '<font color="red">Spróbuj jeszcze raz</font>';
  45. }
  46. }
  47. ?>
  48. <div id="logowanie" class="boxed"><h2 class="title">Logowanie</h2>
  49. <div align="center">
  50. <form method="post" action="<? echo $_SERVER['PHP_SELF']; ?>">
  51.    <table align="center" border="0">
  52.        <tr>
  53.            <td align="right" class="uni_01">Login:</td>
  54.            <td><input type="text" name="login" size="30"></td>
  55.        </tr>
  56.        <tr>
  57.            <td align="right" class="uni_01">hasło:</td>
  58.            <td><input type="password" name="haslo" size="30"></td>
  59.        </tr>
  60.        <tr>
  61.            <td align="right" class="uni_01"> </td>
  62.            <td>
  63.        <p align="center"><input style="font-weight: bold;" type="submit" name="submit" value="loguj">
  64.        </td></tr>
  65.    </table>
  66. </form>
  67. </div>
  68. </div>
  69. <div id="logowanie" class="boxed">
  70. <div align="center">
  71. <? if(isset($message)){
  72.    echo $message;
  73.   }
  74. ?>
  75. </div>
  76. </div>


Oczywiście rejestracja według tutriala pod to logowanie działa.
Pomoże ktoś? smile.gif
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.