<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Przyszły Programista - Najnowsze pytania i odpowiedzi w Technologie webowe</title>
<link>http://forum.przyszlyprogramista.pl/?qa=qa/technologie-webowe</link>
<description>Powered by Question2Answer</description>
<item>
<title>Odpowiedź: Nie mogę się zalogować do NGINX używając wartości domyślnych</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2100/nie-mog%C4%99-si%C4%99-zalogowa%C4%87-nginx-u%C5%BCywaj%C4%85c-warto%C5%9Bci-domy%C5%9Blnych&amp;show=2101#a2101</link>
<description>&lt;p&gt;&lt;code data-end=&quot;276&quot; data-start=&quot;254&quot;&gt;network_mode: &quot;host&quot;&lt;/code&gt; może powodować dziwne problemy, &lt;strong data-end=&quot;352&quot; data-start=&quot;309&quot;&gt;szczególnie na systemach nie-Linuxowych.&lt;/strong&gt;&amp;nbsp;Spróbuj go usunąć i zamiast tego określ porty ręcznie&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2100/nie-mog%C4%99-si%C4%99-zalogowa%C4%87-nginx-u%C5%BCywaj%C4%85c-warto%C5%9Bci-domy%C5%9Blnych&amp;show=2101#a2101</guid>
<pubDate>Thu, 24 Apr 2025 15:39:25 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: wyświetlanie opcji drop-down menu (mvc)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2092/wy%C5%9Bwietlanie-opcji-drop-down-menu-mvc&amp;show=2093#a2093</link>
<description>&lt;p&gt;Cześć Natalia,&lt;/p&gt;

&lt;p&gt;Jeśli dobrze rozumiem twój plan, to rzucają mi się w oczy jedno miejsce.&lt;br&gt;
Przekazujesz kategorie go widoku:&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
public function createViewAddIncome()
  {
    echo $this-&amp;gt;view-&amp;gt;render(&quot;transactions/add_income.php&quot;, [
      'categories' =&amp;gt; $this-&amp;gt;transactionsService-&amp;gt;selectCategoriesIncomes()
    ]);
  }&lt;/pre&gt;

&lt;p&gt;a w widoku przechodzisz po nich w pętli i sprawdzasz $oldFormData (nie widzę, jak jest przekazana ta tablica, ale zakładam, że istnieje)&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
&amp;lt;select class=&quot;category&quot; name=&quot;category&quot;&amp;gt;
    &amp;lt;option selected disabled&amp;gt;Wybierz kategorię przychodu&amp;lt;/option&amp;gt;
        &amp;lt;?php foreach ($categories as $category): ?&amp;gt;
        &amp;lt;option value=&quot;&amp;lt;?php echo $oldFormData[$category] ? 'selected' : ''; ?&amp;gt;&quot;&amp;gt;
        &amp;lt;/option&amp;gt;
    &amp;lt;?php endforeach; ?&amp;gt;
&amp;lt;/select&amp;gt;&lt;/pre&gt;

&lt;p&gt;czy poniższa linijka na pewno ustawia value i oznacza ją jako selected?&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
&amp;lt;option value=&quot;&amp;lt;?php echo $oldFormData[$category] ? 'selected' : ''; ?&amp;gt;&quot;&amp;gt;&lt;/pre&gt;

&lt;p&gt;Być może powinno wyglądać to mniej więcej tak, zakładając, ze twoja funkcja&amp;nbsp;selectCategoriesIncomes() zwraca tablicę w postaci ['USA', 'Canada', Mexico' ...]&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
&amp;lt;select class=&quot;category&quot; name=&quot;category&quot;&amp;gt;
    &amp;lt;option selected disabled&amp;gt;Wybierz kategorię przychodu&amp;lt;/option&amp;gt;
        &amp;lt;?php foreach ($categories as $category): ?&amp;gt;
        &amp;lt;option value=&quot;&amp;lt;?php $category ?&amp;gt;&quot; &amp;lt;?php echo $oldFormData[$category] === $category ? 'selected' : ''; ?&amp;gt;&amp;gt;
&amp;nbsp;       &amp;lt;?php echo $category; ?&amp;gt;
        &amp;lt;/option&amp;gt;
    &amp;lt;?php endforeach; ?&amp;gt;
&amp;lt;/select&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2092/wy%C5%9Bwietlanie-opcji-drop-down-menu-mvc&amp;show=2093#a2093</guid>
<pubDate>Sat, 15 Mar 2025 19:09:47 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: dodawanie użytkownika do bazy (mvc)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2089/dodawanie-u%C5%BCytkownika-do-bazy-mvc&amp;show=2090#a2090</link>
<description>&lt;p&gt;Pierwszy strzał - w pgadmin robisz:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:sql;&quot;&gt;
DESCRIBE users;&lt;/pre&gt;

&lt;p&gt;aby zobaczyć strukturę tabeli.&lt;/p&gt;

&lt;p&gt;Drugi - dodaj error handling aby zobaczyć co jest nie tak:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
public function create(array $formData)
{
    if (!isset($formData['name'])) {
        throw new \Exception('Pole &quot;name&quot; jest wymagane.');
    }
    try {
        $this-&amp;gt;db-&amp;gt;query(
            &quot;INSERT INTO users(name, password, email) VALUES(:name, :password, :email)&quot;,
            [
                'name' =&amp;gt; $formData['name'],
                'email' =&amp;gt; $formData['email'],
                'password' =&amp;gt; $formData['password'],
            ]
        );
    } catch (\Exception $e) {
        error_log($e-&amp;gt;getMessage());
        throw $e;
    }
}
&lt;/pre&gt;

&lt;p&gt;trzeci strzał - połączenie z db :&amp;nbsp; jeśli używasz niestandardowego obiektu do komunikacji z bazą danych (np. $this-&amp;gt;db), upewnij się, że obiekt ten działa poprawnie i połączenie do bazy jest aktywne. Jeśli masz dostęp do konfiguracji, sprawdź, czy połączenie jest prawidłowe i nie występują żadne problemy z dostępem do bazy&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2089/dodawanie-u%C5%BCytkownika-do-bazy-mvc&amp;show=2090#a2090</guid>
<pubDate>Sun, 02 Mar 2025 22:03:21 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: aplikacja budżetowa z MVC - wyświetlanie strony rejestracji</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2078/aplikacja-bud%C5%BCetowa-mvc-wy%C5%9Bwietlanie-strony-rejestracji&amp;show=2088#a2088</link>
<description>Zbudowałam ten framework od początku, dodałam poprawki i nadal mam ten sam problem.. . Mam prośbę, żeby ktoś przejrzał pliki z githuba (&lt;a href=&quot;https://github.com/NatKacz99/budget-app-MVC&quot; rel=&quot;nofollow&quot;&gt;https://github.com/NatKacz99/budget-app-MVC&lt;/a&gt;) i podpowiedział co poprawić.</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2078/aplikacja-bud%C5%BCetowa-mvc-wy%C5%9Bwietlanie-strony-rejestracji&amp;show=2088#a2088</guid>
<pubDate>Tue, 11 Feb 2025 19:29:04 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Błąd: &quot;Cannot modify header information - headers already sent&quot; - Aplikacja budżetowa PHP</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2084/cannot-modify-information-headers-already-aplikacja-bud%C5%BCetowa&amp;show=2085#a2085</link>
<description>&lt;p&gt;Pierwszy strzał to obstawiałbym, że brakuje:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
 else if ($_SESSION['form_period_of_time'] == &quot;current_month&quot; || $_SESSION['form_period_of_time'] == &quot;previous_month&quot; || $_SESSION['form_period_of_time'] == &quot;current_year&quot;) {
                        header('Location: balance.php');
                        exit();  // Dodaj exit() po przekierowaniu
                    }&lt;/pre&gt;

&lt;p&gt;Zobacz, że podobnie postępujesz na samej górze skryptu :&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

session_start();

if (!isset($_SESSION['user_logged'])) {
    header('Location: index.php');
    exit();
}
... reszta kodu&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2084/cannot-modify-information-headers-already-aplikacja-bud%C5%BCetowa&amp;show=2085#a2085</guid>
<pubDate>Tue, 04 Feb 2025 21:59:43 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Dane z funkcji asynchronicznej</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2082/dane-z-funkcji-asynchronicznej&amp;show=2083#a2083</link>
<description>&lt;p&gt;Na pierwszy rzut oka widzę 3 ścieżki:&lt;br&gt;
- użycie async/await (jeśli masz wsparcie dla promes w swojej bazie danych). Np dla mysql2 możesz zrobić taki myk:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
app.post('/savetodatabase', async (req, res) =&amp;gt; {
    try {
        const note_id2 = 'SELECT MAX(note_id) AS idNote FROM notes WHERE user_id = ?';
        const [rows] = await db.promise().query(note_id2, [user_id]);
        const noteIdVar = rows[0].idNote;
        console.log(&quot;NOTE ID WYNOSI in: &quot;, noteIdVar); //tutaj normalna wartość

        // Możesz teraz wykonać inne operacje, np. zapisać noteIdVar do bazy
        res.json({ noteIdVar });

    } catch (err) {
        console.log(err);
        res.json({ Message: &quot;Server Side Error&quot; });
    }
});
&lt;/pre&gt;

&lt;p&gt;db.promise().query zwraca promesę, którą możesz użyć w połączeniu z await, co pozwala na synchronizację kodu i zapewnia, że operacje zależne od noteIdVar będą wykonywane po zakończeniu zapytania.&lt;/p&gt;

&lt;p&gt;- użycie funkcji callback w celu przetworzenia wartości:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
app.post('/savetodatabase', (req, res) =&amp;gt; {
    const note_id2 = 'SELECT MAX(note_id) AS idNote FROM notes WHERE user_id = ?';
    
    db.query(note_id2, [user_id], (err, data) =&amp;gt; {
        if (err) {
            return res.json({ Message: &quot;Server Side Error&quot; });
        } else {
            const noteIdVar = data[0].idNote;
            console.log(&quot;NOTE ID WYNOSI in: &quot;, noteIdVar);
            res.json({ noteIdVar });
        }
    });
});
&lt;/pre&gt;

&lt;p&gt;W tym przypadku cała logika związana z noteIdVar jest umieszczona w callbacku, który jest wywoływany po zakończeniu zapytania.&lt;/p&gt;

&lt;p&gt;- hybryda (tzn masz starszą wersję mysql, która nie wspiera promes) możesz ładnie opakować zapytanie w promesę:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
function getNoteId(user_id) {
    return new Promise((resolve, reject) =&amp;gt; {
        const note_id2 = 'SELECT MAX(note_id) AS idNote FROM notes WHERE user_id = ?';
        db.query(note_id2, [user_id], (err, data) =&amp;gt; {
            if (err) {
                reject(err);
            } else {
                resolve(data[0].idNote);
            }
        });
    });
}

app.post('/savetodatabase', async (req, res) =&amp;gt; {
    try {
        const noteIdVar = await getNoteId(user_id);
        console.log(&quot;NOTE ID WYNOSI: &quot;, noteIdVar);

        res.json({ noteIdVar });
    } catch (err) {
        res.json({ Message: &quot;Server Side Error&quot; });
    }
});
&lt;/pre&gt;

&lt;p&gt;W tej wersji zapytanie do bazy danych jest opakowane w promesę, którą można wykorzystać z async/await.&lt;/p&gt;

&lt;p&gt;Niemniej jednak wszystkie powyższe podejścia powinny Ci zapewnić, że noteIdVar będzie miało poprawną wartość po zakończeniu zapytania do bazy danych. Hope will halp.&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2082/dane-z-funkcji-asynchronicznej&amp;show=2083#a2083</guid>
<pubDate>Wed, 29 Jan 2025 22:27:15 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Current user id</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2073/current-user-id&amp;show=2076#a2076</link>
<description>&lt;p&gt;Chodzi mi o to, że mogę dostać się do id poprzez:&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
app.post('/login', (req, res) =&amp;gt; {

const sql = 'SELECT * FROM users WHERE email = ? AND password = ?';

db.query(sql, [req.body.email, req.body.password], (err, data) =&amp;gt; {

const id = data[0].id;

})

})&lt;/pre&gt;

&lt;p&gt;Ale moje pytanie jak teraz przekazać to id tutaj:&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
app.post('/savetodatabase', (req, res) =&amp;gt; {

//chciałbym użyć user_id tutaj

})&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2073/current-user-id&amp;show=2076#a2076</guid>
<pubDate>Thu, 23 Jan 2025 20:10:57 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: datepicker JavaScript</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2033/datepicker-javascript&amp;show=2034#a2034</link>
<description>A jak poprawisz literówkę w ostatniej linijce ? Zaczyna się od DATApicker zamiast datepicker</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2033/datepicker-javascript&amp;show=2034#a2034</guid>
<pubDate>Thu, 12 Sep 2024 16:31:53 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Kurs PHP odc. 6: Wysyłanie maili z poziomu kodu. Funkcja mail, PHPMailer</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2015/kurs-php-wysy%C5%82anie-maili-poziomu-kodu-funkcja-mail-phpmailer&amp;show=2018#a2018</link>
<description>Hej Marcin,&lt;br /&gt;
&lt;br /&gt;
Wracam po urlopie. Jak obecnie wygląda sytuacja u Ciebie z tym problemem?&lt;br /&gt;
&lt;br /&gt;
Jeśli masz go nadal to zobacz czy czasem nie masz antywirusa lub firewalla, który blokuje Ci połączenie. Warto &amp;nbsp;wyłączyć go na chwilę i spróbować ponownie.&lt;br /&gt;
&lt;br /&gt;
Mogę też udostępnić Ci miejsce na naszym serwerze i tam możesz zobaczyć czy ten skrypt będzie działał jak należy.</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2015/kurs-php-wysy%C5%82anie-maili-poziomu-kodu-funkcja-mail-phpmailer&amp;show=2018#a2018</guid>
<pubDate>Thu, 22 Aug 2024 16:28:31 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: div wewnątrz hiperłącza</title>
<link>http://forum.przyszlyprogramista.pl/?qa=2004/div-wewn%C4%85trz-hiper%C5%82%C4%85cza&amp;show=2005#a2005</link>
<description>&lt;p style=&quot;text-align: justify;&quot;&gt;Może nie do końca precyzyjnie to opisałam - nie chodzi o to, że stricte div się zmniejsza, bo jak najadę myszką na ten brakujący element pod tym niebieskim blokiem to też mogę w to kliknąć i otworzy nową kartę, ale właśnie ucina ten niebieski kolor ;)&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=2004/div-wewn%C4%85trz-hiper%C5%82%C4%85cza&amp;show=2005#a2005</guid>
<pubDate>Mon, 08 Jul 2024 08:08:28 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Dynamiczna obsługa tras na frameworku Express.js</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1989/dynamiczna-obs%C5%82uga-tras-na-frameworku-express-js&amp;show=1990#a1990</link>
<description>&lt;p&gt;Cześć, możesz wykorzystać react-router do obsługi nawigacji wg URL po stronie użytkownika.&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
import React from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import Home from './components/Home';
import About from './components/About';
import Posts from './components/Posts';
import CreatePost from './components/CreatePost';

function App() {
  return (
    &amp;lt;Router&amp;gt;
      &amp;lt;Switch&amp;gt;
        &amp;lt;Route exact path=&quot;/&quot; component={Home} /&amp;gt;
        &amp;lt;Route path=&quot;/about&quot; component={About} /&amp;gt;
        &amp;lt;Route path=&quot;/posts&quot; component={Posts} /&amp;gt;
        &amp;lt;Route path=&quot;/create-post&quot; component={CreatePost} /&amp;gt;
        &amp;lt;Route path=&quot;*&quot; component={NotFound} /&amp;gt;
      &amp;lt;/Switch&amp;gt;
    &amp;lt;/Router&amp;gt;
  );
}

export default App;&lt;/pre&gt;

&lt;p&gt;i po stronie express.js:&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
import express from &quot;express&quot;;
import bodyParser from &quot;body-parser&quot;;
import fs from &quot;fs&quot;;
import path from &quot;path&quot;;

const app = express();
const port = 3000;

var posts = [];
var paths = [];

app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'client/build')));

app.get(&quot;/&quot;, (req, res) =&amp;gt; {
  res.render(&quot;index.ejs&quot;);
});

for (var i = 0; i &amp;lt; posts.length; i++) {
  var path = paths[i];
  app.get(`/${path}`, (req, res) =&amp;gt; {
    res.render(`${path}.ejs`, { article: posts[i] });
  });
}

app.get(&quot;/posts&quot;, (req, res) =&amp;gt; {
  res.render(&quot;posts.ejs&quot;, { posts: posts });
});

app.post(&quot;/create-post&quot;, (req, res) =&amp;gt; {
  const article = {
    title: req.body[&quot;title&quot;],
    date: new Date().toLocaleDateString(&quot;en-US&quot;, {
      year: &quot;numeric&quot;,
      month: &quot;long&quot;,
      day: &quot;2-digit&quot;,
    }),
    htmlContent: req.body[&quot;content&quot;],
  };
  var path = article.title.replaceAll(&quot; &quot;, &quot;&quot;).toLowerCase();
  var data = `&amp;lt;%- include(&quot;partials/template.ejs&quot;) %&amp;gt;`;

  posts.push(article);
  paths.push(path);
  fs.writeFile(`./views/${path}.ejs`, data, (err) =&amp;gt; {
    if (err) throw err;
    console.log(&quot;The file has been saved!&quot;);
  });

  res.render(&quot;posts.ejs&quot;, { posts: posts });
});

app.get(&quot;/create-post&quot;, (req, res) =&amp;gt; {
  res.render(&quot;create-post.ejs&quot;);
});

app.get('*', (req, res) =&amp;gt; {
  res.sendFile(path.join(__dirname, 'client/build', 'index.html'));
});

app.listen(port, () =&amp;gt; {
  console.log(`Server running on port ${port}.`);
});&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1989/dynamiczna-obs%C5%82uga-tras-na-frameworku-express-js&amp;show=1990#a1990</guid>
<pubDate>Mon, 03 Jun 2024 12:33:13 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Problem z zadaniem: json/javaScript/chartJS</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1924/problem-z-zadaniem-json-javascript-chartjs&amp;show=1929#a1929</link>
<description>&lt;p&gt;Dobra zróbmy to porządnie:&lt;/p&gt;

&lt;p&gt;index.html&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&quot;en&quot;&amp;gt;
&amp;lt;head&amp;gt;
  &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
  &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&amp;gt;
  &amp;lt;title&amp;gt;Expense Chart&amp;lt;/title&amp;gt;
  &amp;lt;!-- Include Chart.js library --&amp;gt;
  &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/chart.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;!-- Include JavaScript file --&amp;gt;
  &amp;lt;script src=&quot;script.js&quot; defer&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;!-- HTML canvas element to render the chart --&amp;gt;
  &amp;lt;canvas id=&quot;expenseChart&quot; width=&quot;400&quot; height=&quot;200&quot;&amp;gt;&amp;lt;/canvas&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;

&lt;p&gt;script.js&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;

async function fetchData(url) {
  const response = await fetch(url);
  if (!response.ok) {
    throw new Error(`Error fetching data: ${response.statusText}`);
  }
  return await response.json();
}


async function createChart() {
  try {
    const data = await fetchData('data.json');
    const labels = data.map(entry =&amp;gt; entry.day);
    const amounts = data.map(entry =&amp;gt; entry.amount);

    const ctx = document.getElementById('expenseChart').getContext('2d');
    const chart = new Chart(ctx, {
      type: 'bar',
      data: {
        labels: labels,
        datasets: [{
          label: 'Expenses',
          data: amounts,
          backgroundColor: 'rgba(54, 162, 235, 0.5)',
          borderColor: 'rgba(54, 162, 235, 1)',
          borderWidth: 1
        }]
      },
      options: {
        scales: {
          y: {
            beginAtZero: true
          }
        }
      }
    });
  } catch (error) {
    console.error(error.message);
  }
}

&lt;/pre&gt;

&lt;p&gt;Ważniejsze kwestie do zapamiętania to tag defer oraz konstrukcja async/await. Hope will help.&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1924/problem-z-zadaniem-json-javascript-chartjs&amp;show=1929#a1929</guid>
<pubDate>Tue, 26 Mar 2024 21:08:42 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: JavaScript nie rozpoznaje składni Twig - wyświetlanie wykresu kołowego</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1884/javascript-rozpoznaje-sk%C5%82adni-wy%C5%9Bwietlanie-wykresu-ko%C5%82owego&amp;show=1886#a1886</link>
<description>&lt;p&gt;Myślę, że niepoprawnie formułujesz problem - jeżeli mieszasz kod JS i PHP w jednym skrypcie - co robić można ale nie jest zalecane- nic dziwnego, że interpreter głupieje. Jego reakcje oceniam jako prawidłową.&lt;/p&gt;

&lt;p&gt;Nie jestem zbyt dobry z JS ale może coś takiego by pomogło - plik index.HTML&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&quot;en&quot;&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&amp;gt;
    &amp;lt;title&amp;gt;Google Pie Chart&amp;lt;/title&amp;gt;
    &amp;lt;!-- Google pie-chart --&amp;gt;
    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;https://www.gstatic.com/charts/loader.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;!-- Przekazujemy dane z Twig do atrybutów data-* --&amp;gt;
    &amp;lt;div id=&quot;incomeData&quot; style=&quot;display: none;&quot; data-items=&quot;{{ incomeData }}&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div id=&quot;expenseData&quot; style=&quot;display: none;&quot; data-items=&quot;{{ expenseData }}&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;!-- Importujemy plik JavaScript --&amp;gt;
    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;!-- Miejsce na wykres --&amp;gt;
    &amp;lt;div id=&quot;chart_div&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;

&lt;p&gt;I osobno plik script.js czy jak go tam nazwiemy&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
google.charts.load(&quot;current&quot;, { packages: [&quot;corechart&quot;] });

try {
    google.charts.setOnLoadCallback(() =&amp;gt; {
        const incomeDataElement = document.getElementById('incomeData');
        const incomeData = JSON.parse(incomeDataElement.getAttribute('data-items'));
        
        const expenseDataElement = document.getElementById('expenseData');
        const expenseData = JSON.parse(expenseDataElement.getAttribute('data-items'));

        const income_data = google.visualization.arrayToDataTable([
            ['Income Category', 'Amount'],
            ...incomeData.map(item =&amp;gt; [item.category, item.amount])
        ]);

        const expense_data = google.visualization.arrayToDataTable([
            ['Expense Category', 'Amount'],
            ...expenseData.map(item =&amp;gt; [item.category, item.amount])
        ]);

        const income_options = {
            backgroundColor: '#dff0d8',
            legend: { textStyle: { fontSize: '0.5rem', fontName: 'Montserrat' } },
            title: 'Your incomes over a selected period',
            titleTextStyle: {
                color: 'black',
                fontName: 'Montserrat',
                fontSize: '1rem',
                bold: true,
                italic: false
            },
            is3D: true,
        };

        // Pozostały kod
    });
} catch (error) {
    console.error('An error occurred:', error);
}
&lt;/pre&gt;

&lt;p&gt;Ale jak wspomniałem - to tylko moje luźne przemyślenia - Boże broń wzór do naśladowania.&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1884/javascript-rozpoznaje-sk%C5%82adni-wy%C5%9Bwietlanie-wykresu-ko%C5%82owego&amp;show=1886#a1886</guid>
<pubDate>Wed, 06 Mar 2024 20:50:44 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Aplikacja budżetowa w PHP/HTML. Refaktoryzacja kodu - zapytania SQL do bazy danych</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1883/aplikacja-bud%C5%BCetowa-html-refaktoryzacja-zapytania-danych&amp;show=1885#a1885</link>
<description>&lt;p&gt;Musisz użyć tzw escape-chars - obecnie mieszasz pojedyncze i podwójne cudzysłowy&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Wariant 1&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
public static function orderTableItems($tableName) {
    $sql = &quot;SET @count = 0;
            UPDATE `&quot; . $tableName . &quot;` SET id = @count:= @count + 1;
            ALTER TABLE `&quot; . $tableName . &quot;` AUTO_INCREMENT = 1&quot;;
 
    $db = static::getDB();
    $stmt = $db-&amp;gt;prepare($sql);
    $stmt-&amp;gt;execute();
}
&lt;/pre&gt;

&lt;p&gt;Lub wariant 2&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
public static function orderTableItems($tableName) {
    $sql = 'SET @count = 0;
            UPDATE `' . $tableName . '` SET id = @count:= @count + 1;
            ALTER TABLE `' . $tableName . '` AUTO_INCREMENT = 1';
 
    $db = static::getDB();
    $stmt = $db-&amp;gt;prepare($sql);    
    $stmt-&amp;gt;execute();
}
&lt;/pre&gt;

&lt;p&gt;Generalnie to co próbujesz osiągnąć uważam za całkowicie zbędne over-engineering. Nie ma sensu tworzyć od nowa nowej tabeli przy każdym delete - to musi zemścić się wydajnościowo. Tak się po prostu nie robi w aplikacjach biznesowych&amp;nbsp;&lt;img alt=&quot;smiley&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/regular_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;smiley&quot;&gt;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1883/aplikacja-bud%C5%BCetowa-html-refaktoryzacja-zapytania-danych&amp;show=1885#a1885</guid>
<pubDate>Wed, 06 Mar 2024 20:28:32 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: PHP/HTML -  logowanie, przechodzenie po stronach</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1879/php-html-logowanie-przechodzenie-po-stronach&amp;show=1882#a1882</link>
<description>Na stronie logowania masz formularz, nadajesz mu tag `action` i odsyłasz dane z formularza do odpowiedniego pliku PHP - np login.php za pomocą metody POST. W pliku login.php walidujesz dane, porównujesz z db oraz zwracasz metodą header żądany zasób np. jeśli login i hasło niepoprawne =&amp;gt; odsyłasz header do strony logowania, podobnie gdy user nie widnieje w db. Jeżeli logowanie się powiedzie, nawigujesz headerem do odpowiedniej strony - np main_menu czy jak tam wymyślisz.&lt;br /&gt;
&lt;br /&gt;
Hope will help.</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1879/php-html-logowanie-przechodzenie-po-stronach&amp;show=1882#a1882</guid>
<pubDate>Wed, 06 Mar 2024 10:00:44 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Automatyczne wylogowywanie ze strony</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1822/automatyczne-wylogowywanie-ze-strony&amp;show=1824#a1824</link>
<description>&lt;p&gt;Otrzymałem następujący błąd:&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
Fatal error

Uncaught exception: 'ErrorException'

Message: 'session_set_cookie_params(): Session cookie parameters cannot be changed when a session is active'&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1822/automatyczne-wylogowywanie-ze-strony&amp;show=1824#a1824</guid>
<pubDate>Sat, 10 Feb 2024 12:36:03 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: @new mysqli - nie działa wyciszenie</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1800/%40new-mysqli-nie-dzia%C5%82a-wyciszenie&amp;show=1807#a1807</link>
<description>Cześć Rafał,&lt;br /&gt;
&lt;br /&gt;
Tak jak mówi Mirosław na filmie, sposób wyciszania błędów za pomocą @ jest leciwy i nowe wersje php już go pewnie nie obsługują.&lt;br /&gt;
&lt;br /&gt;
Na następnym odcinku poznasz właściwy sposób obsługi błędów za pomocą try... catch i wszystko będzie działać jak należy:)&lt;br /&gt;
&lt;br /&gt;
Satysfakcjonujących Wyzwań! &lt;br /&gt;
Artur</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1800/%40new-mysqli-nie-dzia%C5%82a-wyciszenie&amp;show=1807#a1807</guid>
<pubDate>Thu, 04 Jan 2024 17:17:44 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Testowanie aplikacji webowej z localhosta na telefonie</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1762/testowanie-aplikacji-webowej-z-localhosta-na-telefonie&amp;show=1763#a1763</link>
<description>Dzięki :)</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1762/testowanie-aplikacji-webowej-z-localhosta-na-telefonie&amp;show=1763#a1763</guid>
<pubDate>Sat, 16 Sep 2023 07:36:45 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Wartość email</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1684/warto%C5%9B%C4%87-email&amp;show=1689#a1689</link>
<description>&lt;p&gt;Utworzyłem w controllers nowy plik o nazwie&amp;nbsp;PersonalBudget.php (analogicznie do Signup.php):&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

namespace App\Controllers;

use \Core\View;
use \App\Models\ModelPersonalBudget;
use \App\Models\User;

#[\AllowDynamicProperties]
class personalBudget extends \Core\Controller
{

    public function addIncomeAction()
    {
        View::renderTemplate('PersonalBudget/addIncome.html');
    }

    public function newIncomeAction()
    {
        $personalBudget = new ModelPersonalBudget($_POST);
        if ($personalBudget-&amp;gt;insertToIncomes()) {
            $this-&amp;gt;redirect('/personalbudget/successaddincome');      
        }
    }

    public function successAddIncomeAction()
    {
        View::renderTemplate('PersonalBudget/successAddIncome.html');
    }
}
&lt;/pre&gt;

&lt;p&gt;W Models utworzyłem ModelPersonalBudget.php (analogicznie do User.php):&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

namespace App\Models;

use PDO;
use \App\Token;
use \App\Mail;
use \Core\View;

#[\AllowDynamicProperties]
class ModelPersonalBudget extends \Core\Model
{

    public $amountIncome;
    public $dateIncome;
    public $commentIncome;
    public $userId;
    public $email;
    public $paymentCategoryIncomeName;

    public function __construct($data = [])
    {
        foreach ($data as $key =&amp;gt; $value) {
            $this-&amp;gt;$key = $value;
        };
	} 

    public function getUserId()
    {

        // $db = static::getDB();
        // $queryId = $db-&amp;gt;prepare('SELECT id FROM users WHERE email = :email');	
        // $queryId-&amp;gt;bindValue(':email', $this-&amp;gt;email, PDO::PARAM_STR);
        // $queryId-&amp;gt;execute();
    
        // $userId = $queryId-&amp;gt;fetch();
		
        echo &quot;value of email: &quot;.$this-&amp;gt;email;
        exit;

        return $userId;
    }

    public function insertToIncomes()
    {

   //     $this-&amp;gt;validate();

        if (empty($this-&amp;gt;errors)){


            $personalBudget = new ModelPersonalBudget($_POST);
            $userId = $personalBudget-&amp;gt;getUserId();

			$amountIncome = $_POST['amountIncome'];
		    $dateIncome = $_POST['dateIncome'];
		    $commentIncome = $_POST['commentIncome'];

            $db = static::getDB();

            $queryIncome = $db-&amp;gt;prepare('INSERT INTO incomes (user_id, income_category_assigned_to_user_id, amount, date_of_income, income_comment) VALUES (:userId, :paymentCategoryIncome, :amount, :dateIncome, :commentIncome)');	
            $queryIncome-&amp;gt;bindValue(':userId', $userId, PDO::PARAM_INT);
            $queryIncome-&amp;gt;bindValue(':paymentCategoryIncome', 2, PDO::PARAM_INT);
            $queryIncome-&amp;gt;bindValue(':amount', $amountIncome, PDO::PARAM_STR);
            $queryIncome-&amp;gt;bindValue(':dateIncome', $dateIncome, PDO::PARAM_STR);
            $queryIncome-&amp;gt;bindValue(':commentIncome', $commentIncome, PDO::PARAM_STR);
    
            return $queryIncome-&amp;gt;execute();
        }
        return false;
    }

}
&lt;/pre&gt;

&lt;p&gt;I jak narazie chciałbym wyświetlić tylko poprawną wartość zalogowanego użytkownika&amp;nbsp;$this-&amp;gt;email w metodzie&amp;nbsp;getUserId() ale wyświetlana jest pusta wartość.&lt;/p&gt;

&lt;p&gt;Utworzyłem też addIncome.html , w którym używam odnośnika:&lt;/p&gt;

&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;form method=&quot;post&quot; action=&quot;/personalbudget/newIncomeAction&quot;&amp;gt;&lt;/pre&gt;

&lt;p&gt;Proszę o pomoc co robię źle, że nie widzę wartości email zalogowanego użytkownika?&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1684/warto%C5%9B%C4%87-email&amp;show=1689#a1689</guid>
<pubDate>Sat, 17 Jun 2023 12:28:08 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Nie mogę wysłać wiadomości przez PHPmailer</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1604/nie-mog%C4%99-wys%C5%82a%C4%87-wiadomo%C5%9Bci-przez-phpmailer&amp;show=1610#a1610</link>
<description>&lt;p&gt;Odpowiedź jest następująca - od dobrego roku GMail uruchomił zabezpieczenia, które sprawiają, że korzystanie z PHPMailera stało się odrobinę bardziej skomplikowane.&lt;br&gt;
&lt;br&gt;
Klik, klik - tutaj link do tego, jak sobie z tą sytuacją poradzić:&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;https://stackoverflow.com/questions/72113637/how-to-use-phpmailer-after-30-may-2022-when-less-secure-app-is-no-longer-an-o&quot; rel=&quot;nofollow&quot;&gt;https://stackoverflow.com/questions/72113637/how-to-use-phpmailer-after-30-may-2022-when-less-secure-app-is-no-longer-an-o&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Druga odpowiedź na Stacku jest w punkt.&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1604/nie-mog%C4%99-wys%C5%82a%C4%87-wiadomo%C5%9Bci-przez-phpmailer&amp;show=1610#a1610</guid>
<pubDate>Thu, 04 May 2023 19:19:21 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Pobieranie wartości id z fetch - aplikacja budżetowa</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1474/pobieranie-warto%C5%9Bci-id-z-fetch-aplikacja-bud%C5%BCetowa&amp;show=1495#a1495</link>
<description>&lt;p&gt;Tutaj wrzucam ogólne wskazówki dla API w PHP&lt;/p&gt;

&lt;p&gt;Ogólnie tworząc API najlepiej aby wszystkie żądania przechodziły przez stworzyć jeden kontroler który będzie decydował co dalej z każdym żądaniem zrobić (gdzie je przekazać).&amp;nbsp;&lt;br&gt;
Jednak w tej aplikacji framework nie przewiduje API do wystawienia na zewnątrz tylko mamy server side rendering w oparciu o template engine Twig&lt;br&gt;
Dlatego dla tego etapu gdzie mają być limity trzeba wystawić tylko pojedyncze endpointy i dla nich odpowiednie kontrolery z obsługą żądania od klienta.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
W zmiennej globalnej &lt;strong&gt;$_SERVER[&quot;REQUEST_URI&quot;] &lt;/strong&gt;zapisana jest informacja ścieżce użytej w danym żądaniu → wszystko do jest w URL po nazwie hosta&amp;nbsp;&lt;br&gt;
na przykład dla żądania z adresu &lt;strong&gt;https://localhost/api/tasks&lt;/strong&gt; zmienna ta będzie zawierać &lt;strong&gt;/api/tasks&lt;/strong&gt;&lt;br&gt;
Zmienna ta zawiera również ewentualny query string → elementy url po znaku ?&amp;nbsp;&lt;br&gt;
na przykład dla żądania z adresu &lt;strong&gt;https://localhost/api/tasks?id=2&lt;/strong&gt; query string to &lt;strong&gt;id=2&lt;/strong&gt;&lt;br&gt;
Aby usunąć query string należy użyć funkcji &lt;strong&gt;parse_url();&lt;/strong&gt; podając jako drugi argument &lt;strong&gt;PHP_URL_PATH&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
&lt;strong&gt;parse_url($_SERVER[&quot;REQUEST_URI&quot;], PHP_URL_PATH);&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jeśli endpoint oczekuje parametru na przykład id który jest częścią dynamicznego URL czyli id jest wartością po / która w kazdym żądaniu może mieć inną wartość&lt;br&gt;
To aby uzyskać id z URL&amp;nbsp;należy:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$path = parse_url($_SERVER[&quot;REQUEST_URI&quot;], PHP_URL_PATH);&lt;br&gt;
$parts = explode(&quot;/&quot;, $path);&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$parts&lt;/strong&gt; będzie &lt;strong&gt;tablicą &lt;/strong&gt;z elementami URL&lt;br&gt;
jeśli dynamiczny URL był na przykład tego typu &lt;strong&gt;https://localhost/api/tasks/:id&lt;/strong&gt;&lt;br&gt;
i konkretne żądanie &lt;strong&gt;https://localhost/api/tasks/18&lt;/strong&gt;&lt;br&gt;
czyli id będzie równe 18 i będzie ostatnim elelmentem tablicy $parts&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;$id = $parts[count($parts) - 1];&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jeśli potrzeba to użytą w żądaniu do serwera metodę &lt;strong&gt;HTTP &lt;/strong&gt;można uzyskać z globalnej zmiennej &lt;strong&gt;$_SERVER[&quot;REQUEST_METHOD&quot;]&lt;/strong&gt;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1474/pobieranie-warto%C5%9Bci-id-z-fetch-aplikacja-bud%C5%BCetowa&amp;show=1495#a1495</guid>
<pubDate>Sun, 19 Feb 2023 21:58:37 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Tłumaczenie słów z bazy na polski</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1453/t%C5%82umaczenie-s%C5%82%C3%B3w-z-bazy-na-polski&amp;show=1456#a1456</link>
<description>Jeśli tworzysz aplikację której jedynym językiem będzie polski to spokojnie możesz po prostu przechowywać w bazie danych nazwy w języku polskim. To według mnie najprostsze rozwiązanie :)</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1453/t%C5%82umaczenie-s%C5%82%C3%B3w-z-bazy-na-polski&amp;show=1456#a1456</guid>
<pubDate>Thu, 16 Feb 2023 16:23:07 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Wstawienie odpowiedniej wartości</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1436/wstawienie-odpowiedniej-warto%C5%9Bci&amp;show=1437#a1437</link>
<description>Może tu znajdziesz podpowiedź&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://forum.przyszlyprogramista.pl/?qa=1050/twig-pętla-for-loop-wypisywanie-kategorii&quot; rel=&quot;nofollow&quot;&gt;https://forum.przyszlyprogramista.pl/?qa=1050/twig-pętla-for-loop-wypisywanie-kategorii&lt;/a&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1436/wstawienie-odpowiedniej-warto%C5%9Bci&amp;show=1437#a1437</guid>
<pubDate>Mon, 13 Feb 2023 15:32:03 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: [PHP] Kopiowanie kategorii przychodów, wydatków z defaultowych tabel</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1275/kopiowanie-kategorii-przychod%C3%B3w-wydatk%C3%B3w-defaultowych-tabel&amp;show=1281#a1281</link>
<description>Ogólnie nie ma się czym przejmować. To jaki primary key nada baza nie ma dla programu żadnego znaczenia.&lt;br /&gt;
A oprócz tego to w realnych aplikacjach stosowanie jako primary key liczb z autoincrement nie jest zalecane ze wzgledów bezpieczeństwa. Powinno się stosować bardziej randomowe klucze np. używając uuid &lt;br /&gt;
MySQL ma nawet opcję że podczas definiowania kolumny jako primary key można podać jako sposób generowania wartości funkcję UUID()</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1275/kopiowanie-kategorii-przychod%C3%B3w-wydatk%C3%B3w-defaultowych-tabel&amp;show=1281#a1281</guid>
<pubDate>Mon, 19 Dec 2022 16:19:51 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Pie Chart - aplikacja finansowa</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1123/pie-chart-aplikacja-finansowa&amp;show=1131#a1131</link>
<description>&lt;p&gt;Narysować wykres możesz np tak (uch...ale kto normalny lubi JS?)&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
  &amp;lt;script&amp;gt;
        window.onload = function() {
            drawPieChartOfExpenses();
        }

        function drawPieChartOfExpenses() {
            var table = document.getElementById(&quot;tableOfExpenses&quot;);
            var category = [];
            var amount = [];
            var dataPoint = [];
            var totalExpense = '&amp;lt;?php echo $_SESSION['totalSumOfExpenses']; ?&amp;gt;';
            for (var index = 1; index &amp;lt; table.rows.length; ++index) {
                var row = &quot;&quot;;
                var dataPoints = &quot;&quot;
                for (var j = 0; j &amp;lt; table.rows[i].cells.length; ++j) {
                    row = table.rows[i].cells[j].innerHTML;
                    if (j % 2 == 0) {
                        category[index - 1] = row;
                    } else if (j % 2 == 1) {
                        amount[index - 1] = row;
                    }
                }
                dataPoint.push({
                    y: (amount[i - 1] / totalExpense),
                    label: category[i - 1]
                });
            }

            var chart = new CanvasJS.Chart(&quot;expensesChart&quot;, {
                theme: &quot;dark1&quot;,
                animationEnabled: true,
                backgroundColor: &quot;transparent&quot;,
                title: {
                    text: &quot;Your Expenses&quot;,
                    fontColor: &quot;aliceblue&quot;,
                    fontFamily: &quot;Inconsolata&quot;,
                },
                subtitles: [{
                    text: &quot;&quot;,
                    fontSize: 10,
                    fontColor: &quot;white&quot;,
                }],
                data: [{
                    type: &quot;pie&quot;,
                    indexLabelFontSize: 15,
                    indexLabelFontColor: &quot;white&quot;,
                    radius: 120,
                    indexLabel: &quot;{label} - #percent%&quot;,
                    yValueFormatString: &quot;####.00%&quot;,
                    click: explodePie,
                    dataPoints: dataPoint
                }]
            });
            chart.render();
        }

        function explodePie(e) {
            for (var index = 0; index &amp;lt; e.dataSeries.dataPoints.length; ++index) {
                if (index !== e.dataPointIndex)
                    e.dataSeries.dataPoints[index].exploded = false;
            }
        };
    &amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;p&gt;Konieczne importy w nagłówku head :&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
&amp;lt;script src=&quot;https://canvasjs.com/assets/script/canvasjs.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;http://code.highcharts.com/highcharts.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;http://code.highcharts.com/modules/data.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;http://code.highcharts.com/modules/exporting.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1123/pie-chart-aplikacja-finansowa&amp;show=1131#a1131</guid>
<pubDate>Tue, 15 Nov 2022 11:00:00 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Twig - pętla for loop - wypisywanie kategorii</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1050/twig-p%C4%99tla-for-loop-wypisywanie-kategorii&amp;show=1051#a1051</link>
<description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Model&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
public static function getUserIncomeCategories()

    {

        $sql = &quot;SELECT name, id FROM incomes_categories_assigned_to_users WHERE user_id = :user_id AND name != :name&quot;;

     

        $db = static::getDB();

        $incomeCategories = $db-&amp;gt;prepare($sql);

        $incomeCategories-&amp;gt;bindValue(':user_id', $_SESSION['user_id'], PDO::PARAM_INT);

        $incomeCategories-&amp;gt;bindValue(':name', 'Inne', PDO::PARAM_STR);

        $incomeCategories-&amp;gt;execute();

 

        return $incomeCategories-&amp;gt;fetchAll(PDO::FETCH_ASSOC);

}&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Controller&lt;/p&gt;

&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; style=&quot;border-spacing:0px; height:1px; width:8px&quot;&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;&amp;nbsp;&lt;/td&gt;
			&lt;td&gt;
			&lt;pre class=&quot;brush:php;&quot;&gt;
public function indexAction()

   {

       View::renderTemplate('Income/index.html', [

       'todaysDate' =&amp;gt; Dates::getTodaysDate(),

       'userIncomes' =&amp;gt; Incomes::getUserIncomeCategories(),

       'lastDate' =&amp;gt; Dates::getLastDayOfNextMonth()

       ]);
}&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;A w View już łatwo&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;select id=&quot;category&quot; class=&quot;custom-select&quot; data-live-search=&quot;true&quot; name=&quot;incomeCategory&quot;&amp;gt;

             

        {% for userIncome in userIncomes %}

            &amp;lt;option&amp;gt;{{ userIncome.name }}&amp;lt;/option&amp;gt;

        {% endfor %}

        &amp;lt;option&amp;gt;Inne&amp;lt;/option&amp;gt;                      

&amp;lt;/select&amp;gt;&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;
&lt;/p&gt;&lt;p&gt;Sorry za brak otagowania funkcji - z lenistwa skopiowałem z innego swojego posta. Hope will help.&lt;/p&gt;
</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1050/twig-p%C4%99tla-for-loop-wypisywanie-kategorii&amp;show=1051#a1051</guid>
<pubDate>Mon, 08 Aug 2022 19:31:43 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: Ładowanie plików na serwerze produkcyjnym (mvc)</title>
<link>http://forum.przyszlyprogramista.pl/?qa=1005/%C5%82adowanie-plik%C3%B3w-na-serwerze-produkcyjnym-mvc&amp;show=1016#a1016</link>
<description>Jesteś pewna, że to jest związane z htaccess? Możesz pokazać Core Controller i Router?</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=1005/%C5%82adowanie-plik%C3%B3w-na-serwerze-produkcyjnym-mvc&amp;show=1016#a1016</guid>
<pubDate>Thu, 07 Jul 2022 11:15:17 +0000</pubDate>
</item>
<item>
<title>Odpowiedź: PHP / PDO - wczytywanie innego pola z rekordu do zmiennej</title>
<link>http://forum.przyszlyprogramista.pl/?qa=698/php-pdo-wczytywanie-innego-pola-z-rekordu-do-zmiennej&amp;show=897#a897</link>
<description>&lt;p&gt;Witajcie :)&lt;br&gt;
jestem na etapie wprowadzania wzorca MVC - trochę nie ogarniam wprowadzania danych do listy rozwijalnej. Mam okodowane pobieranie danych z bazy - chodzi o ich końcowe wyświetlenie w pliku widoku.&lt;br&gt;
&lt;br&gt;
Wydaje mi się, że mam błędny zapis na końcowym etapie operacji.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;plik modelu&lt;/strong&gt;, w którym pobieram dane z bazy danych za pomocą numeru ID użytkownika:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
//POBIERANIE DANYCH Z TABELI KATEGORII PRZYCHODÓW
	    public static function findIncomesCategory($id)
    {
        $sql = 'SELECT * FROM incomes_category_assigned_to_users WHERE user_id = :id';

        $db = static::getDB();
        $stmt = $db-&amp;gt;prepare($sql);
        $stmt-&amp;gt;bindValue(':id', $id, PDO::PARAM_INT);
        $stmt-&amp;gt;setFetchMode(PDO::FETCH_CLASS, get_called_class());

        $stmt-&amp;gt;execute();

        return $stmt-&amp;gt;fetch();
		//-&amp;gt;fetchAll(PDO::FETCH_ASSOC);
    }&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
&lt;strong&gt;plik kontrolera,&lt;/strong&gt; w którym wysyłam pobrane z bazy dane do widoku:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
protected function before()
	{
		parent::before();
		//Pobieram dane dla użytkownika:
		$this-&amp;gt;incCategory = Auth::getIncomeCategory();
	}
	
	//Pokaż widok strony:
	public function newAction()
	{
        View::renderTemplate('AddIncome/new.html', ['incCat' =&amp;gt; $this-&amp;gt;incCategory]);
    }&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;plik widoku&lt;/strong&gt;, zdefiniowana lista rozwijalna:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;select id=&quot;incCategoryList&quot;  name=&quot;incCategoryList&quot; value=&quot;{{ incCategory }}&quot; class=&quot;form-control&quot;&amp;gt;
						
					&amp;lt;?php foreach($incCat as $output): ?&amp;gt; 
								&amp;lt;option value=&quot;&amp;lt;?php echo $output['id'] ;?&amp;gt;&quot;&amp;gt;
									&amp;lt;?php echo $output['name'] ?&amp;gt;
								&amp;lt;/option&amp;gt;
					&amp;lt;?php endforeach; ?&amp;gt;

				&amp;lt;/select&amp;gt; &lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
Sam blok listy rozwijalnej pojawił się, jednak nie jest on wypełniony danymi.&lt;br&gt;
Będę wdzięczny za pomoc :)&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=698/php-pdo-wczytywanie-innego-pola-z-rekordu-do-zmiennej&amp;show=897#a897</guid>
<pubDate>Mon, 11 Apr 2022 12:28:03 +0000</pubDate>
</item>
<item>
<title>PHPmailer wysyłanie maila aktywacyjnego</title>
<link>http://forum.przyszlyprogramista.pl/?qa=867/phpmailer-wysy%C5%82anie-maila-aktywacyjnego</link>
<description>&lt;p&gt;Czołem!&lt;br&gt;
Jestem na etapie wprowadzania wzorca MVC.&lt;br&gt;
Mam od paru dni taki przypadek. Przeszedłem z MailGuna na PHPmailer:&lt;br&gt;
Skrypt wykonuje wysłanie maili, zawiadamia o wysłaniu - aplikacja zapisuje nowego użytkownika&amp;nbsp;do bazy danych -&amp;nbsp;ale mail aktywacyjny nie dochodzi do adresata. Nie mam żadnych komunikatów o błędzie.&lt;br&gt;
Dzieje się tak zarówno gdy używam serwera SMTP Gmaila, jak również&amp;nbsp;serwera SMTP pocztowego cPanel (który chcę docelowo używać). Zarówno dla kont rejestrowanych na Gmailu, jak i np o2.&lt;br&gt;
&lt;br&gt;
Tak wygląda mail - kontroler:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

namespace App;

use App\Config;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

//KONTROLER WYSYŁANIA E-MAIL

class Mail
{
    //Wyślij wiadomość:
    public static function send($to, $subject, $text, $html)
    {
		require 'D:/Programy/Ampps/www/vendor/PHPMailer-master/src/Exception.php';
		require 'D:/Programy/Ampps/www/vendor/PHPMailer-master/src/PHPMailer.php';
		require 'D:/Programy/Ampps/www/vendor/PHPMailer-master/src/SMTP.php';

		require_once('D:/Programy/Ampps/www/vendor/PHPMailer-master/class.smtp.php');
		require 'D:/Programy/Ampps/www/vendor/autoload.php';
		$mail = new PHPMailer(true);

		try{
			//Ustawienia serwera:
			$mail-&amp;gt;SMTPDebug=SMTP::DEBUG_SERVER;
			//$mail-&amp;gt;SMTPDebug=2;
			$mail-&amp;gt;isSMTP();
			//$mail-&amp;gt;Mailer=&quot;smtp&quot;;
		
			$mail-&amp;gt;Host = Config::CP_HOSTNAME;
			$mail-&amp;gt;SMTPAuth = true;
			$mail-&amp;gt;Username = Config::CP_USERNAME;
			$mail-&amp;gt;Password = Config::CP_PASSWORD;
			//$mail-&amp;gt;SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
			$mail-&amp;gt;SMTPSecure=&quot;ssl&quot;;
			$mail-&amp;gt;Port = Config::CP_PORT;
			
		          //Odbiorcy:
			   $mail-&amp;gt;setFrom(Config::EMAIL_FROM, Config::EMAIL_FROM_NAME);
			   $mail-&amp;gt;AddAddress($to);
	 
			   //Content:
			   $mail-&amp;gt;isHTML(true);
			   $mail-&amp;gt;Subject = $subject;
			   $mail-&amp;gt;Body    = $html;
			   $mail-&amp;gt;AltBody = $text;
	 
			   $mail-&amp;gt;send();
			   echo 'Wiadomość została pomyślnie wysłana!';
			} 
	   catch (Exception $e) {
           echo &quot;Nie udało się wysłać wiadomości. Błąd poczty: {$mail-&amp;gt;ErrorInfo}&quot;;
       }
    }
}&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
zaś tak plik konfiguracji, skąd zaciągane są ustawienia serwera:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

namespace App;

class Config
{

    const DB_HOST = 'localhost';

    const DB_NAME = 'mf';

    const DB_USER = 'root';

    const DB_PASSWORD = '***************';
	
	//Pokaż lub ukryj wiadomości o błędach:
        const SHOW_ERRORS = true;
	const SECRET_KEY='********************************************';
	
	//Dane logowania CPanel:
	const CP_HOSTNAME = 'mail.k*********ski.pl';                 //nazwa serwera komunikacji
	const CP_USERNAME = 'obsluga@k*********ski.pl';         //adres e-mail skrzynki cPanel
	const CP_PASSWORD = '***********';                                //hasło konta pocztowego cPanel
	const CP_PORT = 465;
	
	const EMAIL_FROM = 'obsluga@k*********ski.pl';             //jw nazwa użytkownika
	const EMAIL_FROM_NAME ='autoreply';                          //wpisałem testowo cokolwiek&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
&lt;br&gt;
Jeśli miał ktoś podobny problem, lub ma go nadal - będę wdzięczny za odpowiedź :)&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=867/phpmailer-wysy%C5%82anie-maila-aktywacyjnego</guid>
<pubDate>Wed, 23 Mar 2022 18:27:06 +0000</pubDate>
</item>
<item>
<title>Problem z połączeniem SMTP za pomocą phpMailer</title>
<link>http://forum.przyszlyprogramista.pl/?qa=865/problem-z-po%C5%82%C4%85czeniem-smtp-za-pomoc%C4%85-phpmailer</link>
<description>&lt;p&gt;Witajcie!&lt;/p&gt;

&lt;p&gt;Jestem w trakcie części 4 tworzenia aplikacji webowych. Próbuję wysłać maila za pomocą phpMailer. Niestety pokazuje mi się taki komunikat:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;SMTP connect() failed. &lt;a href=&quot;https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting&quot; rel=&quot;nofollow&quot;&gt;https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Pracuję obenie na localhoście, używam poczty gmail. Próbowałam wpisywać różne wartości w&amp;nbsp;$mail-&amp;gt;Port, tj.&amp;nbsp;587, 465, 25, ale nadal jest problem z połaczeniem do SMTP. Być może ktoś z Was miał podobny problem i go rozwiązał.&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=865/problem-z-po%C5%82%C4%85czeniem-smtp-za-pomoc%C4%85-phpmailer</guid>
<pubDate>Wed, 23 Mar 2022 13:49:19 +0000</pubDate>
</item>
<item>
<title>WordPress - ustanowienie pliku konfiguracyjnego, instalacja</title>
<link>http://forum.przyszlyprogramista.pl/?qa=807/wordpress-ustanowienie-pliku-konfiguracyjnego-instalacja</link>
<description>Cześć !&lt;br /&gt;
&lt;br /&gt;
Jestem na etapie strony internetowej z WordPress.&lt;br /&gt;
Wgrałem pobrane zasoby WordPressa na serwer zewnętrzny do katalogu public_html, a teraz próbuję zdalnie ustanowić plik konfiguracyjny WordPressa.&lt;br /&gt;
Oczywiście dla nowych zasobów i nowej bazy danych utworzyłem nową bazę danych, nowego użytkownika przypisanego do zarządzania tylko tą utworzoną bazą danych &lt;br /&gt;
Wpisuję w wymagane pola nastęujace wartości (to są tylko przykładowe - nie odzwierciedlają rzeczywistych):&lt;br /&gt;
&lt;br /&gt;
Nazwę bazy danych: wwojtas_mojaBaza&lt;br /&gt;
Nazwę użytkownika: wwojtas_mojaBazaUzytkownik&lt;br /&gt;
Hasło: haSloDoBazy&lt;br /&gt;
Adresu serwera bazy danych: cl11.netmark.pl&lt;br /&gt;
Prefiksu tabeli: wp_&lt;br /&gt;
&lt;br /&gt;
Po emailu do usługodawcy otrzymałem informację, że &amp;quot;Adresem hosta MySQL (baz danych) jest: localhost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
I mimo wszystko, mimo wielokrotnych prób i podejść, zmian (, że może robię coś nie tak ) dostaję komunikat:&lt;br /&gt;
&amp;nbsp;&amp;quot;W witrynie wystąpił błąd krytyczny. Dowiedz się więcej o rozwiązywaniu problemów z WordPressem.&amp;quot;&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;Jeśli Ktoś spotkał się z problemem to proszę o pomoc.</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=807/wordpress-ustanowienie-pliku-konfiguracyjnego-instalacja</guid>
<pubDate>Thu, 30 Dec 2021 10:01:50 +0000</pubDate>
</item>
<item>
<title>Różne działania aplikacji po stronie domeny i localhostu</title>
<link>http://forum.przyszlyprogramista.pl/?qa=799/r%C3%B3%C5%BCne-dzia%C5%82ania-aplikacji-po-stronie-domeny-i-localhostu</link>
<description>&lt;p&gt;Witam wszystkich !&lt;/p&gt;

&lt;p&gt;Mam takie problem: praktycznie ukończyłem aplikację do zarządzania budżetem, przetestowałem możliwości aplikacji, dodawania przychodu i wydatku, edycji wpisów. Oczywiście&amp;nbsp;na localhoscie - wszystko działa !!&lt;/p&gt;

&lt;p&gt;Po wrzuceniu na wykupioną domenę - wszystko działa OK, tylko&amp;nbsp;funkcjonalność edycji wydatku nie działa prawidłowo (tylko ta funkcjonalność, która&amp;nbsp;prawidłowo działała na localhoscie&amp;nbsp;)&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Przyznam szczerze, że zacząłem się po głowie drapać&amp;nbsp;&lt;img alt=&quot;frown&quot; src=&quot;https://forum.przyszlyprogramista.pl/qa-plugin/ckeditor4/plugins/smiley/images/confused_smile.png&quot; style=&quot;height:23px; width:23px&quot; title=&quot;frown&quot;&gt;&lt;/p&gt;

&lt;p&gt;Może spotkał się Ktoś z problemem? Czy może problem leży po stronie domeny? A może silnik Twig ?&lt;/p&gt;

&lt;p&gt;Pozdrawiam&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=799/r%C3%B3%C5%BCne-dzia%C5%82ania-aplikacji-po-stronie-domeny-i-localhostu</guid>
<pubDate>Tue, 21 Dec 2021 21:20:09 +0000</pubDate>
</item>
<item>
<title>Tech. Web. 3 - kategorie z polskim znakiem nie zapisują się do bazy danych</title>
<link>http://forum.przyszlyprogramista.pl/?qa=778/tech-web-kategorie-polskim-znakiem-nie-zapisuj%C4%85-bazy-danych</link>
<description>&lt;p&gt;Cześć!&lt;/p&gt;

&lt;p&gt;Testuję sobie teraz moją aplikację na localhost i póki co zauważyłam, że jeżeli nazwa kategorii ma polski znak (np. gotówka, książki) to pojawia się problem. Podczas rejestracji nazwy wszystkich kategorii są dodawane do bazy z polskimi znakami, dopiero kiedy chcę dodać przychód lub wydatek i wybieram kategorię z polskim znakiem pojawia się problem, Sprawdziałam we wszystkich dokumentach, że kodowanie ustawione jest na UTF-8.&lt;/p&gt;

&lt;p&gt;Tutaj podam przykład. Chcę dodać wydatek, więc z tabeli&amp;nbsp;&lt;em&gt;expenses_category_assigned_to_users&amp;nbsp;&lt;/em&gt;chcę &quot;wyciągnąć id tej kategorii:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
$result1 = $connection-&amp;gt;query(&quot;SELECT * FROM expenses_category_assigned_to_users WHERE expenses_category_assigned_to_users.user_id = '$userid' AND expenses_category_assigned_to_users.name = '$expensecategory'&quot;);
		$row1 =$result1-&amp;gt;fetch_assoc();
		$expensecategorycategoryid = $row1['id'];&lt;/pre&gt;

&lt;p&gt;Później podobnie z metodą płatności:&lt;/p&gt;

&lt;pre class=&quot;brush:plain;&quot;&gt;
$result2 = $connection-&amp;gt;query(&quot;SELECT * FROM payment_methods_assigned_to_users WHERE payment_methods_assigned_to_users.user_id = '$userid' AND payment_methods_assigned_to_users.name = '$paymentmethod'&quot;);
		$row2 =$result2-&amp;gt;fetch_assoc();
		$paymentmethodid = $row2['id'];&lt;/pre&gt;

&lt;p&gt;Następnie chcę dodać wydatek do tabeli &lt;em&gt;expenses&amp;nbsp;&lt;/em&gt;więc mam taki warunek:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
if($result1-&amp;gt;num_rows&amp;gt;0)	
		{
			if($connection-&amp;gt;query(&quot;INSERT INTO expenses VALUES (NULL, '$userid', '$expensecategorycategoryid', '$paymentmethodid', '$amount', '$date', '$comment')&quot;))
			{
				header('Location:mainmenu.php');
			}
			else{
				throw new Exception($connection-&amp;gt;error);
			}
		}&lt;/pre&gt;

&lt;p&gt;Jeżeli kategoria wydatku miała polski znak, to ten wydatek nie będzie w ogóle dodany do bazy danych, natomiast jeżeli kategoria wydatku nie miała polskiego znaku, ale miała go kategoria płatnosci (np. gotówka), to ten wydatek zostaje dodany do bazy danych, lecz tabeli&amp;nbsp;&lt;em&gt;expenses&amp;nbsp;&lt;/em&gt;payment_methods_assigned_to_user_id pojawia się 0, zamiast id tej kategorii.&lt;/p&gt;

&lt;p&gt;Kodowanie jest wszędzie ustawione na UTF-8.&lt;/p&gt;

&lt;p&gt;Czy macie pomysł skąd ten problem?&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=778/tech-web-kategorie-polskim-znakiem-nie-zapisuj%C4%85-bazy-danych</guid>
<pubDate>Tue, 14 Dec 2021 12:49:08 +0000</pubDate>
</item>
<item>
<title>Aplikacja Budżetowa/stosowanie bloku try-catch</title>
<link>http://forum.przyszlyprogramista.pl/?qa=727/aplikacja-bud%C5%BCetowa-stosowanie-bloku-try-catch</link>
<description>&lt;p&gt;Cześć,&lt;/p&gt;

&lt;p&gt;Chciałem zapytać, jak postrzegacie dodawanie bloku try...catch przy okazji zapytań SQL z wykorzystaniem PHP i PDO. Może posłużę się przykładem :&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
try{
            $sql_insert_income = &quot;INSERT INTO incomes VALUES(NULL, :id_user, :income_category, :income_amount, :income_date, :income_comment)&quot;; 
            $query_income = $db-&amp;gt;prepare($sql_insert_income);
            $query_income-&amp;gt;bindValue(':id_user', $user_id, PDO::PARAM_INT);
            $query_income-&amp;gt;bindValue(':income_category', $incomeCategory, PDO::PARAM_INT);
            $query_income-&amp;gt;bindValue(':income_amount', $incomeAmount, PDO::PARAM_STR);
            $query_income-&amp;gt;bindValue(':income_date', $incomeDate, PDO::PARAM_STR);
            $query_income-&amp;gt;bindValue(':income_comment', $incomeComment, PDO::PARAM_STR);
            $query_income-&amp;gt;execute();
        }
 catch (PDOException $e) {
                echo &quot;DataBase Error: Request failed.&amp;lt;br&amp;gt;&quot;.$e-&amp;gt;getMessage();
              }
catch(Exception $e){
                echo &quot;Application Error: Request failed.&amp;lt;br&amp;gt;&quot;.$error-&amp;gt;getMessage();
            }&lt;/pre&gt;

&lt;p&gt;Czy stosowanie tu bloku try-catch ma sens ?&lt;/p&gt;

&lt;p&gt;W wypadku podania błędnych danych w formularzu mam validację po stronie JS oraz PHP więc teoretycznie zapytanie działa zero-jedynkowo =&amp;gt; albo wykona się całe poprawnie albo w ogóle. Czy niepotrzebnie przekombinowuję ?&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=727/aplikacja-bud%C5%BCetowa-stosowanie-bloku-try-catch</guid>
<pubDate>Thu, 18 Nov 2021 21:14:38 +0000</pubDate>
</item>
<item>
<title>Aplikaja budżetowa - złapanie zakresu dat bilansu w php</title>
<link>http://forum.przyszlyprogramista.pl/?qa=704/aplikaja-bud%C5%BCetowa-z%C5%82apanie-zakresu-dat-bilansu-w-php</link>
<description>&lt;p&gt;Jestem na etapie dodawania php do aplikacji budżetowej, a konkretniej w momencie tworzenia bilansu.&lt;/p&gt;

&lt;p&gt;Chciałabym odebrać informację o wybranym zakresie generowania bilansu i ewentualnych datach niestandardowych, ale bez używania formularza. Wydawało mi się że to nie będzie trudne, bo przecież mam w JS fragment, który rozpoznaje jaka opcja została wybrana:&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
var RangeOption = document.getElementById(&quot;BParameters&quot;);

RangeOption.addEventListener(&quot;click&quot;, function() {MakeDateRangeVisible()} );  

function MakeDateRangeVisible(){
	var DateRangeOption =document.getElementById(&quot;BParameters&quot;).value;
	
	if (DateRangeOption == 41) $('.dates').css('display', 'block');
	else  $('.dates').css('display', 'none');
}
&lt;/pre&gt;

&lt;p&gt;Chciałam zmusić php do odebrania wartości zmiennej DateRangeOption. Internet podpowiada AJAX+post, czyli teoretycznie jeśli po zdeklarowaniu zmiennej dodam:&lt;/p&gt;

&lt;pre class=&quot;brush:jscript;&quot;&gt;
$.post('balance.php',{parameters: DateRangeOption});&lt;/pre&gt;

&lt;p&gt;to powinnam móc w pliku php złapać normalnie wartość parameters jakby przyszła z formularza:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
$BalanceType = $_POST['parameters'];&lt;/pre&gt;

&lt;p&gt;Tylko, że to wyrzuca mi błąd: Undefined array key &quot;parameters&quot;.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Co robię źle, lub ewentualnie jakie inne podejście zastosować, poza zamknięciem bilansu w formularzu?&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=704/aplikaja-bud%C5%BCetowa-z%C5%82apanie-zakresu-dat-bilansu-w-php</guid>
<pubDate>Sun, 14 Nov 2021 14:43:33 +0000</pubDate>
</item>
<item>
<title>PHPMailer - nie wysyła emaila aktywującego z serwera zewnętrznego</title>
<link>http://forum.przyszlyprogramista.pl/?qa=671/phpmailer-wysy%C5%82a-emaila-aktywuj%C4%85cego-serwera-zewn%C4%99trznego</link>
<description>&lt;p&gt;Witam serdecznie wszystkich !&lt;/p&gt;

&lt;p&gt;Aktualnie pracuję nad aplikacją budżetu osobistego zgodnie z wzorcem projektowym MVC. Na localhoście wysyłka maili aktywujących konto przebiegała bez problemu. Po przeniesieniu aplikacji na serwer zewnętrzny pojawił się problem, otóż: następuje rejestracja użytkownika, ale nie jest wysyłany email aktywujący konto. Baza danych jest skonfigurowana właściwie - dane zapisują się do bazy. Może Ktoś coś doradzi ??&lt;/p&gt;

&lt;p&gt;Używam PHPMailer. Poniżej funkcja send() z klasy Mail z pliku Mail.php:&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
 public static function send($to, $subject, $text, $html)
    {
      
        $mail = new PHPMailer(true);
        try {
            //Server settings
            $mail-&amp;gt;isSMTP(true);                     //Send using SMTP
            $mail-&amp;gt;Host       = &quot;poczta.o2.pl&quot;;      //Set the SMTP server to send through
            $mail-&amp;gt;SMTPAuth   = true;                //Enable SMTP authentication
            $mail-&amp;gt;Username   = 'username';          //SMTP username
            $mail-&amp;gt;Password   = 'password';          //SMTP password
            $mail-&amp;gt;SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;    //Enable implicit TLS encryption
            $mail-&amp;gt;Port       = 465;                
          //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`

            //Recipients
            $mail-&amp;gt;setFrom(Config::EMAIL_FROM, Config::EMAIL_FROM_NAME);
            $mail-&amp;gt;AddAddress($to);

            //Content
            $mail-&amp;gt;isHTML(true);              //Set email format to HTML
            $mail-&amp;gt;Subject = $subject;
            $mail-&amp;gt;Body    = $html;
            $mail-&amp;gt;AltBody = $text;

            $mail-&amp;gt;send();
            echo 'Wiadomość została wysłana';
        } catch (Exception $e) {
            echo &quot;Nie udało się wysłać wiadomości. Błąd poczty: {$mail-&amp;gt;ErrorInfo}&quot;;
        }
    }&lt;/pre&gt;

&lt;p&gt;Będę wdzięczny za pomoc :)&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=671/phpmailer-wysy%C5%82a-emaila-aktywuj%C4%85cego-serwera-zewn%C4%99trznego</guid>
<pubDate>Fri, 05 Nov 2021 17:12:58 +0000</pubDate>
</item>
<item>
<title>Aplikacja webowa part3. - error i brak dodania rekordu z danymi usera do bazy</title>
<link>http://forum.przyszlyprogramista.pl/?qa=646/aplikacja-webowa-part3-error-dodania-rekordu-danymi-usera</link>
<description>&lt;p&gt;Helloł wszystkim :)&lt;/p&gt;

&lt;p&gt;Tym razem to ja znajdę się po stronie zadającej pytanie. Koduję obecnie dodawanie rekordu z danymi usera do bazy danych. Po wypełnieniu formularza na stronie rejestracji i kliknięciu przycisku (Sign Up), rekord nie zostaje dodany do bazy danych, nie wyświetla się również żaden error np brak połączenia z bazą danych, niepoprawna validacja loginu i hasła itd. W oknie przeglądarki wyświetla się natomiast (z nieznanego mi powodu) plik signup.php, który to sprawdza validację i powinien dodać rekord do bazy danych. Żeby było zabawniej wyświetla się od linijki nr 37.&lt;/p&gt;

&lt;p&gt;Czy ktoś z Was, może zerknąć na mój kod świeżym okiem i wskazać w nim błąd, którego moje nie dostrzega ?&lt;/p&gt;

&lt;p&gt;Formularz rejestracji (sam panel) wygląda następująco :&lt;/p&gt;

&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;div class=&quot;wrapper col-6 mx-auto mt-5&quot;&amp;gt;
                &amp;lt;form method=&quot;POST&quot; action=&quot;signup.php&quot; id=&quot;SignUpForm&quot; name=&quot;registerForm&quot; onsubmit=&quot;return validation()&quot;&amp;gt;
                    &amp;lt;div class=&quot;register-box&quot;&amp;gt;
                        &amp;lt;div class=&quot;row&quot;&amp;gt;
                            &amp;lt;div class=&quot;register-title mx-auto mb-2 px-2&quot;&amp;gt;Sign up&amp;lt;/div&amp;gt;
                        &amp;lt;/div&amp;gt;
                        &amp;lt;div class=&quot;row&quot;&amp;gt;
                            &amp;lt;div class=&quot;register-input col-sm-12 mx-auto mt-4 mb-3&quot;&amp;gt;
                                &amp;lt;div class=&quot;register-icon mx-auto&quot;&amp;gt;
                                    &amp;lt;span class=&quot;material-icons px-2 py-1&quot;&amp;gt;
                                        person
                                    &amp;lt;/span&amp;gt;
                                &amp;lt;/div&amp;gt;
                                &amp;lt;input type=&quot;text&quot; class=&quot;form-control mx-auto my-auto px-2 py-2&quot; placeholder=&quot;login&quot; aria-label=&quot;login&quot; name=&quot;login&quot; autofocus required&amp;gt;
                                &amp;lt;span&amp;gt;&amp;lt;?php echo ((isset($_SESSION['username_err']) &amp;amp;&amp;amp; $_SESSION['username_err'] != '') ? $_SESSION['username_err'] : ''); unset($_SESSION['username_err']); ?&amp;gt; &amp;lt;/span&amp;gt;
                            &amp;lt;/div&amp;gt;
                        &amp;lt;/div&amp;gt;

                        &amp;lt;div class=&quot;row&quot;&amp;gt;
                            &amp;lt;div class=&quot;register-input col-sm-12 mx-auto mb-2&quot;&amp;gt;
                                &amp;lt;div class=&quot;register-icon mx-auto&quot;&amp;gt;
                                    &amp;lt;span class=&quot;material-icons px-2 py-1&quot;&amp;gt;
                                        vpn_key
                                    &amp;lt;/span&amp;gt;
                                &amp;lt;/div&amp;gt;
                                &amp;lt;input type=&quot;password&quot; class=&quot;form-control mx-auto my-auto px-2 py-2&quot; placeholder=&quot;password&quot; aria-label=&quot;password&quot; name=&quot;password&quot; required&amp;gt;
                                &amp;lt;span&amp;gt;&amp;lt;?php echo ((isset($_SESSION['password_err']) &amp;amp;&amp;amp; $_SESSION['password_err'] != '') ? $_SESSION['password_err'] : ''); unset($_SESSION['password_err']); ?&amp;gt; &amp;lt;/span&amp;gt;
                            &amp;lt;/div&amp;gt;
                        &amp;lt;/div&amp;gt;

                        &amp;lt;div class=&quot;row&quot;&amp;gt;
                            &amp;lt;div class=&quot;register-input col-sm-12 mx-auto mb-3&quot;&amp;gt;
                                &amp;lt;div class=&quot;register-icon mx-auto&quot;&amp;gt;
                                    &amp;lt;span class=&quot;material-icons px-2 py-1&quot;&amp;gt;
                                        vpn_key
                                    &amp;lt;/span&amp;gt;
                                &amp;lt;/div&amp;gt;
                                &amp;lt;input type=&quot;password&quot; class=&quot;form-control mx-auto my-auto px-2 py-2&quot; placeholder=&quot;confirm password&quot; aria-label=&quot;password&quot; name=&quot;confpassword&quot; required&amp;gt;
                                &amp;lt;span&amp;gt;&amp;lt;?php echo ((isset($_SESSION['confirm_password_err']) &amp;amp;&amp;amp; $_SESSION['confirm_password_err'] != '') ? $_SESSION['confirm_password_err'] : ''); unset($_SESSION['confirm_password_err']); ?&amp;gt; &amp;lt;/span&amp;gt;
                            &amp;lt;/div&amp;gt;
                        &amp;lt;/div&amp;gt;


                        &amp;lt;div class=&quot;row&quot;&amp;gt;
                            &amp;lt;div class=&quot;register-button ml-2 mb-4 px-1 py-1&quot;&amp;gt;
                                &amp;lt;button&amp;gt;&amp;lt;input type=&quot;submit&quot; value=&quot;Sign up&quot; name=&quot;reg_user&quot; class=&quot;mx-auto my-auto px-1 py-1&quot;&amp;gt;&amp;lt;/button&amp;gt;
                            &amp;lt;/div&amp;gt;
                            &amp;lt;span&amp;gt;&amp;lt;?php echo ((isset($_SESSION['success']) &amp;amp;&amp;amp; $_SESSION['success'] != '') ? $_SESSION['success'] : ''); unset($_SESSION['success']); ?&amp;gt; &amp;lt;/span&amp;gt;
                            &amp;lt;span&amp;gt;&amp;lt;?php echo ((isset($_SESSION['wrong_validation']) &amp;amp;&amp;amp; $_SESSION['wrong_validation'] != '') ? $_SESSION['wrong_validation'] : ''); unset($_SESSION['wrong_validation']); ?&amp;gt; &amp;lt;/span&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/form&amp;gt;
                        &amp;lt;div class=&quot;row&quot;&amp;gt;
                            &amp;lt;div class=&quot;change_link position-absolute mt-2 px-auto py-auto&quot;&amp;gt;
                                &amp;lt;div class=&quot;info position-relative d:inline-flex&quot;&amp;gt;
                                    &amp;lt;p class=&quot;text-left &quot;&amp;gt;Already have an account ?&amp;lt;/p&amp;gt;
                                    &amp;lt;a href=&quot;index.php&quot; class=&quot;p-1&quot; style=&quot;margin-bottom: 1px;&quot;&amp;gt;Sign in&amp;lt;/a&amp;gt;
                                &amp;lt;/div&amp;gt;
                            &amp;lt;/div&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/div&amp;gt;&lt;/pre&gt;

&lt;p&gt;Natomiast plik signup.php do validacji wygląda tak :&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php
session_start();

// initializing variables
$login = &quot;&quot;;
$password = $confpassword = &quot;&quot;;
$username_err = $password_err = $confirm_password_err = $wrong_validation =  &quot;&quot;;
$success = &quot;&quot;;

//mysqli_report(MYSQLI_REPORT_STRICT);
if (($_SERVER[&quot;REQUEST_METHOD&quot;] == &quot;POST&quot;) &amp;amp;&amp;amp; (isset($_POST['reg_user']))) {

    // REGISTER USER
    //receive all input values from the form
    $login = strip_tags(trim($_POST['login']));
    $password = strip_tags(trim($_POST['password']));
    $confpassword = strip_tags(trim($_POST['confpassword']));

    // form validation: ensure that the form is correctly filled 

    if (empty($login)) {
      $_SESSION['username_err'] = &quot;Username is required !&quot;;
      header('Location: register.php'); 
    }
    if ((strlen($login) &amp;lt; 3)) {
      $_SESSION['username_err'] = &quot;Login must contain minimum 3 characters!&quot;;
      header('Location: register.php');
    }
    if (preg_match('/^[a-zA-Z0-9_]+$/', $login) == false) {
      $_SESSION['username_err'] = &quot;Login can only contain letters, numbers, and underscores.&quot;;
      header('Location: register.php');
    }
    if (empty($password)) {
      $_SESSION['password_err'] = &quot;Password is required !&quot;;
      header('Location: register.php');
    }
    if ((strlen($password) &amp;lt; 8) || (strlen($password) &amp;gt; 20)) {
      $_SESSION['password_err'] = &quot;Password must contain beetween 8 and 20 characters!&quot;;
      header('Location: register.php');
    }
    if ($password != $confpassword) {
      $_SESSION['confirm_password_err'] = &quot;The passwords do not match&quot;;
      header('Location: register.php');
    }

    // connect to the database
    require_once &quot;database.php&quot;;

    // first check the database to make sure 
    // a user with the same login do not exist
    $user_check_query = &quot;SELECT * FROM users WHERE login ='$login' LIMIT 1&quot;;
    $query = $db-&amp;gt;prepare($user_check_query);
    $query-&amp;gt;bindValue(':login', $login, PDO::PARAM_STR);
    $query-&amp;gt;execute();
    $user = $query-&amp;gt;fetch();

    if ($user) { // if user exists in db
      if ($user['login'] === $login) {
        $_SESSION['username_err'] = &quot;login already exists !&quot;;
        header('Location: register.php');
      }
    }

    // register user if there are no errors in the form
    if (empty($username_err) &amp;amp;&amp;amp; empty($password_err) &amp;amp;&amp;amp; empty($confirm_password_err)) {
      $encryptedPassword = password_hash($password, PASSWORD_DEFAULT); //hash the password before saving in the database

      $sql_insert_login = &quot;INSERT INTO users 
      VALUES(NULL, ':login', ':encryptedPassword')&quot;;
      $query_login = $db-&amp;gt;prepare($sql_insert_login);
      $query_login-&amp;gt;bindValue(':login', $login, PDO::PARAM_STR);
      $query_login-&amp;gt;bindValue(':encryptedPassword', $encryptedPassword, PDO::PARAM_STR);
      $query_login-&amp;gt;execute();

      if ($db-&amp;gt;query($query_user) === TRUE) {
        $_SESSION['success']  = &quot;New user added successfully&quot;;
      } else {
        $_SESSION['wrong_validation'] = &quot;Failed to add new user. Please try again later.&quot;;
        header('Location: register.php');
        
      }

      //assign to user incomes,expenses,payment default template of db
        $sql_insert_incomes_template_default = &quot;INSERT INTO incomes_category_assigned_to_users (user_id, name) 
        SELECT users.id, incomes_category_default.name 
        FROM users, incomes_category_default
        WHERE users.login= :login&quot;;
        $query_incomes = $db-&amp;gt;prepare($sql_insert_incomes_template_default);
        $query_incomes-&amp;gt;bindValue(':login', $login, PDO::PARAM_STR);
        $query_incomes-&amp;gt;execute();

        $sql_insert_expenses_template_default =&quot;INSERT INTO expenses_category_assigned_to_users (user_id, name) 
        SELECT users.id, expenses_category_default.name 
        FROM users, expenses_category_default 
        WHERE users.login= :login&quot;;
        $query_expenses = $db-&amp;gt;prepare($sql_insert_expenses_template_default);
        $query_expenses-&amp;gt;bindValue(':login', $login, PDO::PARAM_STR);
        $query_expenses-&amp;gt;execute();

        $sql_insert_payment_template_default =&quot;INSERT INTO payment_methods_assigned_to_users (user_id, name) 
        SELECT users.id, payment_methods_default.name 
        FROM users, payment_methods_default 
        WHERE users.login= :login&quot;;
        $query_payment = $db-&amp;gt;prepare($sql_insert_payment_template_default);
        $query_payment-&amp;gt;bindValue(':login', $login, PDO::PARAM_STR);
        $query_payment-&amp;gt;execute();

      $_SESSION['login'] = $login;
      $_SESSION['success'] = &quot;You are now logged in&quot;;
      header('location: menu.php');
      exit();
    }
} 
else {
  echo &quot;Oops! Something went wrong. Please try again later.&quot;;
  exit();
}
&lt;/pre&gt;

&lt;p&gt;Do połączenia z bazą danych wykorzystuję dwa pliki :&lt;/p&gt;

&lt;p&gt;config.php&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

return [
    'host' =&amp;gt; 'localhost',
    'user' =&amp;gt; 'root',
    'password' =&amp;gt; '',
    'database' =&amp;gt; 'walletfy'
    ];&lt;/pre&gt;

&lt;p&gt;oraz database.php :&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

$config = require_once 'config.php';

try {
	
	$db = new PDO(&quot;mysql:host={$config['host']};dbname={$config['database']};charset=utf8&quot;, $config['user'], $config['password']);
	$db-&amp;gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch (PDOException $error) {
	
	echo $error-&amp;gt;getMessage();
	exit('Internal server error ! Please try again later.');
	
}

&lt;/pre&gt;

&lt;p&gt;Anybody ? Any hints ?&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=646/aplikacja-webowa-part3-error-dodania-rekordu-danymi-usera</guid>
<pubDate>Tue, 26 Oct 2021 20:36:59 +0000</pubDate>
</item>
<item>
<title>404 error - aplikacja budżetowa MVC</title>
<link>http://forum.przyszlyprogramista.pl/?qa=490/404-error-aplikacja-bud%C5%BCetowa-mvc</link>
<description>Witam&lt;br /&gt;
&lt;br /&gt;
Jestem na końcu procesu tworzenia aplikacji budżetowej przy użyciu frameworku MVC. &lt;br /&gt;
&lt;br /&gt;
Po przesłaniu 5 folderów ( App, Core, logs, public, vendor) na serwer i po wejściu w adres do aplikacji następuje niezrozumiałe dla mnie zjawisko. Pierwsza strona ( /Home/index.html ) się wyświetla, ale wygląda jakby nie wczytał się plik style.css - jest to czysty html bez jakiegokolwiek stylizowania. Po kliknięciu na przycisk rejestracji lub zalogowania się wyskakuje błąd 404 z komentarzem: &amp;quot;The resource requested could not be found on this server!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Pierwsza myśl, oczywiście że czegoś brakuje ale skopiowałem wszystko to, czego używałem przy łączeniu przez localhost ( wspomniane 5 folderów ), zatem wszystko powinno być. Na innych forach przeczytałem również, że problem może leżeć w braku plików .htaccess, ale i one są (usuwałem je, zmieniałem nazwy ale bez skutku). &lt;br /&gt;
&lt;br /&gt;
Jeśli miał ktoś podobny problem lub wie gdzie mogę doszukiwać się błędu to proszę o pomoc.</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=490/404-error-aplikacja-bud%C5%BCetowa-mvc</guid>
<pubDate>Wed, 28 Jul 2021 16:44:57 +0000</pubDate>
</item>
<item>
<title>Dostęp do atrybutów modelu z poziomu JS. MVC</title>
<link>http://forum.przyszlyprogramista.pl/?qa=459/dost%C4%99p-do-atrybut%C3%B3w-modelu-z-poziomu-js-mvc</link>
<description>&lt;p&gt;Witam&lt;/p&gt;

&lt;p&gt;Jestem na etapie tworzenia aplikacji budżetowej w oparciu o framework MVC,&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Przyszła kolej na dodanie wykresu kołowego. Jest on w całości zrealizowany w JS ale do jego poprawnego działania&amp;nbsp;potrzebuję móc odczytać kilka tablic, które znajdują się w obiekcie typu model.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Obiekt ten wysyłam poprzez kontroler do widoku w taki sposób:&lt;/p&gt;

&lt;p&gt;View::renderTemplate('Balancing/show.html', [ 'selector' =&amp;gt; $selector, 'downBorder' =&amp;gt; $downBorder, 'topBorder' =&amp;gt; &amp;nbsp;$topBorder, 'balance' =&amp;gt; $balance]);&lt;/p&gt;

&lt;p&gt;Model&amp;nbsp; &lt;strong&gt;&lt;em&gt;balance&amp;nbsp;&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;zawiera jak wspomniałem kilka tablic z nazwami kategorii wydatków i sumarycznymi wartościami tych wydatków.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;lt;?php&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; namespace App\Models;&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; use PDO;&lt;br&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; use \Core\View;&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; class Balance extends \Core\Model&lt;br&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;protected $userId, $downTimeBorder, $topTimeBorder;&lt;br&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public $incomesSummaryAmount, $incomeCategoryNames;&lt;br&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public $expensesSummaryAmount, $expenseCategoryNames;&lt;br&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...&lt;/p&gt;

&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Chciałbym teraz w obiekcie typu View w skrypcie do tworzenia wykresu odczytać tablicę np&amp;nbsp; $incomeCategoryNames. W jaki sposób mogę to zrobić ? Na forach znalazłem coś jedynie typu:&lt;/p&gt;

&lt;pre&gt;
var data = @Html.Raw(JsonConvert.SerializeObject(this.Model));&lt;/pre&gt;

&lt;p&gt;Ale wydaje się dość skomplikowane jak na polecenie, które ma jedynie odczytać dane.&lt;br&gt;
Jeśli macie jakieś prostsze sposoby to proszę o wskazówki.&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=459/dost%C4%99p-do-atrybut%C3%B3w-modelu-z-poziomu-js-mvc</guid>
<pubDate>Tue, 20 Jul 2021 19:31:33 +0000</pubDate>
</item>
<item>
<title>Wspólne programowanie - aplikacja webowa Budżet Osobisty</title>
<link>http://forum.przyszlyprogramista.pl/?qa=451/wsp%C3%B3lne-programowanie-aplikacja-webowa-bud%C5%BCet-osobisty</link>
<description>Cześć!&lt;br /&gt;
&lt;br /&gt;
Jestem na etapie tworzenia weryfikacji przesyłanego formularza danych wydatku/przychodu. Z tego co się dowiedziałem od chłopaków z kursu, że powinny być 2 takie weryfikacje: jedna pisana w JS &amp;nbsp;a druga po stronie backendu, czyli w PHP. Czy jest ktoś na podobnym etapie i chciał by podzielić się spostrzeżeniami i pokodować wspólnie? Jeśli chodzi o czas i porę to dostosuję się do kogoś&lt;br /&gt;
&lt;br /&gt;
Zapraszam do kontaktu :)&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam,&lt;br /&gt;
Tomek</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=451/wsp%C3%B3lne-programowanie-aplikacja-webowa-bud%C5%BCet-osobisty</guid>
<pubDate>Sun, 18 Jul 2021 19:36:08 +0000</pubDate>
</item>
<item>
<title>Składnia zapytania plik PHP</title>
<link>http://forum.przyszlyprogramista.pl/?qa=450/sk%C5%82adnia-zapytania-plik-php</link>
<description>&lt;p&gt;Witam wszystkich !&lt;/p&gt;

&lt;p&gt;Jestem już na etapie technologii webowych.&lt;/p&gt;

&lt;p&gt;Plik z serwera wyrzuca mi błąd w składni, którą już tyle razy przeglądałem, że mieni mi się w oczach.&lt;/p&gt;

&lt;p&gt;Proszę o uwagi - nie potrafię się dopatrzeć błędu.&lt;/p&gt;

&lt;p&gt;Z&amp;nbsp; góry dziękuję !&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
while ($tableRow = $effect -&amp;gt; fetch_assoc()) {
 echo '&amp;lt;div class=&quot;row row-cols-1 row-cols-md-2 m-auto&quot;&amp;gt;';
 echo '&amp;lt;div class=&quot;col&quot;&amp;gt;';
echo '&amp;lt;div class=&quot;form-check&quot;&amp;gt;';
echo '&amp;lt;input class=&quot;form-check-input&quot; type=&quot;checkbox&quot; name=&quot;category&quot; id=&quot;'$tableRow['name']'&quot; value=&quot;'.$tableRow['name'];
                                                   if(isset($_SESSION['f_expense_category_assigned_to_user_id'])) {
if($tableRow['name'] == $_SESSION['f_expense_category_assigned_to_user_id']) 
{
echo '&quot;checked =&quot;checked&quot;';
}
echo '&quot;&amp;gt;';
echo'&amp;lt;label class=&quot;form-check-label&quot; for=&quot;'$tableRow['name']'&quot;&amp;gt;'.$tableRow['name'].'&amp;lt;/label&amp;gt;';
echo '&amp;lt;/div&amp;gt;';
echo '&amp;lt;/div&amp;gt;';
echo '&amp;lt;/div&amp;gt;';                                                                                             }&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=450/sk%C5%82adnia-zapytania-plik-php</guid>
<pubDate>Sat, 17 Jul 2021 20:42:06 +0000</pubDate>
</item>
<item>
<title>Kurs PHP - pusta strona logowania</title>
<link>http://forum.przyszlyprogramista.pl/?qa=386/kurs-php-pusta-strona-logowania</link>
<description>&lt;p&gt;Witajcie,&amp;nbsp;&lt;br&gt;
po krótkiej przerwie wróciłem do nauki kodowania - jestem w trakcie kursu Pana Zelenta (PHP/ odc. 2) - Mam taki drobny kłopot z odczytem bazy danych przez php.&amp;nbsp;&lt;br&gt;
Po wprowadzeniu danych logowania (login i hasło) skrypt przenosi&amp;nbsp;użytkownika do pliku zaloguj.php ale nic nie wyświetla - pusta strona (żadnego komunikatu o błędzie).&lt;br&gt;
Sprawdzałem składnie kodu kilkanaście razy ale jest poprawnie - a nie chciałbym takiej rzeczy zaniedbać na starcie.&lt;br&gt;
&lt;br&gt;
Będę wdzięczny za uwagę :)&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php

	require_once &quot;connect.php&quot;;
	
	$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
	
	if($polaczenie-&amp;gt;connect_errno!=0)
	{
		echo&quot;Error:&quot;.$polaczenie-&amp;gt;connect_errno;
	}
	else
	{
		$login=$_POST['login'] ;
		$haslo=$_POST['haslo'] ;
		//echo $login;
		
		$sql = &quot; SELECT * FROM uzytkownicy WHERE user='$login' AND pass='$haslo' &quot;;
		
		if($rezultat = @$polaczenie-&amp;gt;query($sql))
		{
			$ilu_userow= $rezultat-&amp;gt;num_rows;
			if($ilu_userow&amp;gt;0)
			{
				$wiersz = $rezultat-&amp;gt;fetch_assoc();
				$user=$wiersz['user'];
				
				
				$rezultat-&amp;gt;free_result();
				echo $user;
				
			}
			else
			{
				
			}
		}
		
		$polaczenie-&amp;gt;close();
	}

?&amp;gt;&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=386/kurs-php-pusta-strona-logowania</guid>
<pubDate>Sun, 20 Jun 2021 10:08:34 +0000</pubDate>
</item>
<item>
<title>Zapytanie SQL przy rejestracji użytkownika</title>
<link>http://forum.przyszlyprogramista.pl/?qa=289/zapytanie-sql-przy-rejestracji-u%C5%BCytkownika</link>
<description>&lt;p&gt;Podczas kodowania rejestracji napisałąm takie zapytanie, aby skopiować tablicę&amp;nbsp;&lt;em&gt;payment_methods_default&lt;/em&gt; do&amp;nbsp;&lt;em&gt;payment_methods_assigned_to_users:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;INSERT INTO payment_methods_assigned_to_users(id, name, user_id) SELECT NULL, payment_methods_default.name, users.id FROM users, payment_methods_default WHERE users.email = '$email'&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;zadziałało to tak, że kolejne wiersze wpisywane&amp;nbsp;do tablicy&amp;nbsp;&lt;em&gt;payment_methods_assigned_to_users&amp;nbsp;&lt;/em&gt;&amp;nbsp;mają id od 1 do 4 (są to kategorie jednego użytkownika), a przy rejestracji kolejnego użytkownika id jego kategorii&amp;nbsp;zaczyna się od 7 czyli id przeskakuje o 3 i jest 7,8,9,10. Przy kolejnym uzytkowniku 13,14,15,16. Jak myślicie, co jest nie tak z moim zapytaniem?&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=289/zapytanie-sql-przy-rejestracji-u%C5%BCytkownika</guid>
<pubDate>Fri, 21 May 2021 16:18:48 +0000</pubDate>
</item>
<item>
<title>Wyświetlanie polskich znaków - personal budget</title>
<link>http://forum.przyszlyprogramista.pl/?qa=231/wy%C5%9Bwietlanie-polskich-znak%C3%B3w-personal-budget</link>
<description>&lt;p&gt;Cześć!&lt;/p&gt;

&lt;p&gt;Mam problem z wyświetlaniem polskich znaków w programie do prowadzenia budżetu osobistego. Postawiłem już stronę we&amp;nbsp;własnej domenie i wszędzie polskie znaki wyświetlają się poprawnie &lt;span style=&quot;text-decoration: underline;&quot;&gt;z wyjątkiem pobranych z bazy danych do bilansu kategorii wydatków i przychodów&lt;/span&gt;. Może wymienię:&lt;/p&gt;

&lt;p&gt;- na&lt;span style=&quot;text-decoration: underline;&quot;&gt; localhoście&lt;/span&gt; zarówno w phpMyadmin jak i na moim komputerze wszystko działa poprawnie.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;- strona ma w sekcji meta&amp;nbsp;kodowanie utf-8:&amp;nbsp;&amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;- wszystkie pola tekstowe w bazie mysql w sekcji &quot;Metoda porównywania napisów: utf8_polish_ci.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;- kodowanie całej bazy:&amp;nbsp;utf8_polish_ci.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;- w kodzie zaraz po deklaracji połączenia: mysqli_set_charset($polaczenie, &quot;utf-8&quot;):&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mysqli_set_charset($polaczenie, &quot;utf-8&quot;);&lt;/p&gt;

&lt;p&gt;- do rejestrowania przychodów i wydatków kategorie pobierane są poprawnie&lt;/p&gt;

&lt;p&gt;tylko do bilansu: &quot;Wy?ywienie&quot; zamiast &quot;Wyżywienie&quot;, &quot;Pozosta?e&quot; zamiast &quot;Pozostałe&quot; itd.&lt;/p&gt;

&lt;p&gt;Niestety rozwiązania proponowane w internecie nie działają. Może ktoś miał podobny problem.....&lt;/p&gt;

&lt;p&gt;Mariusz&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=231/wy%C5%9Bwietlanie-polskich-znak%C3%B3w-personal-budget</guid>
<pubDate>Sun, 16 May 2021 11:13:16 +0000</pubDate>
</item>
<item>
<title>Front-end - przydatny link</title>
<link>http://forum.przyszlyprogramista.pl/?qa=227/front-end-przydatny-link</link>
<description>Jestem na etapie: Tworzymy profesjonalną aplikację internetową cz.2&lt;br /&gt;
&lt;br /&gt;
Poniżej podaję świetny link do strony, z którą można &amp;quot;pysznie&amp;quot; sprawdzić wielkość czcionek, które wybraliśmy do pracy.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.gridlover.net/try&quot; rel=&quot;nofollow&quot;&gt;https://www.gridlover.net/try&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Pozdrawiam</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=227/front-end-przydatny-link</guid>
<pubDate>Sat, 15 May 2021 14:35:59 +0000</pubDate>
</item>
<item>
<title>Problem z funkcją password_verify()</title>
<link>http://forum.przyszlyprogramista.pl/?qa=198/problem-z-funkcj%C4%85-password_verify</link>
<description>&lt;p&gt;Cześć!&lt;br&gt;
&lt;br&gt;
Słuchajcie, mam problem z funkcją password_verify($password, $row['password']) w PHP podczas logowania do aplikacji interentowej.&lt;br&gt;
&lt;br&gt;
zmienna $password to hasło od użytkownika&lt;br&gt;
&lt;br&gt;
$row['password'] jest to zahaszowane hasło pobrane z bazy&lt;br&gt;
&lt;br&gt;
Upewniłam się, że hasło wpisuję dobrze oraz zahashowane hasło również jest prawidłowo pobrane z bazy, ponieważ obie te zmienne wyświetliłam i się zgadza, a jednak if nie puszcza mojego hasła i nie mogę się zalogować. Ktoś z Was ma pomysł o co chodzi?&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
$row =$result-&amp;gt;fetch_assoc();
                
if (password_verify($password, $row['password']))
{
    $_SESSION['signed_in'] = true;
    $_SESSION['id']=$row['id'];
    $_SESSION['username'] =$row['username'];
    
    unset($_SESSION['fail']);
    $result-&amp;gt;free_result();
    header('Location:mainmenu.php');
}
else
{
    $_SESSION['fail'] = '&amp;lt;span style =&quot;color:red&quot;&amp;gt;Nieprawidłowe hasło!&amp;lt;/span&amp;gt;';
    header('Location:loginsite.php');
}&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=198/problem-z-funkcj%C4%85-password_verify</guid>
<pubDate>Mon, 10 May 2021 13:37:58 +0000</pubDate>
</item>
<item>
<title>Problem z połączeniem z bazą danych. Error 1049</title>
<link>http://forum.przyszlyprogramista.pl/?qa=50/problem-z-po%C5%82%C4%85czeniem-z-baz%C4%85-danych-error-1049</link>
<description>&lt;p&gt;Witam,&lt;br&gt;
&lt;br&gt;
Korzystając z faktu zaistnienia tego forum, chciałbym spróbować rozwiązać swój problem właśnie za jego pomocą.&lt;br&gt;
&lt;br&gt;
Otóż, jak w temacie, mam problem z połączeniem się z bazą danych (jestem na etapie tworzenia aplikacji budżetowej od strony backendu).&lt;br&gt;
&lt;br&gt;
&amp;nbsp;Oto mój fragment kodu, który ma za zadanie połączyć się z bazą danych:&lt;br&gt;
&amp;nbsp;&lt;/p&gt;

&lt;pre class=&quot;brush:php;&quot;&gt;
&amp;lt;?php
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session_start();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;require_once &quot;connect.php&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dataBaseConnect = new mysqli($host,$db_user,$db_password,$db_name);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if($dataBaseConnect-&amp;gt;connect_errno!=0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$_SESSION['dbError']=$dataBaseConnect-&amp;gt;connect_errno;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dataBaseConnect-&amp;gt;close();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
?&amp;gt;

&amp;lt;html lang=&quot;pl&quot;&amp;gt;
&amp;lt;head&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta charset=&quot;utf-8&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1, shrink-to-fit=no&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;Cash Assistant&amp;lt;/title&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta name=&quot;description&quot; content=&quot;Zapanuj nad finansami&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta name=&quot;keywords&quot; content=&quot;finanse, pieniądze, budżet&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta http-equiv=&quot;X-Ua-Compatible&quot; content=&quot;IE=edge&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.gstatic.com&quot;&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;css/bootstrap.min.css&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link href=&quot;https://fonts.googleapis.com/css2?family=Roboto+Slab&amp;amp;display=swap&quot; rel=&quot;stylesheet&quot;&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

....

&amp;lt;?php
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(isset($_SESSION['dbError']))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo &quot;Registration failed...! &amp;lt;/br&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Error code: &quot;.$_SESSION['dbError'];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo &quot;Registration succesfull !&quot;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;gt;

...

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Powyższy kod realizuje się w momencie kliknięcia &quot;Submit&quot; w formularzu rejestracji.&lt;br&gt;
&lt;br&gt;
Jednak za każdym razem wyrzuca błąd o numerze 1049 (tylko ten błąd, nic więcej).&lt;br&gt;
&lt;br&gt;
Poniżej zamieszczam również kod z pliku connect.php:&lt;br&gt;
&lt;br&gt;
&amp;lt;?php&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$host = 'localhost';&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$db_user = 'root';&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$db_password = '';&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$db_name = 'cashdatabase';&lt;br&gt;
?&amp;gt;&lt;br&gt;
&lt;br&gt;
Jest to zatem najprostsza wersja kodu który ma za zadanie jedynie połączyć się z bazą.&lt;br&gt;
&lt;br&gt;
Dodam również, że oczywiście taka baza istnieje i jest widoczna w localhost/phpmyadmin&lt;br&gt;
&lt;br&gt;
Za każdą sugestię co do możliwego błędu z góry dziękuję&lt;/p&gt;</description>
<category>Technologie webowe</category>
<guid isPermaLink="true">http://forum.przyszlyprogramista.pl/?qa=50/problem-z-po%C5%82%C4%85czeniem-z-baz%C4%85-danych-error-1049</guid>
<pubDate>Thu, 29 Apr 2021 16:36:40 +0000</pubDate>
</item>
</channel>
</rss>