Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> tworzenie sklepu internetowego, Problemy i pytania
kujol
post 21.07.2013, 14:54:00
Post #1





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Witam, tworzę swój pierwszy silnik pod sklep internetowy, ma to być najprostszy silnik z kilkoma funkcjami, który z czasem zostanie rozbudowany.
W związku z tym mam kilka pytańbiggrin.gif
Tworząc sklep wszystkie informacje o produktach oraz podstronach(które mają jakieś funkcje np. dodawanie produktu) będę trzymał w bazie danych.
Produkty będę dodawał za pomocą dodawania rekordu oraz będę wyświetlał ten rekord w celu uzyskania "efektu" dodanego przedmiotu.
To mniej więcej wiem jak zrobić, lecz problem mam z tym jak dodawać zdjęcia. Np. na stronie jest 10 przedmiotów jeden pod drugim i one mają swoje zdjęcia miniaturki. I właśnie tego na razie nie wiem, dlatego proszę o pomoc:)


--------------------
;)
Go to the top of the page
+Quote Post
nospor
post 21.07.2013, 15:30:25
Post #2





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




Upload pliku/zdjecia
http://www.php.net/manual/pl/features.file...post-method.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wazniak96
post 21.07.2013, 17:34:14
Post #3





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


Uploaduj pełnowymiarowe zdjęcia(tak jak napisal Nospor) a potem twórz miniaturki za pomocą GD
Go to the top of the page
+Quote Post
kujol
post 21.07.2013, 20:14:30
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Dzięki.
Mam kolejne pytanie:D
Zrobiłem takie coś, że z formularza pobieram dane i je dodaje do jako rekord do bazy. Następnie na jakiejś podstronie wyświetlam ten rekord pięknie w tabelce, jeden pod drugim (jeśli jest ich kilka).
Ale chciałbym zrobić takie coś, aby przy każdym wyświetlonym rekordzie pojawiał się guzik, którym można było by go usunąć i żeby skrypt do tego guzika automatycznie się uzupełniał danymi (jeśli to możliwe), że to właśnie o ten rekord chodzi, a nie o inny, który jest pod nim.


--------------------
;)
Go to the top of the page
+Quote Post
pitu
post 21.07.2013, 21:16:42
Post #5





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


Wraz z pobranymi danymi pobieraj id. Przyciski możesz zrobić w formie linków, wtedy przypisujesz każdemu np. /delete.php?id=tutaj_pobrane_id

W pliku delete.php tworzysz już sprawdzanie, usuwanie itp.

Ten post edytował pitu 21.07.2013, 21:17:13


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
gitbejbe
post 22.07.2013, 06:17:46
Post #6





Grupa: Zarejestrowani
Postów: 515
Pomógł: 63
Dołączył: 27.08.2012

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


jeśli to Twój 1 taki projekt, to zamiast linków możesz też użyć button'a gdzie dla wartosci value podajesz : value="<?php echo $id_produktu; ?>". Wtedy po kliknięciu sprawdzasz postem który button został kliknięty i go osuwasz. Różnica niewielka pomiędzy linkiem, ale trochę bezpieczniej z racji tego, że taki link do usuwania może wpisać każdy w przeglądarce. No ale to już drobiazg bo łatwo to zabezpieczyć : ) sprawdzaj przy każdej operacji w panelu administratora, czy istnieje sesja admina.
Go to the top of the page
+Quote Post
kujol
post 22.07.2013, 10:40:37
Post #7





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Mam takie coś, ma to za zadanie wyświetlać rekordy z bazy.
Kod
$zapytanie = "SELECT `login` FROM `uzytkownicy`";
$idzapytania = mysql_query($zapytanie);
while ($wiersz = mysql_fetch_row($idzapytania))


echo "<table border=1 bgcolor=green>
<tr><td>$wiersz[0] </td></tr>
</table>"


Można to przerobić w ten sposób, aby to działało, bo w tym jest coś nie tak

Kod
while($wiersz=mysql_fetch_row(mysql_query(SELECT `login` FROM `uzytkownicy`)));


echo "<table border=1 bgcolor=green>
<tr><td>$wiersz[0] </td></tr>
</table>"


--------------------
;)
Go to the top of the page
+Quote Post
hind
post 22.07.2013, 12:30:14
Post #8





Grupa: Zarejestrowani
Postów: 142
Pomógł: 24
Dołączył: 30.03.2009
Skąd: Rokitno Szlacheckie

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


@kujol: Nie zadziała, bo za każdym razem będzie nowy handler dla zapytania i w nieskończoność będzie Ci zwracać pierwszy rekord.
Go to the top of the page
+Quote Post
zebrowski1073
post 22.07.2013, 13:53:52
Post #9





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 17.07.2013

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


Zgadzam się z tym że zawsze będzie zwracał pierwszy rekord , ale jak będzie pusta tabela w bazie danych wyświetli ci tabelę z niczym. Ja sprawdzam czy istnieją jakieś dane za pomocą if(is_array($dana)) { i tu wyświetlam dane } coś w tym stylu

  1. $zapytanie = "SELECT `login` FROM `uzytkownicy`";
  2. $dane = mysql_query($zapytanie);
  3. if(is_array($dane) {
  4. wyświetlam tu tablę z danymi jeżeli jest dużo rekordów stronicuję je
  5. }


Ja używam foreach




Go to the top of the page
+Quote Post
kujol
post 22.07.2013, 21:19:55
Post #10





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Tworze swój skrypt logowania, tylko coś jest nie tak, może ktoś mi wytłumaczyć co robię nie tak, i jak to powinno wyglądać.
1. plik to formularz logowania, nie umieszczam go ponieważ każdy pewnie wie jak takie coś wygląda.
2. plik to logowanie, który wygląda następująco, i to w nim są błędy.

Kod
<?php

mysql_connect("host", "login", "haslo")or die("Nie można nawiązać połączenia z bazą");    //łącze z bazą danych
mysql_select_db("baza")or die("Wystąpił błąd podczas wybierania bazy danych");


$login = $_POST['login'];    //pobieram dane z formularza
$haslo = $_POST['haslo'];


if (isset($_POST['zaloguj']));    //sprawdza czy użytkownik wcisną przycisk    
{
if (!empty($_POST['login']) && !empty($_POST['haslo']);    //sprawdzam czy uzupełniono pola login oraz hasło
{
if (mysql_num_rows(mysql_query("SELECT login, haslo FROM uzytkownicy WHERE login = '".$login."' AND haslo = '".$haslo."' ")) > 0);        //sprawdza czy użytkownik istnieje

session_start( );    //rozpoczynam sesje
$_SESSION['zalogowany'] = 1;
$_SESSION['login'] = $login;
$_SESSION['haslo'] = $haslo;
echo "jestes zalogowany";

elseif (mysql_num_rows(mysql_query("SELECT login, haslo FROM uzytkownicy WHERE login = '".$login."' AND haslo = '".$haslo."' ")) = 0);    //jeśli urzytkownik nie istnieje to wyświetla komunikat
echo "taki uzytkownik nie istnieje";
}
echo "uzupełnij wymagane pola";
}
?>




--------------------
;)
Go to the top of the page
+Quote Post
zebrowski1073
post 23.07.2013, 06:38:21
Post #11





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 17.07.2013

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


if (mysql_num_rows(mysql_query("SELECT login, haslo FROM uzytkownicy WHERE login = '".$login."' AND haslo = '".$haslo."' ")) > 0); //sprawdza czy użytkownik istnieje

session_start( ); //rozpoczynam sesje
$_SESSION['zalogowany'] = 1;
$_SESSION['login'] = $login;
$_SESSION['haslo'] = $haslo;
echo "jestes zalogowany";

else if (mysql_num_rows(mysql_query("SELECT login, haslo FROM uzytkownicy WHERE login = '".$login."' AND haslo = '".$haslo."' ")) == 0); //jeśli urzytkownik nie istnieje to wyświetla komunikat
echo "taki uzytkownik nie istnieje";

================================================================================
==========

Powinno być :


  1. session_start( ); //rozpoczynam sesje
  2.  
  3. if (mysql_num_rows(mysql_query("SELECT login, haslo FROM uzytkownicy WHERE login = "'.$login.'" AND haslo = ".$haslo)) > 0);
  4. //sprawdza czy użytkownik istnieje
  5. {
  6. $_SESSION['zalogowany'] = 1;
  7. $_SESSION['login'] = $login;
  8. $_SESSION['haslo'] = $haslo;
  9. echo "jestes zalogowany";
  10. }
  11. else echo "taki uzytkownik nie istnieje";

================================================================================
=========

ja używam przenoszenia na stronę wyświetlania odpowiedniego komunikatu np :

else header("Location: /logowanie/"); lub nie ukrywasz kodu php
else header("Location: logowanie.php");

Ten post edytował zebrowski1073 23.07.2013, 06:40:36
Go to the top of the page
+Quote Post
CuteOne
post 23.07.2013, 08:14:55
Post #12





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


1. Nie trzymaj w sesji hasła...
2. Po co trzymać login?
3. Wystarczy samo id zalogowanego użytkownika

  1. if(!empty($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) { //polecam rozbić na dwa ify
  2.  
  3. $login = mysql_real_escape_string($_POST['login']);
  4. $pass = sha1($_POST['pass']); // lub inne hashowanie
  5.  
  6. $result = mysql_query("SELECT `id` FROM users WHERE `login` = '".$login."' AND `password` = '".$pass."'");
  7.  
  8. if(mysql_num_rows($result)) {
  9.  
  10. $row = mysql_fetch_assoc($result);
  11.  
  12. $_SESSION['logged'] = 1;
  13. $_SESSION['id_user'] = $row['id'];
  14. }
  15. }
Go to the top of the page
+Quote Post
kujol
post 24.07.2013, 20:53:04
Post #13





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Mam takie coś, co wyświetla mi wszystkie loginy z bazy, a obok nich przyciski do usunięcia. Lecz to coś nie działa, a wygląda następująco:

Plik 1. guzik.php

Kod
$zapytanie = "SELECT `login`, `id` FROM `uzytkownicy`";     //pobieram loginy i id, oraz za pomocą pętli wyświetlam
$idzapytania = mysql_query($zapytanie);
while ($wiersz = mysql_fetch_row($idzapytania))

echo "<table border=1 bgcolor=gray>      //wszystko ładnie w tabelach
<tr>

<td width=40 height=50><b>Login:</b></td>

<td width=80 height=50>$wiersz[0]</td>

<form  action=zniszcz.php method=post>

<input type=submit value=$wiersz[1] />       //przypisuje id przyciskowi

</ Form>

</tr>
<table>"


Plik 2. zniszcz.php

Kod
$usun=$_POST['$wiersz[1]'];      //odbieram id z przycisku

$zapytanie = "DELETE FROM `uzytkownicy` WHERE `id`='$usun'";      //usuwam uzytkownika
$idzapytania = mysql_query($zapytanie);



Plik 1 działa raczej dobrze lecz w pliku 2 tak jakby nie pobiera wartości id.

Jak mogę to poprawić, oraz jak zrobić aby przycisk nie miał swojej nazwy np. 21, czyli pobranego id lecz np. usun.



--------------------
;)
Go to the top of the page
+Quote Post
pitu
post 25.07.2013, 02:27:57
Post #14





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


W pierwszym pliku zmień przycisk, czyli linijkę:
Kod
<input type=submit value=$wiersz[1] />


na:
Kod
<button name="delete" type="submit" value=".$wiersz[1].">Usuń</button>


W drugim pliku natomiast:
  1. $usun=$_POST['$wiersz[1]'];


na:
  1. $usun=$_POST['delete'];


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
kujol
post 27.07.2013, 09:35:08
Post #15





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Jak można zrobić takie coś aby wyświetlało mi ilość rekordów w bazie.
Chodzi mi o taki efekt, jak w niektórych sklepach w menu z kategoriami (obok nazwy tej kategorii) w nawiasie jest podana ilość produktów.
I jak można zrobić ze tak ujmę automatyczne tworzenie kolejnej strony np. na stronie mam wyświetlonych 10 produktów ale łącznie ich jest 50 i chciałbym aby one były na kolejnej stronie (na każdej po 10). Ja tylko tworzę skrypt dla jednej strony a reszta automatico:D jeśli tak się da.

nerdsmiley.png

Ten post edytował kujol 26.07.2013, 21:27:49


--------------------
;)
Go to the top of the page
+Quote Post
Wazniak96
post 27.07.2013, 10:38:23
Post #16





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


1 używasz funkcji mysql_num_rows

2. To o czym piszesz nazywa się stronnicowanie. Wygoogluj sb te hasło i poczytaj. Możesz skożystać też z klasy którą udostępnił nospor na swojej stronie pod nazwą paginator.
Go to the top of the page
+Quote Post
kujol
post 1.08.2013, 18:13:21
Post #17





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Wysyłam prościutkie zapytanie o to czy użytkownik o podanym loginie i haśle istnieje, jeśli tak to wyświetla "ok", a jeśli nie to "no", lecz serwer wywala mi error.

Wygląda to tak:
Kod
<?
session_start();

mysql_connect("mysql.cba.pl", "zul_cba_pl", "QWERTY123")or die("Nie można nawiązać połączenia z bazą");    //łącze z bazą danych
mysql_select_db("zul_cba_pl")or die("Wystąpił błąd podczas wybierania bazy danych");

$login = $_POST['login'];    //pobieram dane z formularza
$haslo = $_POST['haslo'];
if(mysql_num_rows(mysql_query("SELECT login haslo FROM uzytkownicy WHERE login = '".$login."' && haslo = '".$haslo."' ")) > 0 );

{
echo "OK";
}

else

{
echo "NO";
}

?>


Gdy usunę tą część:
Kod
else

{
echo "NO";
}


to wyświetla mi tylko ok, a według mnie nie powinno nic, ponieważ wartość jest "=0"
Może ktoś doradzić jak to powinno być.


--------------------
;)
Go to the top of the page
+Quote Post
pitu
post 1.08.2013, 18:20:50
Post #18





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


po instrukcji if() nie stawia się średnika ";"


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
kujol
post 2.08.2013, 22:20:28
Post #19





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Sprawdzam warunek if() jeśli nie zostanie on spełniony to wykonuje przekierowanie za pomocą header().
I chciałbym na przekierowanej stronie wyświetlić jakiś tekst odnośnie nie spełnionego warunku. Jak to można zrobić? wink.gif


--------------------
;)
Go to the top of the page
+Quote Post
ssstrz
post 2.08.2013, 22:43:34
Post #20





Grupa: Zarejestrowani
Postów: 103
Pomógł: 17
Dołączył: 15.12.2012

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


chodzi ci np zeby sobie w warunku zapisac informacje do sesji po przekierowaniu sobie je odczytasz

  1.  
  2. $_SESSION[ 'warunek' ] = 'cos sie dzieje';


Ten post edytował ssstrz 2.08.2013, 22:45:53
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 01:07