krzychol
3.08.2005, 13:33:36
Witam!
Jestem początkującym programistą php, i mam problem z menu w Administracji.
Otóż chcę napisać system newsów. Chciałbym aby gdy kliknę "dodaj" - wyświetlił się formularz, a gdy kliknę "wyświetl" to pojawią sie newsy. Dziękuje za pomoc.
stefan_precz
3.08.2005, 14:01:47
linki w menu robisz na zasadzie
panel.php?cos=dodaj
i potem wyłapujesz to w tym pliku
if ($id == 'dodaj'){
i tutaj wklejamy formularz dodawania
}
a ja poprawię @stefan_precz, gdyż wkradł się do jego logiki błąd. powinno być
<?php
if ($cos == 'dodaj'){
//i tutaj wklejamy formularz dodawania
}
?>
a bezpieczniej
<?php
if ($_GET['cos'] == 'dodaj'){
//i tutaj wklejamy formularz dodawania
}
?>
----
nospor
krzychol
4.08.2005, 11:24:13
Mam kolejny problem.
Otóż:
Chcę z bazy MySQL odczytać dane i następnie wstawić je w tabelę. Całkowicie nie mam pomysłu jak to wstawić. Mam 3 kolumny: datę, temat, treść.
Łącze się z bazą, wybieram pola, ale jak je wstawić w tabelę?
Z góry dzięki.
nospor
4.08.2005, 11:28:23
co tzreci post na forum (troche przesadzilem) zawiera wstawianie danych do tabeli. przejrzyj se topicu a znajdziesz.
jakbys nie znalazl:
<?php
//.....wykonaie zapytania
{
echo \"<td>{$row['data']}</td>\"; echo \"<td>{$row['temat']}</td>\"; echo \"<td>{$row['tresc']}</td>\"; }
?>
krzychol
4.08.2005, 18:44:24
Mam kolejny problem. Chcę wstawić tematy w wysuwaną listę w formularzu a następnie po wybraniu tematu i kliknięciu wykasować cały wiersz.
<?php
$query = \"SELECT temat FROM news\";
echo '<form method=\"post\" action=\"./nowosci.php?nowosci=wykasowanie\">';
{
echo \"<select>{$row['temat']}</select>\"; }
?>
Powyżej przedstawiam mój kod, niestety nie działa :/. Jak to zrobić?
Z góry dzięki.
pawel_k
4.08.2005, 19:16:13
sprobuj moze moze czegos takiego:
<?php
$query = \"SELECT temat FROM news\";
echo '<form method=\"post\" action=\"./nowosci.php?nowosci=wykasowanie\">'; echo '<select name=\"temat\">'; {
echo '<option value=\"'.$row['temat'].'\">'.$row['temat'].'</option>'; }
?>
krzychol
4.08.2005, 19:33:18
No tak wszystko gra, ale jak nazywa się zmienna ta którą wybiorę z opcji?
$temat?
strife
4.08.2005, 19:50:13
$_POST['temat']
krzychol
4.08.2005, 19:58:00
No mam tak:
<?php
// Wykasowanie newsa z bazy MySQL
if ($_GET['nowosci'] == 'wykasowanie')
{
$temat = $_POST['temat'];
$query = \"DELETE FROM news WHERE temat = '$temat'\";
echo 'Wybrany news został wykasowany.'; }
?>
Ale to nie działa
strife
4.08.2005, 22:11:24
Nie widzę tutaj gdzie wywołujesz
mysql_query" title="Zobacz w manualu PHP" target="_manual<?php
// Wykasowanie newsa z bazy MySQL
if ($_GET['nowosci'] == 'wykasowanie')
{
$temat = $_POST['temat'];
$query = mysql_query(\"DELETE FROM news WHERE temat = '$temat'\"); echo 'Wybrany news został wykasowany.'; }
?>
krzychol
4.08.2005, 22:24:41
nic niedało ... dalej nie działa
nospor
5.08.2005, 07:54:50
ja w tym formualrzu co tu jest nie widzę nigdzie żadnego submita, czyli formualrz nie jest wysylany. Przed koncem formularza dodaj:
<?php
echo '<input type=\"submit\" value=\"skasuj\">';
?>
przy kasowaniu daj echo zeby sprawdzic czy wogole tam dochodzi i dorób jeszcze komuikat bledu
<?php
if ($_GET['nowosci'] == 'wykasowanie')
{
echo \"wszedlem do kasowania\"; $temat = $_POST['temat'];
$query = mysql_query(\"DELETE FROM news WHERE temat = '$temat'\") or die(mysql_error()); echo 'Wybrany news został wykasowany.'; }
?>
krzychol
5.08.2005, 08:16:17
Przycisk był - moja wina bo nie wpisałem całego kodu ... ale błąd leżał gdzie indzie ... połączenie do bazy MySQL się wcześniej urywało i pokazywało tekst, ale nie łączyło się z bazą. Dzięki.
R4v3N
5.08.2005, 12:28:10
ja to bym dal id wpisu i uwuwalbym po id

np
Formularz
<?php
switch($_GET['op']) {
case \"form\":
?>
<form action=?op=del method=post>
Wybierz news'a : <select name=id>
<?php
$wyk = mysql_query(\"select * newsy order by id desc\"); echo \"<option value=\".$row['id'].\">\".$row['tytul'].\"</option>\"; }
?>
</select>
<input type=submit>
</form>
<?php
break;
case \"del\":
if($_POST['id']) {
$wyk = mysql_query(\"delete from news where id='\".$_POST['id'].\"'\"); if($wyk) {
echo \"news zostal usuniety\"; }
else {
echo \"news nie zostal usuniety. MYSQL_ERROR: \".mysql_error(); }
}
else {
echo \"brak parametru ID\"; }
break;
}
;
chyba bedzie tak

nie sprawdzalem tego ale chyba powinno dzialac
krzychol
5.08.2005, 17:57:34
Mam kolejne pytanie ...
Czy gdy wybieram jeden wiersz z tabeli MySQL musze korzystać z pętli while aby wstawić dane do edycji?
Z góry dziękuje za pomoc.
vieri_pl
5.08.2005, 17:59:15
No raczej...
pawel_k
5.08.2005, 18:14:13
jezeli pytasz sie czy musisz stosowac cos takiego
<?php
?>
to nie... jesli masz pewnosc ze wybierasz tylo jedem wiersz to stosowanie petli jest bez sensu... wystarczy sam zapis $row = mysql_fetch_array($wyk)
krzychol
5.08.2005, 21:49:04
Czy poniższy kod jest poprawny?
<?php
// Edytowanie
if ($_GET['ksiega'] == edytowanie)
{
$imie = $_POST['imie'];
$query = \"SELECT * FROM ksiega WHERE imie = $imie\";
echo '<form action=\"./ksiega.php?ksiega=zapis\" method=\"post\"> <br>';
{
<legend>Aby dodac wpis wypelnij ponizszy formularz.</legend>
<table cellspacing=0 cellpading=0>
<tr>
<th colspan=2 width=100>
</th>
</tr>
<tr valign=top align=left>
<th width=45% class=tekst>Imie i Nazwisko lub nick <b>*</b>
</th>
<th width=55%>
<input type=text name=imie size=30 value={$row['imie']}>
</th>
</tr>
<tr valign=top align=left>
<th width
=45
% class=tekst
>E
-mail </th>
<th width=55%>
<input type=text name=email size=30 value={$row['email']}>
</th>
</tr>
<tr valign=top align=left>
<th width=45% class=tekst>Skad jestes?
</th>
<th width=55%>
<input type=text name=skad size=30 value={$row['skad']}>
</th>
</tr>
<tr valign=top align=left>
<th width=45% class=tekst>Gadu-Gadu
</th>
<th width=55%>
<input type=text name=gg size=30 value={$row['gg']}>
</th>
</tr>
<tr valign=top align=left>
<th width=45% class=tekst>Treśa wpisu: <b>*</b>
</th>
<th width=55%>
<textarea name=tresc rows=6 cols=30>{$row['tresc']}</textarea>
</th>
</tr>
<tr>
<th colspan=2 width=100%>
<input type=submit name=zapis value=Wykasuj>
</th>
</tr>
<tr valign=top align=left>
<th colspan=2 width=100%>* Pola wymagane!
</th>
</tr>
</table>
</fieldset>
</form>\";
}
}
?>
Aha dodam że wcześnie wybiera się z formularza zmienną $imie co działa poprawnie.
R4v3N
6.08.2005, 11:07:07
ja tu nigdzie nie widze <form action="url" method="post/get">
a reszta to chyba sie zgadza.
BTW. Masz juz pierwsza czesc tego skryptu za soba

teraz tylko update wpisu :] i bedzie gotowy
krzychol
6.08.2005, 12:48:17
Form jest ... nad pętlą while - niewiem czemu akurat tak mam, ale jest. Najgorsze jest to że ten skrypt nie działa :/ ... bo jedyna rzecz która się wkłada poprawnie to imię :/.
Majcok12
6.08.2005, 20:36:32
pokaz funkcje zapis, ktora updatuje te dane.
btw. nie widze wiekszego sensu edytowania wszystkich wpisow danego usera, np. klikne edytuj wpis i pokaza mi sie do edytowania wszystkoe moje wpisy, lepiej zrobic edycje jednego konkretnego wpisu, co bedzie szybsze i moim zdaniem lepsze. a jesli chciales edytowac tylko jeden konkretny wpis to wystarczy w zapytaniu zamiast where imie = 'imie', dac where post_num = 'dany_id', bo mysle ze masz w tabeli takie pole jak post_num czy cos takiego z atrybutem auto_increment i wtedy obejdzie sie bez petli, bo bedzie tylko jeden wpis
krzychol
6.08.2005, 20:46:31
Chyba źle coś napisałem. Problem polega na tym że dane nie wprowadzają się do formularza. Z tym jednym użytkownikiem masz rację. Tylko niewiem jak to zrobić. Jestem początkujący :/
Majcok12
6.08.2005, 21:00:39
czyli przyjmuje, ze w tabeli masz pole id, ktore ma atrybut auto_increment (tak, ze kazdy wpis ma inny, unikalny numer) i w linku do edycji masz podany id
<?
if ($_GET['ksiega'] == edytowanie)
{
$query = \"SELECT * FROM ksiega WHERE id = $_GET[id]\";
?>
<form action=\"./ksiega.php?ksiega=zapis\" method=\"post\">
<br>
<?
?>
<fieldset>
<legend>Aby dodac wpis wypelnij ponizszy formularz.</legend>
<table cellspacing=0 cellpading=0>
<tr>
<th colspan=2 width=100>
</th>
</tr>
<tr valign=top align=left>
<th width=45% class=tekst>Imie i Nazwisko lub nick <b>*</b>
</th>
<th width=55%>
<input type=text name=imie size=30 value=
<? echo $row['imie']; ?>>
</th>
</tr>
<tr valign=top align=left>
<th width=45% class=tekst>E-mail
</th>
<th width=55%>
<input type=text name=email size=30 value=
<? echo $row['email']; ?>>
</th>
</tr>
<tr valign=top align=left>
<th width=45% class=tekst>Skad jestes?
</th>
<th width=55%>
<input type=text name=skad size=30 value=
<? echo $row['skad']; ?>>
</th>
</tr>
<tr valign=top align=left>
<th width=45% class=tekst>Gadu-Gadu
</th>
<th width=55%>
<input type=text name=gg size=30 value=
<? echo $row['gg']; ?>>
</th>
</tr>
<tr valign=top align=left>
<th width=45% class=tekst>Treśa wpisu: <b>*</b>
</th>
<th width=55%>
<textarea name=tresc rows=6 cols=30>
<? echo $row['tresc']; ?></textarea>
</th>
</tr>
<tr>
<th colspan=2 width=100%>
<input type=submit name=zapis value=Wykasuj>
</th>
</tr>
<tr valign=top align=left>
<th colspan=2 width=100%>* Pola wymagane!
</th>
</tr>
</table>
</fieldset>
</form>
<?
}
}
?>
Guest
6.08.2005, 21:17:50
a mzoe masz blad w zapytaniu do mysql... ? daj za mysql_query(zapytanie):
or die(mysql_error());
bo widze ze postawiles @ przed mysql_query co wylacza pokazywanie ew. bledow
krzychol
8.08.2005, 19:30:39
Znalazłem swój błąd. Niewiem czemu ale z wysuwanej listy nie przenosi mi zmiennej id :/.
<?php
// Wybranie wpisu do edycji
if ($_GET['ksiega'] == 'edytuj')
{
$query = "SELECT id FROM ksiega";
echo '<p class="tekst">Wybierz autora wpisu który ma zostac edytowany:</p>'; echo '<form method="post" action="./ksiega2.php?ksiega=edytowanie"> <select name="tytul">';
{
echo '<option value="'.$row[id
].'">'.$row[id
.'</option>'; }
<br>
<input type=submit name=edytuj value=Edytuj>
</form>';
}
?>
Sprawdziłem to przez wywołanie echa i zmiennej id. Oczywiście w następnej stronie umieściłem:
$id = $_POST['id'];
ale to nic nie dało

. Co robić?
<?php
// Wybranie wpisu do edycji
if ($_GET['ksiega'] == 'edytuj')
{
$query = "SELECT id,imie FROM ksiega";
echo '<p class="tekst">Wybierz autora wpisu który ma zostac edytowany:</p>'; echo '<form method="post" action="./ksiega2.php?ksiega=edytowanie"> <select name="tytul">';
{
echo '<option value="'.$row['id'].'">'.$row['imie'].'</option>'; }
<br>
<input type=submit name=edytuj value=Edytuj>
</form>';
}
?>
krzychol
8.08.2005, 21:10:22
NuLL to nic nie dało. Dalej to samo. Niewiem czemu ale skrypt nie przenosi zmiennej id metodą POST dalej :/. Gdy wpisze numer zamiast zmiennej w zapytaniu to działa.
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.