mąki
12.05.2005, 12:22:42
Mam problem, a że jestem bardzo początkujący, to nie wiem jak sobie z tym poradzić.
Odpala się tabela, przy każdych danych jest skasuj, na dole formularz dodawania danych, ale jak coś dodaje czy kasuje to nie wprowadza żadnych zmian. Kod zrobiłem na podstawie gotowca. Proszę o pomoc.
<HTML>
<HEAD>
<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-2\">
<TITLE>Czytanie z bazy danych, kasowanie i dodawanie rekordów</TITLE>
</HEAD>
<BODY>
<? // Dodawanie rekordu zrealizowano za pomocą zapytania INSERT.
// Dane są wczytywane w przygotowanym formularzu.
die (\"Nie można połączyć się z MySQL\"); die (\"Nie można połączyć się z bazą cwphp4\");
if ($co == 'dodaj') { // dodawanie rekordu
if ($tytul && $autor && $slowa_kluczowe){
$query = \"INSERT INTO ksiazki ( id, tytul, autor, slowa_kluczowe , typ) VALUES ('', '$tytul', '$autor', '$slowo_kluczowe', '$typ');\";
}
} elseif ($co == 'skasuj') { // kasowanie
(\"DELETE FROM ksiazki WHERE nr = '$id';\");
}
$wynik = mysql_query (\"SELECT * FROM ksiazki;\") or die (\"błąd w pytaniu\");
print \"<TABLE CELLPADDING=5 BORDER=2>\"; print \"<TR><TD><B>Id</B><TD><B>Tytul</B></TD><TD><B>autor</B></TD>\"; print \"<TD><B>slowa_kluczowe</B></TD><TD><B>typ</B></TD><TD><B>kasowanie</B></TD></TR>n\";
$id = $rekord[0];
$tytul = $rekord[1];
$autor = $rekord[2];
$slowa_kluczowe = $rekord[3];
$typ = $rekord[4];
print \"<TR><TD>$id</TD><TD>$tytul</TD><TD>$autor</TD><TD>$slowa_kluczowe</TD><TD>$typ</TD><TD>\"; print \"<A HREF=\"index.php?co=skasuj&id=$id\">skasuj</A></TD></TR>n\"; }
print '<FORM METHOD=\"POST\">Nowy rekord:'; print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"dodaj\"><TABLE>'; print '<TR><TD>Tytul:</TD><TD><INPUT TYPE=\"text\" '; print 'NAME=\"tytul\"></TD></TR><TR><TD>Autor:</TD><TD><INPUT '; print 'TYPE=\"text\" NAME=\"autor\"></TD></TR><TR><TD>Slowa_kluczowe:</TD>'; print '<TD><INPUT TYPE=\"text\" NAME=\"slowa_kluczowe\"></TD></TR>'; print '<TD>TYP:</TD><TD><INPUT TYPE=\"text\" NAME=\"typ\"></TD></TR>'; print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Dodaj\"></FORM>'; ?>
</BODY>
</HTML>
--

aleksander
nospor
12.05.2005, 12:32:19
zobacz w php.ini czy masz ustawioną wartość register_globals
switch
12.05.2005, 12:34:57
A przypadkiem nie jest to klasyczny problem żle przekazanych wartośći?
Może nie wpisałeś:
<?php
$co = $_POST['dodaj'];
$kasuj = $_POST['skasuj'];
?>
nospor
12.05.2005, 12:40:28
u kolegi skasuj przekazywane jest przez url, więc jeżeli już coś to tak:
<?php
$co=null;
$co=$_POST['co'];
{
$co=$_GET['co'];
$id=$_GET['id'];
}
?>
mąki
12.05.2005, 21:23:24
Nic mi nie działa, albo poprostu źle wpisałem.
Jak bym mógł otrzymać ten kod z odpowiednimi poprawkami tam gdzie mają być, to bym spróbował.
Pliku php.ini bez żadnego dopisku nie znalazłem, mam tylko takie:
php.ini-dist
php.ini-recommended
poprawiłem w obu na on.
Używam phpMyAdmin 2.6.1-pl3.
nospor
13.05.2005, 07:26:32
Bodajze coś takiego
?>
<HTML>
<HEAD>
<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-2\">
<TITLE>Czytanie z bazy danych, kasowanie i dodawanie rekordów</TITLE>
</HEAD>
<BODY>
<? // Dodawanie rekordu zrealizowano za pomocą zapytania INSERT.
// Dane są wczytywane w przygotowanym formularzu.
die (\"Nie można połączyć się z MySQL\"); die (\"Nie można połączyć się z bazą cwphp4\"); $co=null;
{
$co=$_POST['co'];
$tytul=$_POST['tytul'];
$autor=$_POST['autor'];
$slowa_kluczowe=$_POST['slowa_kluczowe'];
$typ=$_POST['typ'];
}
{
$co=$_GET['co'];
$id=$_GET['id'];
}
if ($co == 'dodaj') { // dodawanie rekordu
if ($tytul && $autor && $slowa_kluczowe){
$query = \"INSERT INTO ksiazki ( id, tytul, autor, slowa_kluczowe , typ) VALUES ('', '$tytul', '$autor', '$slowo_kluczowe', '$typ');\";
}
} elseif ($co == 'skasuj') { // kasowanie
(\"DELETE FROM ksiazki WHERE nr = '$id';\");
}
$wynik = mysql_query (\"SELECT * FROM ksiazki;\") or die (\"błąd w pytaniu\");
print \"<TABLE CELLPADDING=5 BORDER=2>\"; print \"<TR><TD><B>Id</B><TD><B>Tytul</B></TD><TD><B>autor</B></TD>\"; print \"<TD><B>slowa_kluczowe</B></TD><TD><B>typ</B></TD><TD><B>kasowanie</B></TD></TR>n\";
$id = $rekord[0];
$tytul = $rekord[1];
$autor = $rekord[2];
$slowa_kluczowe = $rekord[3];
$typ = $rekord[4];
print \"<TR><TD>$id</TD><TD>$tytul</TD><TD>$autor</TD><TD>$slowa_kluczowe</TD><TD>$typ</TD><TD>\"; print \"<A HREF=\"index.php?co=skasuj&id=$id\">skasuj</A></TD></TR>n\"; }
print '<FORM METHOD=\"POST\">Nowy rekord:'; print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"dodaj\"><TABLE>'; print '<TR><TD>Tytul:</TD><TD><INPUT TYPE=\"text\" '; print 'NAME=\"tytul\"></TD></TR><TR><TD>Autor:</TD><TD><INPUT '; print 'TYPE=\"text\" NAME=\"autor\"></TD></TR><TR><TD>Slowa_kluczowe:</TD>'; print '<TD><INPUT TYPE=\"text\" NAME=\"slowa_kluczowe\"></TD></TR>'; print '<TD>TYP:</TD><TD><INPUT TYPE=\"text\" NAME=\"typ\"></TD></TR>'; print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Dodaj\"></FORM>'; ?>
</BODY>
</HTML>
<?
?>
lub tak jak miales, tylko w php.ini ustaw register_globals=on
mąki
13.05.2005, 09:54:49
Dzięki jest postęp
Już dodaje dane do bazy, ale z indeksem 0, przez co nie mogę wprowadzić więcej niż jednego wpisu. Jak zrobić, aby dodawał wpis z kolejnym indeksem np. 5. Dalej nie chce usuwać, co poradzić? Z góry dziękuję za pomoc.
zwiteq
13.05.2005, 10:35:02
Czesc
A masz ustawione pole tabeli sql z indeksem na auto inkrementacje?
pozdrawiam
witek
nospor
13.05.2005, 10:36:14
odnośnie wstawiania:
Daj pole id typu autoincrement a sql ma tak wygladać:
$query = "INSERT INTO ksiazki ( id, tytul, autor, slowa_kluczowe , typ) VALUES (null, '$tytul', '$autor', '$slowo_kluczowe', '$typ');";
odnosie kasowania:
w tabeli ksiązki masz pole id, a przy kasowaniu używasz pola nr. Co to za pole?
POwinno chyba być:
$wynik = mysql_query
("DELETE FROM ksiazki WHERE id = '$id';");
mąki
13.05.2005, 13:05:39
Wielkie dzięki, już wszystko działa.
Gość_Damian
18.05.2005, 19:39:53
Witam, skorzystałem z powyższego przykładu - działa świetnie. Też jestem początkujący i chciałbym zapytać jak dodatkowo zrobić przycisk edycji rekordu?
Aby obok likny skasuj, pojawił się link edytuj -> odwołujący się do innej strony np. edycja.php i tam była wyświetlona zawartość konkretnego rekordu.
Wiem że to musi być proste, jak sam coś wydłubię to wrzucę. Z góry jednak dziękuję za Waszą nieocenioną pomoc
Pozdrowienia
Damian
nospor
19.05.2005, 07:36:56
to trochę inna bajka. podam ci przepis slowny, bo na kod nie mam akurat czasu.
Obok linka kasuj robisz linka edytuj do najlepiej (moim zdaniem) innej strony aby już nie mieszać w tym index.php:
print "<A HREF=\"edit.php?id=$id\">edytuj</A>\n";
w edit.php pobierasz z URL id produktu,patrzysz czy nie bylo submit i jak nie bylo pobierasz z bazy niezbędne ci dane i wpisujesz je do formualrza. W formularzu robisz submit do tej samej strony. Patrzysz czy byl submit, jak tak to poprawiasz rekord o otrzymane dane.
Guest
20.05.2005, 18:26:16
Witam,
dzieki za pomoc i wskazowki. Napisalem co nieco ale nie wszystko dziala: Tzn. Dane sa wyswietlane w boksach i mozna je edytowac, natomiast po zapisaniu updatowi podlega tylko rekord z kluczem 0.
Moja tabela sklada sie z kolumn (IDC, Firma, Name, Dane, Email)
<?php
$co=null;
{
$co=$_POST['co'];
$IDC=$_POST['IDC'];
}
elseif (isset($_GET['co']) && isset($_GET['IDC'])) {
$co=$_GET['co'];
$IDC=$_GET['IDC'];
}
if ($co == 'popraw') { // dodawanie rekordu
if ($Firma){
$query = \"UPDATE kontakty SET Firma='\".$Firma.\"' WHERE IDC='\".$IDC.\"';\";
}
if ($Name){
$query = \"UPDATE kontakty SET Name='\".$Name.\"' WHERE IDC='\".$IDC.\"';\";
}
if ($Dane){
$query = \"UPDATE kontakty SET Dane='\".$Dane.\"' WHERE IDC='\".$IDC.\"';\";
}
if ($Email){
$query = \"UPDATE kontakty SET Email='\".$Email.\"' WHERE IDC='\".$IDC.\"';\";
}
}
$wynik = mysql_query (\"SELECT * FROM kontakty WHERE IDC='\".$IDC.\"';\") or die (\"bład w pytaniu\");
print '<FORM METHOD=\"POST\">Nowy rekord:'; print '<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"popraw\"><TABLE>';
$Firma = $rekord[1];
$Name = $rekord[2];
$Dane = $rekord[3];
$Email = $rekord[4];
echo \"<tr><td><b>ID</b></td><td><TEXTAREA NAME=\"Firma\">$Firma</TEXTAREA></td></tr>\"; echo \"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Name\" COLS=50>$Name</TEXTAREA></td></tr>\"; echo \"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Dane\" ROWS=10 COLS=50>$Dane</TEXTAREA></td></tr>\"; echo \"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Email\" COLS=50>$Email</TEXTAREA></td></tr>\"; }
print \"</TABLE><input type=\"button\" value=\"Powrót\" onClick=\"parent.location.href='see.kontakt.php?IDC=$IDC'\">\"; print '<INPUT TYPE=\"submit\" VALUE=\"Popraw\"></FORM>'; ?>
Bede bardzo wdzieczny za pomoc w rozwiazaniu klopotu. Jak dojde do tego sam wczesniej to natychmiast dodam posta. Pozdrawiam Damian
nospor
21.05.2005, 07:10:55
Po pierwsze: nie ma sensu robić kilka update na jednym wierszu. Wystarczy jeden:
przyklad: update tabela set columna1=war1,columna2=war2 where id=jakiesid
rozumiesz?Jak tak to popraw u siebie
Po drugie:skoro update'a robi na kluczu 0,znaczy że do IDC zapisujesz 0 lub bodajze nic.Najwyraźniej gdzieś źle robisz linka z IDC. Daj echo $_GET['IDC'] i zobacz czy ci dobrze je wyswietla.
POzatym widzę że robisz $_POST['IDC']. Do czego to ma byc? Przecież w tym kodzie nigdzie w formularzu nie dales pola o name=IDC. Tam zawsze bedzie nic.
troche zagmatwany ten kod, albo ja nie kumam twqego toku rozumowania
Pozdro,
Gość_Damian
21.05.2005, 17:31:25
Witam ponownie! Wszystko już działa. Przeczytałem Twoje rady i teraz działa wyśmienicie.
Mój kod był niekumaty bo jestem początkujący ;-). Najważniejszy chyba błąd to było umieszczenie w kodzie u góry:
<?php
$co=null;
?>
Ale pozostałe rzeczy też pozmieniałem. Poniżej gotowy skrypcik do edycji zawartości - może przyda sie takim jak ja ;-)
<?php
{
$bo=$_GET['bo'];
$IDC=$_GET['IDC'];
}
if ($bo == 'popraw') { // dodawanie rekordu
if ($Firma){
$query = \"UPDATE kontakty SET Firma='$Firma', Name='$Name', Dane='$Dane', Email='$Email' WHERE IDC='$IDC'\";
}
}
$wynik = mysql_query (\"SELECT * FROM kontakty WHERE IDC='$IDC';\") or die (\"bład w pytaniu\");
print '<FORM METHOD=\"POST\">Nowy rekord:'; print '<INPUT TYPE=\"hidden\" NAME=\"bo\" VALUE=\"popraw\"><TABLE>';
$Firma = $rekord[1];
$Name = $rekord[2];
$Dane = $rekord[3];
$Email = $rekord[4];
echo \"<tr><td><b>ID</b></td><td><TEXTAREA NAME=\"Firma\">$Firma</TEXTAREA></td></tr>\"; echo \"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Name\" COLS=50>$Name</TEXTAREA></td></tr>\"; echo \"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Dane\" ROWS=10 COLS=50>$Dane</TEXTAREA></td></tr>\"; echo \"<tr><td colspan=\"2\"><TEXTAREA NAME=\"Email\" COLS=50>$Email</TEXTAREA></td></tr>\"; }
print '</TABLE><INPUT TYPE=\"submit\" VALUE=\"Popraw\"></FORM>'; print \"<input type=\"button\" value=\"Powrót\" onClick=\"parent.location.href='see.kontakt.php?IDC=$IDC'\">\";
?>
Pozdrawiam Damian
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.