[PHP/Mysql] Wczytywanie danych w zależności od parametru zapisanego w zmiennej / sesji

Witam.

Każdy zna pewnie fragment kodu taki jak “SELECT id, nazwa, opis FROM produkty” podczas odczytu danych z bazy MySQL. Umiem do tego dodać where typ=“gotowe”  i tak dalej. Ale potrzebuje aby odczytywało dane where typ=“zmienna” lub typ=“dana z sesji” i tutaj już nie wiem jak to zrobić. Oczywiście Najlepiej jakby pobierało tą daną z sesji.

http://php.net/manual/en/book.session.php

Tu masz wszystko o sesjach

Mam pewien problem.

W moim logowaniu taka linijka odpowiada za zapisanie użytkownika w sesji:

$_SESSION['username'] = $row['username'];

Problem w tym że potrzebuje aby ta sesja właśnie też zapisała Wybór z pola <input type=radio name=wybierz value=“jeden”> lub dwa lub trzy lub cztery.

 

Próbowałem tak:

  $_SESSION['wybierz'] = $_POST['wybierz'];

i błędu żadnego nie wywala a czy działa nie wiem. Próbowałem się do tego odwołać podczas wczytywania danych z bazy w ten sposób:

 $stmt = dbConnect()->query('SELECT id, nazwa, opis FROM produkty where typ="$_SESSION['wybierz']"');

lecz mam błąd:

Parse error: syntax error, unexpected 'wybierz' (T_STRING) in D:\xampp\htdocs\Projekty\Forward\index.php on line 40

I tu pytanie: czy źle zapisuję daną w Sesji czy źle ją odczytuję ?

Masz zagnieżdżone apostrofy, stąd źle zostaje sparsowany string, nawet kolorowanie na forum ci to podpowiada. W czym ty to piszesz w notatniku?

Akurat nie. Używam Brackets bądź Notepad++. Jak te apostrofy poprawić? Próbowałem to pozamieniać i nic…Nawet bez nich próbowałem i coś ciągle źle…

Podstawy przetwarzania ciągów znaków w php

Do tej listy dodałbym jeszcze znak ucieczki.

<?php
    
    include "core/connect.php";
    
      $dana = 'krakow';                                 
      $stmt = dbConnect()->query("SELECT id, nazwa, opis FROM produkty where typ='.$dana'");
      echo '<ul>';
      foreach($stmt as $row)
      {
          echo '<li>'.$row['nazwa'].': '.$row['opis'].'</li>';
      }
      $stmt->closeCursor();
      echo '</ul>';
?>

To jest fragment kodu jaki mam i jest dalej problem.  Gdy mam: 

typ='.$dana'

błędu nie pokazuje ale nie wczytuje rekordów z bazy gdzie typ = dana czyli zapodane jest krakow.

W przypadku gdy dam:

typ='krakow'

Działa bez problemu… 

Dobra… usunąłe kropkę przed $dana i działa ;] Teraz pomęczę się jak w to miejsce zamiast ZMiennej dać wartość z sesji :}

Czy ten sposób zapisu do sesji jest poprawny?

 $_SESSION['username'] = $row['username'];
            $_SESSION['wybierz'] = $_POST['wybierz'];

Pierwsze na pewno bo po zalogowaniu działa. Drugie pobiera do sesji wartosć wybraną z formularza.

I problem 2, jak tą daną wczytać potem zamiast tej zmiennej:

Próbowałem tak:

$dana = "$_SESSION['wybierz']"; 

lecz też nie działa. Zamieniałem " na ', próowałem kropki i ciągle jakiś błąd… ;/

 

nie masz zielonego pojęcia o PHP. Zacznij może od podstaw a potem zabieraj się za sesje czy bazę danych.

Uczę się cały czas. Jak na razie wszystko co potrzebuję mi wychodzi oprócz tego co napisałem. Będę próbował sam lecz liczyłem na pomoc od was.

dostałeś pomoc w postaci linka do kursu PHP. Naucz się podstaw bo na razie to improwizujesz i robisz coś czego nie rozumiesz.

 

Dzięki ale poradziłem sobie ze swoim problemem już.