Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Problem z przekazaniem danych do bazy, na dynamicznym szablonie strony
kyokun
post 7.09.2019, 21:09:00
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 31.12.2010

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


Witam,

zaczynając od kodu ( odpowiednio: index.php, portal.php, 130.php ):

  1. <?php
  2. $add_site = true;
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <meta charset="utf-8"/>
  6. <head>
  7. <title>demo</title>
  8. <link rel="shortcut icon" href="images/ficon.png" />
  9. <link rel="stylesheet" href="css.css"/>
  10. </head>
  11. <body>
  12. <div class="all">
  13. <div class="naglowek">
  14. <?php
  15. require 'includes/naglowek.php';
  16. ?>
  17. </div>
  18. <?php
  19. require 'includes/_conf.php';
  20. if ( $user -> check() ) {
  21. $userData = $user -> data();
  22. require 'includes/portal.php';
  23. } else {
  24. echo '<br/><br/><center>Zaloguj się, aby mieć pełny dostęp do <b>demo</b><br/><br/>[ <a href="_logi.php">Zaloguj</a> ]</center>';
  25. }
  26. ?>
  27. <div class="stopka">
  28. <?php
  29. require 'includes/stopka.php';
  30. ?>
  31. </div>
  32. </div>
  33. </body>
  34. </html>


  1. <?php
  2. if(!$add_site) exit;
  3. ?>
  4. <div class="nawigacja">
  5. <?php
  6. require "nawigacja.php";
  7. ?>
  8. </div>
  9. <div class="portal">
  10. <?php
  11. $page = $_GET['page'];
  12. if ( !empty($page) ) {
  13. if ( is_file("pages/$page.php") ) include "pages/$page.php";
  14. else echo "<center><br/>Nie ma takiej strony :-(</center>";
  15. }
  16. else include "pages/000.php";
  17. ?>
  18. </div>


  1. <?php
  2. if(!$add_site) exit;
  3. ?>
  4. <br /><div align="center">Strona - Dodaj nowe dane</div><br /><br /><br />
  5.  
  6. <form action="pages/130.php" method="post">
  7. nazwa:<br />
  8. <input type="text" name="nazwa" /><br />
  9. adres_1:<br />
  10. <input type="text" name="adres_1" /><br />
  11. adres_2:<br />
  12. <input type="text" name="adres_2" /><br />
  13. kontakt_os:<br />
  14. <input type="text" name="kontakt_os" /><br />
  15. kontakt_te:<br />
  16. <input type="text" name="kontakt_te" /><br />
  17. <input type="submit" value="dodaj" />
  18. </form>
  19.  
  20. <?php
  21. $nazwa = $_POST['nazwa'];
  22. $adres_1 = $_POST['adres_1'];
  23. $adres_2 = $_POST['adres_2'];
  24. $kontakt_os = $_POST['kontakt_os'];
  25. $kontakt_te = $_POST['kontakt_te'];
  26.  
  27. if($nazwa and $adres_1 and $adres_2 and $kontakt_os and $kontakt_te) {
  28.  
  29. $connection = @mysql_connect('||dane dostępu - podane w realnym kodzie||')
  30. or die('Brak połączenia z serwerem MySQL');
  31. $db = @mysql_select_db('dane', $connection)
  32. or die('Nie mogę połączyć się z bazą danych');
  33.  
  34. $ins = @mysql_query("INSERT INTO test SET nazwa='$nazwa', adres_1='$adres_1', adres_2='$adres_2', kontakt_os='$kontakt_os', kontakt_te='$kontakt_te'");
  35.  
  36. if($ins) echo "Rekord został dodany poprawnie";
  37. else echo "Błąd nie udało się dodać nowego rekordu";
  38.  
  39. mysql_close($connection);
  40. }
  41.  
  42. ?>


Nigdy nie potrzebowałem połączenia z bazą danych, aż do dziś... Jak widać po kodzie nie jestem jakoś zaawansowany w tych sprawach, ale na własne potrzeby wystarcza ; ) Proszę o pomoc, sugestię, jak mam zdefiniować "form action", aby działało wysyłanie danych z strony zbudowanej w sposób "dynamiczny". Część dynamiczna adresu w/w przypadku to "index.php?page=130".

Z góry dziękuję za czas poświęcony mojej osobie!!

Ten post edytował kyokun 7.09.2019, 21:59:37
Go to the top of the page
+Quote Post
Neutral
post 7.09.2019, 21:19:08
Post #2





Grupa: Zarejestrowani
Postów: 249
Pomógł: 38
Dołączył: 10.01.2016

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


Zmień nazwę ostatniego pliku na np. index2.php oraz wyrzuć kod PHP do pliku 130.php.

130.php:

  1. <input type="submit" value="dodaj" />
  2. </form>


Cały kod pod spodem tego wrzuć do 130.php, a to powyżej razem z tym wrzuć do pliku index2.php.

Chodzi o to, że gdy masz napisane w form action="pages/130.php", to wtedy zostaniesz tam przekierowany, a że coś chyba namieszałeś, to nie powinno działać jak trzeba. Po przekierowaniu na pages/130.php może być np. uruchomiony odpowiedni skrypt, np. łączenia się z bazą danych.

Ten post edytował Neutral 7.09.2019, 21:31:26
Go to the top of the page
+Quote Post
kyokun
post 7.09.2019, 21:56:57
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 31.12.2010

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


jeszcze przed edycją, wpisałem coś takiego:

  1. <form action="index.php?page=130" method="post">

metoda "prób i błędów" ; )

w przypadku jak mam dynamicznie otworzoną podstronę "130.php", widzę formularz, nic nie uzupełniam ( nie mam jeszcze wstawione, że niektóre pola są wymagane ), klikam "dodaj" i strona się odświeża, ale jestem na tej samej stronie

w momencie, jak uzupełnię inputy losowymi wartościami i teraz klikam "dodaj" wyrzuca mi ( okroję komunikat z danych strony ):

  1. Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /profiles/k/ka/kam/{jakiś adres}/pages/130.php:39 Stack trace: #0 /profiles/k/ka/kam/{jakiś adres}/includes/portal.php(12): include() #1 /profiles/k/ka/kam/{jakiś adres}/index.php(23): require('/profiles/k/ka/...') #2 {main} thrown in /profiles/k/ka/kam/{jakiś adres}/pages/130.php on line 39


linia 39 z 130.php, to:
  1. $connection = @mysql_connect('{host}', '{user}', '{haslo}')


dane ( ukryłem ) mam raczej dobrze uzupełnione, ponieważ na tych samych danych działa mi skrypt logowania i sprawdzania sesji

linia 12 z portal.php, to:
  1. if(is_file("pages/$page.php")) include "pages/$page.php";


linia 23 z index.php, to:
  1. require 'includes/portal.php';


pełne pliki są w pierwszym poście, nie mam zielonego pojęcia, co ten error do mnie "mówi"...
Go to the top of the page
+Quote Post
Neutral
post 7.09.2019, 22:08:39
Post #4





Grupa: Zarejestrowani
Postów: 249
Pomógł: 38
Dołączył: 10.01.2016

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


Po pierwsze nie używaj @, ponieważ tylko ukrywasz błędy. Nie używaj także mysql, ponieważ to zostało usunięte w wersji 7. i jeśli korzystasz z najnowszej wersji to nic dziwnego, że taki błąd Ci poleciał. Zamiast tego korzystaj tylko z mysqli i/lub PDO.

Do sprawdzania, co masz zainstalowane/skonfigurowane możesz zastosować taką linię kodu phpinfo();. Później naciśnij Ctrl+F i wpisz tam w pole wyszukiwania mysql, zobaczysz, że tego nie masz w wersji 7.

Ten post edytował Neutral 8.09.2019, 19:43:17
Go to the top of the page
+Quote Post
kyokun
post 8.09.2019, 11:21:10
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 31.12.2010

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


CODE
<?php if(!$add_site) exit; ?>
<br /><br />
<form method="post" action="index.php?page=130">
<label for="nazwa">Nazwa:</label>
<input maxlength="255" type="text" name="nazwa" id="nazwa" required><br /><br />
<label for="adres_1">Adres (1):</label>
<input maxlength="255" type="text" name="adres_1" id="adres_1" required><br /><br />
<label for="adres_2">Adres (2):</label>
<input maxlength="255" type="text" name="adres_2" id="adres_2" required><br /><br />
<label for="kontakt_os">Osoba kontaktowa:</label>
<input maxlength="255" type="text" name="kontakt_os" id="kontakt_os" required><br /><br />
<label for="kontakt_te">Numer kontaktowy:</label>
<input maxlength="255" type="text" name="kontakt_te" id="kontakt_te" required><br /><br /><br />
<input type="submit" value="Dodaj!"><br /><br /><br />
</form>
<br /><br />
<?php
if ($_POST) {
$con = mysql_connect("{xyz}","{xyz}","{xyz}");
if (!$con) {
die("<p class='error'>Brak połączenia z bazą MySQL: " .mysql_error(). "</p>");
}
mysql_select_db("{xyz}", $con)
or die("<p class='error'>Brak połączenia z tablicą MySQL: " .mysql_error(). "</p>");
$sql = "INSERT INTO klienci (nazwa, adres_1, adres_2, kontakt_os, kontakt_te)
VALUES ('$_POST[nazwa]', '$_POST[adres_1]', '$_POST[adres_2]', '$_POST[kontakt_os]', '$_POST[kontakt_te]')";
if (!mysql_query($sql,$con)) {
die("<p class='error'>Błąd: " .mysql_error(). "</p>");
}
echo "<p class='success'>Dodano nowe dane!</p>";
mysql_close($con);
}
?>


zakładając moje potrzeby, zmieniłem na PHP5.6, poprawiłem literówkę i działa ; )

Neutral, dziękuję za pomoc!

Ten post edytował kyokun 8.09.2019, 11:23:45
Go to the top of the page
+Quote Post
dublinka
post 8.09.2019, 11:28:39
Post #6





Grupa: Zarejestrowani
Postów: 271
Pomógł: 33
Dołączył: 22.02.2008

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


stosuj mysqli lub pdo

https://www.w3schools.com/php/php_mysql_connect.asp

Ten post edytował dublinka 8.09.2019, 11:35:52
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 20.09.2019 - 03:29