• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP i MySQLi linki prowadzace do strony na temat rekordu mysql

0 głosów
136 wizyt
pytanie zadane 11 lutego 2016 w PHP, Symfony, Zend przez użytkownika gab123 Mądrala (5,140 punkty)

A wiec robię stronę z kursami i na stronie głównej są wypisane tytuły i  kategorie kursu po czym ma być link do strony głownej tego kursu w którym będą linki do poszczególnych lekcji. Problem w tym że chcę dla wszystkich stron głównych kursów chcę użyć ednej stronny a informacja jaki to kurs zapisać w zmiennej sesyjnej i nie wiem jak to zrobić.. Cóż moż pokaże kod

<?php 
session_start() ;
if(!isset($_SESSION['login'])){
	header('Location:index.php') ;
}

require_once "connect.php" ;
$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name) ;

if ($polaczenie->connect_errno==0){ 
$rezultat = $polaczenie->query("SELECT * FROM kursy ") ;
$ile = $rezultat->num_rows;
for($i=1;$i<=$ile;$i++){
	$rezultat = $polaczenie->query("SELECT * FROM kursy WHERE id = '$i'") ;
	$zmienne = $rezultat->fetch_assoc();
	echo '<a href="ogldKurs">' Zaobacz ten kurs </a>
/* I wlasnie w linijce wyżej ma być taki mechanizm by po kliknieciu linku zmienna sesyjna została ustawinona na aktualne id kursu */
	echo $zmienne['nazwa'] . '-' ;
	echo $zmienne['idumiejetnosci'] . '</br>' ;
}
}
?>

Proszę pomóżcie. I nie krytykujcie że używam akurat MySQLi.

2 odpowiedzi

0 głosów
odpowiedź 11 lutego 2016 przez użytkownika misiek.sz Użytkownik (990 punkty)
wybrane 12 lutego 2016 przez użytkownika gab123
 
Najlepsza
Witam,

a nie lepiej, wyświetlić zapytaniem wszystkie strony główne, a później podlinkować id do szczegółów każdego kursu i po przez $_GET przekazać id do drugiego zapytania i w WHERE id='$id' wyświetlić szczegóły każdego kursu?
komentarz 12 lutego 2016 przez użytkownika gab123 Mądrala (5,140 punkty)

Nie do końca rozumiem nie wiem jak się wyświetla wszystkie informacje jednym zapytaniem bo jeśli zrobisz tak :

$rezult = $polaczenie->query($zapytanie);
$zmienne = $rezult->fetch_assoc() ;
echo $zmienne['atrybut'] ;

Pojawi się atrybut tylko pierwszej i czy do metody get nie trzeba mieć przycisku submit i można ja uzywac do linku ?

komentarz 12 lutego 2016 przez użytkownika misiek.sz Użytkownik (990 punkty)
a możesz podać mi link do Twojej strony to będę wiedział co i jak i postaram się Ci to napisać:)
komentarz 12 lutego 2016 przez użytkownika Anysiu68 Początkujący (320 punkty)

Witaj,

metody GET można używać jako linku. Jestem jeszcze początkujący w PHP i rozumiem to w ten sposób, że GET nie wstawia "zmiennych" do linku tylko je z niego wyciąga.

$_GET['nazwa'];

wyciągnie 7 z linku

href="jakislink.pl?nazwa=7"

A jeśli chodzi o wypisanie wszystkich wierszy pobranych z bazy to wystarczy dodać pętlę:

while($zmienne = $rezultat1->fetch_assoc()){
echo $zmienne['atrybut'] ;
}

i wyrzucić WHERE z zapytania.

Pozdrawiam.

komentarz 12 lutego 2016 przez użytkownika gab123 Mądrala (5,140 punkty)

misiek.sz Niestety robię tą stronę w WAMP żeby poćwicz i nie mam wykupionego serwera więc trudno podlinkować.

komentarz 12 lutego 2016 przez użytkownika gab123 Mądrala (5,140 punkty)

Anysiu68                Bardzo dziękuje za pomoc. Nie do końca tylko rozumiem metodę GET myślałam że służy wyłącznie do formularzy(tak też podpowiada gogle) Mógłbyś mi wysłać linka z takim przykładem. Albo wyjaśnić jak w drugiej podstronie można sprawdzać czy link z ta nazwą został kliknięty (gdzie na tej stronie trzeba wpisywać method="post" action="strona" skoro nie ma formularza.

Pozdrawiam

komentarz 12 lutego 2016 przez użytkownika Anysiu68 Początkujący (320 punkty)

Załóżmy, że mamy taki formularz:

<form method="get" action="plik-na-serwerze.php">
     <input type="text" name="zmienna">
     <input type="submit">
</form>

Wtedy w pliku plik-na-serwerze.php odbierzemy tą zmienną w następujący sposób:

$naszazmienna = $_GET['zmienna'];

I jak zwrócisz uwagę na adres strony w przeglądarce to po pytajniku leci doklejona zmienna z wartością jaką wpisałeś w pole o nazwie zmienna. Po znaku pytajnika nazwa zmiennej, po znaku równości jej wartość. Jeśli tego nie widzisz musisz zmienić ustawienia przeglądarki.

A tera można zrobić (prawie) dokładnie to samo za pomocą zwykłego linku:

<a href="plik-na-serwerze.php?zmienna=5">kliknij</a> 

Jedyna różnica jest taka, że formularz wyśle to, co wpiszesz w jego pole/pola, czyli jest bardziej "dynamiczny". Link natomiast musi być ustawiony w momencie tworzenia strony (lub utworzony za pomocą PHP, ale o tym może później). Plik plik-na-serwerze.php pozostaje bez zmian.

Mam nadzieję, że nie namieszałem zbytnio. 

Pozdrawiam.

0 głosów
odpowiedź 12 lutego 2016 przez użytkownika misiek.sz Użytkownik (990 punkty)
edycja 12 lutego 2016 przez użytkownika misiek.sz

Napisałem przykładowy kod mam nadzieję, że pomoże

<?php

//pobieramy wartość id z linka
$id = $_GET['id'];

//zapytanie wyświetlające nazwy kursów i kategorie

$wynik = $polaczenie->query("SELECT * FROM kursy");
$ile = $wynik->num_rows;

for($i=0; $i<$ile; $i++)
{
	$wiersz = $wynik->fetch_assoc();
	
	//link do opisu kursu
	echo'<a href="kursy.php?=id='.$wiersz['id'].'">'.$wiersz['nazwa_kursu'].'</a>';
	echo'Kategoria kursu to:'.$wiersz['kategoria'];
}

//jeśli zmienna $id jest ustawiona wyświetlamy szczegóły kursu
if(isset($id))
{
	//zapytanie wyświetlające szczegółowy opis kursu
	$wynik = $polaczenie->query("SELECT * FROM kursy WHERE id='$id'");
	$ile = $wynik->num_rows;

	for($i=0; $i<$ile; $i++)
	{
	$wiersz = $wynik->fetch_assoc();
	
	echo $wiersz['nazwa_kursu'].'</br>';
	echo $wiersz['kategoria'].'</p>';
	echo $wiersz['opis_kursu'];

	}
}
?>

 

w bazie stwórz tabelę z polami id, nazwa_kursu, kategoria, opis_kursu, id ustaw na int(11) PRIMARY KEY i auto_increment, pola nazwa_kursu i kategoria na varchar, a opis_kursu na text

Metoda GET w HTML wysyła treść formularza, która jest widoczna w pasku adresu w przeciwieństwie do POST, który ukrywa tą treść, w PHP $_GET pobiera widoczne dane w pasku adresu, a $_POST odbiera dane, które nie śa widoczne w psaku adresu, połączeniem tych dwóch zmiennych SUPER GLOBALNYCH jest zmienna $_REQUEST

 

w skrypcie za pomocą linkawysyłasz dane do paska adresu wpisując <a href="nazwa_strony.php?id=1">Kliknij</a>

a w PHP pobierasz te informację za pomocą $_GET['id'], dlaczego w $_GET wpisałem id? bo tak jest ustawione w linku powyżej, jak byś napisał <a href="nazwa_strony.php?miroslawzelent=3">Kliknij</a> to zmienna GET wyglądała by tak - $_GET['miroslawzelent'] i przechowywała by w sobie wartość 3.

 

komentarz 12 lutego 2016 przez użytkownika gab123 Mądrala (5,140 punkty)
Dziekuje za pomoc teraz już mniej więcej wszystko rozumiem.

Podobne pytania

0 głosów
1 odpowiedź 43 wizyt
pytanie zadane 24 marca 2016 w PHP, Symfony, Zend przez użytkownika Dzistu Nowicjusz (120 punkty)
0 głosów
1 odpowiedź 85 wizyt
pytanie zadane 28 września 2016 w PHP, Symfony, Zend przez użytkownika Kshyhoo Początkujący (400 punkty)
0 głosów
1 odpowiedź 144 wizyt
pytanie zadane 9 listopada 2015 w PHP, Symfony, Zend przez użytkownika Pytający Początkujący (290 punkty)
...