Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MULTIPLE
Forum PHP.pl > Forum > Gotowe rozwiązania
matt
Robie skrypt do newsów i mam problem z wyborem kategorii newsów. Chce zrobic cos takiego że newsa można dodac do wielu kategorii, wiec w formularzu stosuje MULTIPLE ale pozniej mam problem z przekazaniem tych działow do bazy, mianowicie w bazie umieszczaja się tylko pierwsze 4 litery jednej kategorii i na tym koniec.

Tak wygląda kawałek kodu:

[php:1:f9ff7c93b8]<?php
...
$sql = "select * from news_kategorie order by nazwa";
$result = mysql_query($sql);
{
while ($row = mysql_fetch_array($result)) {

$nazwa = $row["nazwa"];

echo("<SELECT NAME="kategoria[]" SIZE="4" MULTIPLE><option value=$nazwa>$nazwa</option></select>");
...
?>[/php:1:f9ff7c93b8]

Tak struktura mysql

[sql:1:f9ff7c93b8]CREATE TABLE news (
id_newsa int(8) NOT NULL auto_increment,
tytul varchar(150) NOT NULL default '0',
tresc1 text NOT NULL,
tresc2 text NOT NULL,
obrazek varchar(150) NOT NULL default '0',
autor varchar(150) NOT NULL default '0',
zrodlo varchar(150) NOT NULL default '0',
data varchar(150) NOT NULL default '0',
druzyna1 int(8) NOT NULL default '0',
druzyna2 int(8) NOT NULL default '0',
kategoria varchar(150) NOT NULL default '0',
PRIMARY KEY (id_newsa)
) TYPE=MyISAM;[/sql:1:f9ff7c93b8]

______

php Początkujący => Skrypty
Seth
sivyer
Podaj jeszcze drugi kawalek kodu, ten przy pomocy ktorego dodajesz te informacje o kategorii do tabeli.
matt
[php:1:90f9bd942e]<?php
if($opcja==news_dodaj)
{

$sql = "insert into news values (NULL, '$tytul', '$tresc1', '$tresc2', '$obrazek', '$autor', '$zrodlo', '$date', '$druzyna1', '$druzyna2', '$kategoria')";
mysql_query($sql);

if ($blad_mysql = mysql_error()) {
echo("<font class=aplikacje>Błąd: $blad_mysql");
}
else
{
echo("<font class=aplikacje>Komunikat: news został dodany");
}
}
?>[/php:1:90f9bd942e]
adwol
[php:1:8ab2a46039]<?php
echo("<SELECT NAME="kategoria[]" SIZE="4" MULTIPLE>
?>[/php:1:8ab2a46039]
A nie jest to wina tej 4-ki?
matt
Przed chwila zmieniłem i nie to nie jej wina sad.gif((
spenalzo
Cytat
A nie jest to wina tej 4-ki?

Ta 4 wyświetla select nie w formie listy rozwijanej, ale przewijanej, gdzie na raz mieszczą sie 4 opcje.
matt
No własnie z tym rozwiajniem tez mam problem, zamiast w 1 polu to mi sie robi w kilku :/
spenalzo
Wywal tą size=4 - wtedy będzie rozwijane, ale nie wiem jak z mozliwoscią wielokrotnego wyboru.

Poza tym dlaczego wyświetlasz rozpoczęcie listy (<select>) w pętli?

Do bazy zapisujesz całą tablicę $kategorie od razu w MySQLu - nie wiem czy tak można, tzn. czy to daje efekt?
matt
Zrobilem size=1 i nadal cos jest nie tak...
Możesz troche jaśniej z tym <select> ?
spenalzo
Cytat
Zrobilem size=1 i nadal cos jest nie tak...

Jeżeli chcesz mieć możliwość wybrania kilku kategorii musi być lista przewijana i wtedy robisz size=x, gdzie x to liczba linii widocznych na raz.

Cytat
Możesz troche jaśniej z tym <select> ?

W kodzie który podałeś, dajesz <select> w pętli while.
matt
nadal cos nie tak sad.gif((
spenalzo
Cytat
nadal cos nie tak sad.gif((

To teraz bym prosił o DOKŁADNY opis co nie działa i ewentualne błędy.
Zainteresuj sie nowym sposobem przekazywania zmiennych.

Dodaj sobie taki kod przed wykonaniem zapytania:
[php:1:a62c6b953a]<?php
if(is_array($_POST["kategorie"]))
{
$kategorie=implode(",",$_POST["kategorie"]);
}
else
{
$kategorie=$_POST["kategorie"];
}
?>[/php:1:a62c6b953a]

a przy wyciaganiu z bazy rozdzielasz dane tak:
[php:1:a62c6b953a]<?php
$kategorie=explode(",",$dane);
?>[/php:1:a62c6b953a]
i numery kategori będziesz miał w tablicy.
Omega
A nie lepiej to zrobić checkbox'ami?questionmark.gif Nie było by problemów z rozwijaniem i wielokrotnymi zaznaczeniami...
spenalzo
Cytat
A nie lepiej to zrobić checkbox'ami?questionmark.gif Nie było by problemów z rozwijaniem i wielokrotnymi zaznaczeniami...

Dobrze, ale wyobraź sobie że masz 100 kategorii - ile to zajmuje miejsca? A tak select na 5 linijek (czy nawet 10 lub więcej) zmieści je wszystkie.
Tutaj nie chodzi o wyzszość checkboxa nad selectem tylko o bład w kodzie.
matt
A jeszcze mam taki problem.
Dodaje mecz w którym z wczesniej dodanych druzyn wybieram te co zagraja w meczu np Bayern - Borussia. Poźniej do dodanych meczy dodaje wynik np 2:1 (Bayern - Borussia 2:1) i teraz jak zrobic tak zeby z tego wyniku dane dla danej druzyny same sie zaktualizowaly i ze skrypt po wyniku sam rozpozna co gdzie dodac. Czyli po tym meczu skrypt miał by dodac dla Bayernu:
Cytat
1: do liczby meczów Bayernu to 1 mialo by byc dodane do liczba1(pole w strukturze druzyn)
1: do liczby meczów wygranych Bayernu to 1 mialo by byc dodane do liczba2(pole w strukturze druzyn)
0: do liczby meczów zremisowanych Bayernu to 0 mialo by byc dodane do liczba3(pole w strukturze druzyn)
0: do liczby meczów przegranych Bayernu to 0 mialo by byc dodane do liczba4(pole w strukturze druzyn)
2: do liczby bramek strzelonych przez Bayern to 2 mialo by byc dodane do liczba5(pole w strukturze druzyn)
1: do liczby bramek straconych przez Bayern to 1 mialo by byc dodane do liczba6(pole w strukturze druzyn)
3: do liczby punktów Bayernu to 3 mialo by byc dodane do liczba7(pole w strukturze druzyn)


a dla Borussi

Cytat
1: do liczby meczów Borussii to 1 mialo by byc dodane do liczba1(pole w strukturze druzyn)
0: do liczby meczów wygranych Borussii to 0 mialo by byc dodane do liczba2(pole w strukturze druzyn)
0: do liczby meczów zremisowanych Borussii to 0 mialo by byc dodane do liczba3(pole w strukturze druzyn)
1: do liczby meczów przegranych Borussii to 1 mialo by byc dodane do liczba4(pole w strukturze druzyn)
1: do liczby bramek strzelonych przez Borussii to 2 mialo by byc dodane do liczba5(pole w strukturze druzyn)
2: do liczby bramek straconych przez Borussii to 1 mialo by byc dodane do liczba6(pole w strukturze druzyn)
0: do liczby punktów Borussii to 3 mialo by byc dodane do liczba7(pole w strukturze druzyn)


ogólnie skrypt za zwyciestwo drużyny dodawał by 3 punkty, za remis 1 a za porażke 0


Tak wygląda struktura mysql tabeli drużyn
[sql:1:78f5911b78] id_druzyny int(8) NOT NULL auto_increment,
nazwa1 varchar(30) NOT NULL default '',
nazwa2 varchar(30) NOT NULL default '',
rok varchar(4) NOT NULL default '',
telefon varchar(50) NOT NULL default '',
fax varchar(50) NOT NULL default '',
strona varchar(60) NOT NULL default '',
mail varchar(20) NOT NULL default '',
barwy varchar(80) NOT NULL default '',
trener varchar(80) NOT NULL default '',
prezydent varchar(80) NOT NULL default '',
logo varchar(20) NOT NULL default '',
liga int(8) NOT NULL default '0',
adres text NOT NULL,
historia text NOT NULL,
liczba1 varchar(180) NOT NULL default '0', // mecze
liczba2 varchar(180) NOT NULL default '0', // wygrane
liczba3 varchar(180) NOT NULL default '0', // remisy
liczba4 varchar(180) NOT NULL default '0', // porażki
liczba5 varchar(180) NOT NULL default '0', // bramki +
liczba6 varchar(180) NOT NULL default '0', // bramki -
liczba7 varchar(180) NOT NULL default '0', // punkty
ranuefa varchar(10) NOT NULL default '',[/sql:1:78f5911b78]


Tak wygląda struktura meczu
[sql:1:78f5911b78] id_meczu int(8) NOT NULL auto_increment,
druzyna1 varchar(150) NOT NULL default '0',
druzyna2 varchar(150) NOT NULL default '0',
liga int(8) NOT NULL default '0',
kolejka char(2) NOT NULL default '',
wynik1 varchar(10) NOT NULL default '', // bramki druzyny1 czyli gospodarzy
wynik2 varchar(10) NOT NULL default '', // bramki drużyny2 czyli gości
strzelcy text NOT NULL,
widzow varchar(10) NOT NULL default '',
sedzia varchar(50) NOT NULL default '',
godzina varchar(50) NOT NULL default '',
opis text NOT NULL,[/sql:1:78f5911b78]

Próbowałem juz wyszystkiego ze zmiennymi $_POST itd ale nici....
KeeKee
Spróbuj tak:
[php:1:eaeed50ef1]<?php
...
echo ("<SELECT NAME="kategoria[]" SIZE="1" MULTIPLE>"); // Zamiast size=1 możesz dać np. size=5 etc.

$sql = "select * from news_kategorie order by nazwa";
$result = mysql_query($sql);
{
while ($row = mysql_fetch_array($result)) {
$nazwa = $row["nazwa"];
echo ("<option value=$nazwa>$nazwa</option>");
}
echo ("</select>");
...
?>[/php:1:eaeed50ef1]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.