Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z EDYCJA w SQL...
Forum PHP.pl > Forum > Gotowe rozwiązania
Widmo
Chcialbym, zeby z DB pobieraly sie rzeczy, i zebym mogl je edytowac...
Napislam juz cos takiego, ale nie dziala...
Bledow nie wywala, bialego ekranu tez nie ma, ale nie zmienia wpisow w DB rolleyes.gif

EDIT.php
[php:1:6ab9bf155f]
<?
include("config.php");
$db = mysql_pconnect($db_adres, $db_login, $db_pass);
if (!$db)
{
echo ("<center>Nie można było się połączyć z bazą danych!</CENTER>");
exit;
}
mysql_select_db($db_baza);
#######################################
$zapytanie = "SELECT * FROM kki WHERE id = ".$id."";
$wynik = mysql_query($zapytanie);
$ile_znalezionych = mysql_num_rows($wynik);

for($i=0; $i < $ile_znalezionych; $i++)
{
$wiersz = mysql_fetch_array($wynik);
($i+1);

$przedmiot = $wiersz["przedmiot"];
$data = $wiersz["data"];
$co = stripslashes($wiersz["co"]);
$nick = $wiersz["nick"];
$ip = $wiersz["ip"];
$data_w = $wiersz["data_w"];
}

?>[/php:1:6ab9bf155f]


teraz HTML:

Kod
<FORM ACTION="update.php" METHOD="GET" ENCTYPE="text/plain" TARGET="okno">

<TABLE ALIGN="CENTER" VALIGN="MIDDLE" WIDTH="0%" HEIGHT="0" CELLSPACING="0" CELLPADDING="4" BORDER="1" BGCOLOR="#66CCFF" STYLE="font-family: monospace; text-align: center">

<TR ALIGN="CENTER">

    <TD>Przedmiot:</TD>

    <TD><INPUT TYPE="TEXT" NAME="przedmiot" ALIGN="MIDDLE" VALUE="<? echo "$przedmiot" ?>"></TD>

</TR>

<TR ALIGN="CENTER">

    <TD>Data:</TD>

    <TD><INPUT TYPE="TEXT" NAME="data" ALIGN="MIDDLE" VALUE="<? echo "$data" ?>"></TD>

</TR>

<TR ALIGN="CENTER">

    <TD>Co:</TD>

    <TD><TEXTAREA NAME="co" ALIGN="MIDDLE" COLS="25" ROWS="8" WRAP="VIRTUAL"><? echo "$co" ?></TEXTAREA></TD>

</TR>

<TR ALIGN="CENTER">

    <TD>Dodał:</TD>

    <TD><INPUT TYPE="TEXT" NAME="nick" ALIGN="MIDDLE" VALUE="<? echo "$nick" ?>"></TD>

</TR>

<TR ALIGN="CENTER">

    <TD>IP:</TD>

    <TD><INPUT TYPE="TEXT" NAME="ip" ALIGN="MIDDLE" VALUE="<? echo "$ip" ?>" READONLY></TD>

</TR>

<TR ALIGN="CENTER">

    <TD>Data wpisu:</TD>

    <TD><INPUT TYPE="TEXT" NAME="data_w" ALIGN="MIDDLE" VALUE="<? echo "$data_w" ?>" READONLY></TD>

</TR>

</TABLE>

<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Zapisz"></P>

</FORM>


i to co jest w UPDATE.php

[php:1:6ab9bf155f]

<?
include("config.php");
$db = mysql_pconnect($db_adres, $db_login, $db_pass);
if (!$db)
{
echo ("<center>Nie można było się połączyć z bazą danych!</CENTER>");
exit;
}
mysql_select_db("kki");

$update = "UPDATE kki SET przedmiot='$_GET['przedmiot']', data='$_GET['data']', co='$_GET['co']', nick='$_GET['nick']'
WHERE id='$_GET['id']'";

mysql_affected_rows($update);

?>


[/php:1:6ab9bf155f]

dodam tylko, ze dane sie bardzo ladnie przesylaja ze strony na strone. (phpinfo)

:!: UPDATED :!:
spenalzo
Przede wszystkim przeczytaj TO, zastosuj się do tego i powiedz, czy działa.
Widmo
Thx, sprawdze, ale skoro zmienne przesylaja sie OK, to czy to moze pomoc ? Mimo wszystko sprawdze, i naucze sie z tego korzystac... Zle nawyki podczas nauki... :oops:

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



Sprawdzilem, chyba jest lepiej, tylko ze wyskakuje blad...

Czy to:


[php:1:9234d11778]<?php
$update = "UPDATE kki SET przedmiot='$_GET['przedmiot']', data='$_GET['data']', co='$_GET['co']', nick='$_GET['nick']'
WHERE id='$_GET['id']'";
?>[/php:1:9234d11778]

jest ok ?

LeWaR
chyba za słabo sprawdzałeś.....
[php:1:3454a35304]<?php
$update = "UPDATE kki SET przedmiot='$_GET['przedmiot']', data='$_GET['data']',
co='$_GET['co']', nick='$_GET['nick']'
WHERE id='$_GET['id']'";


?>[/php:1:3454a35304]
Tak chyba bardziej pasuje do tego co spenalzo napisał, no nie?
Widmo
:oops:
No racja...

Ale to i tak nie działa...

wyskakuje

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:foxservwwwkkiupdate.php on line 18

a 18 linia to wlasnie jest ten update...
spenalzo
Wyrzuć te zmienne poza cudzysłowy i powinno być OK.
W ten sposób:
[php:1:caf699f759]<?php
$update = "UPDATE kki SET przedmiot='".$_GET['przedmiot']."', data='".$_GET['data']."', co='".$_GET['co']."', nick='".$_GET['nick']."' WHERE id='".$_GET['id']."'";
?>[/php:1:caf699f759]
Widmo
juz jest lepiej biggrin.gif Dzieki, ale teraz error:

Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in c:foxservwwwkkiupdate.php on line 23
scanner
Cytat
[php:1:192d36af31]
<?
$update = "UPDATE kki SET przedmiot='$_GET['przedmiot']', data='$_GET['data']', co='$_GET['co']', nick='$_GET['nick']' WHERE id='$_GET['id']'";
mysql_affected_rows($update);
?>
[/php:1:192d36af31]
Może ja się nie znam, ale czy tu nie brakuje:[php:1:192d36af31]<?php
$update = mysql_query($update);
?>[/php:1:192d36af31]
Widmo
Nie nie brakuje...
scanner
A to ciekawe.
Powiesz mi zatem, jak wywołujesz te zapytanie?
mysql_affected_rows tego nie zrobi za Ciebie moim zdaniem.
spenalzo
Funkcja [manual:b4c9e45a8d]mysql_affected_rows[/manual:b4c9e45a8d] zwraca ilość wierszy przetworzonych przez zapytanie, musisz najpierw je wywołać poprzez [manual:b4c9e45a8d]mysql_query[/manual:b4c9e45a8d].

[php:1:b4c9e45a8d]<?php
$update = "UPDATE kki SET przedmiot='".$_GET['przedmiot']."', data='".$_GET['data']."', co='".$_GET['co']."', nick='".$_GET['nick']."' WHERE id='".$_GET['id']."'";
$q=mysql_query($update);
if($q)
{
echo "<br><br>Przetworzono <b>".mysql_affected_rows()."</b> wierszy.";
}
else
{
echo "<br><b>Nie można wykonać zapytania.<br>Powód: ".mysql_error()."</b><br>";
}


?>[/php:1:b4c9e45a8d]
Widmo
Niestety, razem ze spenalzo wczoraj do 1:00 probowalismy cos poradzic i nic...

Wklejam wiec ostatnie wersje obu plików...

edit.php

[php:1:e3d172b0ac]
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
<META NAME="Author" CONTENT="Widmo">
<LINK REL="stylesheet" HREF="style.css" TYPE="text/css">
</HEAD>
<BODY BGCOLOR="#CDDDF6">
<CENTER>
<BR><BIG><B>Edytowanie:</B></BIG><BR>
<?
include("config.php");
$db = mysql_pconnect($db_adres, $db_login, $db_pass);
if (!$db)
{
echo ("<center>Nie można było się połączyć z bazą danych!</CENTER>");
exit;
}
mysql_select_db($db_baza);
############################################################################
$zapytanie = "SELECT * FROM kki WHERE id = ".$id."";
$wynik = mysql_query($zapytanie);
$ile_znalezionych = mysql_num_rows($wynik);

for($i=0; $i < $ile_znalezionych; $i++)
{
$wiersz = mysql_fetch_array($wynik);
($i+1);

$przedmiot = $wiersz["przedmiot"];
$data = $wiersz["data"];
$co = stripslashes($wiersz["co"]);
$nick = $wiersz["nick"];
$ip = $wiersz["ip"];
$data_w = $wiersz["data_w"];
}

?>
<FORM ACTION="update.php" METHOD="GET" TARGET="okno">
<TABLE ALIGN="CENTER" VALIGN="MIDDLE" WIDTH="0%" HEIGHT="0" CELLSPACING="0" CELLPADDING="4" BORDER="1" BGCOLOR="#66CCFF" STYLE="font-family: monospace; text-align: center">
<TR ALIGN="CENTER">
<TD>Przedmiot:</TD>
<TD><INPUT TYPE="TEXT" NAME="przedmiot" ALIGN="MIDDLE" VALUE="<? echo "$przedmiot" ?>"></TD>
</TR>
<TR ALIGN="CENTER">
<TD>Data:</TD>
<TD><INPUT TYPE="TEXT" NAME="data" ALIGN="MIDDLE" VALUE="<? echo "$data" ?>"></TD>
</TR>
<TR ALIGN="CENTER">
<TD>Co:</TD>
<TD><TEXTAREA NAME="co" ALIGN="MIDDLE" COLS="25" ROWS="8" WRAP="VIRTUAL"><? echo "$co" ?></TEXTAREA></TD>
</TR>
<TR ALIGN="CENTER">
<TD>Dodał:</TD>
<TD><INPUT TYPE="TEXT" NAME="nick" ALIGN="MIDDLE" VALUE="<? echo "$nick" ?>"></TD>
</TR>
<TR ALIGN="CENTER">
<TD>IP:</TD>
<TD><INPUT TYPE="TEXT" NAME="ip" ALIGN="MIDDLE" VALUE="<? echo "$ip" ?>" READONLY></TD>
</TR>
<TR ALIGN="CENTER">
<TD>Data wpisu:</TD>
<TD><INPUT TYPE="TEXT" NAME="data_w" ALIGN="MIDDLE" VALUE="<? echo "$data_w" ?>" READONLY></TD>
</TR>
</TABLE>
<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Zapisz"></P>
</FORM>
</CENTER>
</BODY>
</HTML>

[/php:1:e3d172b0ac]


update.php

[php:1:e3d172b0ac]
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
<META NAME="Author" CONTENT="Widmo">
<LINK REL="stylesheet" HREF="style2.css" TYPE="text/css">
</HEAD>
<BODY BGCOLOR="#CDDDF6">
<?
include("config.php");
$db = mysql_pconnect($db_adres, $db_login, $db_pass);
if (!$db)
{
echo ("<center>Nie można było się połączyć z bazą danych!</CENTER>");
exit;
}
mysql_select_db("kki");

$update = "UPDATE kki SET
przedmiot='".$_GET['przedmiot']."',
data='".$_GET['data']."',
co='".$_GET['co']."',
nick='".$_GET['nick']."'
WHERE
id='".$_GET['id']."'";

$q=mysql_query($update);
if($q)
{
echo "<br><br>Przetworzono <b>".mysql_affected_rows()."</b> wierszy.";
}
else
{
echo "<br><b>Nie można wykonać zapytania.<br>Powód: ".mysql_error()."</b><br>";
}

phpinfo();
?>
</BODY>
</HTML>

[/php:1:e3d172b0ac]

Dziekuje.
Widmo
Zapomnieli wszyscy ? sad.gif
scanner
a może do tych dwu listingów dodałbyś jakieś informacje o błeach czy o czyms? Bo wątek się rozciągnął i ja osobiście już się pogubiłem, co Ci nie działa.
Widmo
Nie wyskakuje zaden blad. Strona sie laduje, ale nie zmienia wartosci w DB... Jest napisane tylko "przetworzono 0 wierszy"...
scanner
update.php
[php:1:d55893ef6b]
$update = "UPDATE kki SET
przedmiot='".$_GET['przedmiot']."',
data='".$_GET['data']."',
co='".$_GET['co']."',
nick='".$_GET['nick']."'
WHERE
id='".$_GET['id']."'";

die($update);
[/php:1:d55893ef6b]
I wklej to co wyskoczy do phpMyAdmina... Zobaczymy co się stanie
Widmo
Znowu caly dzien sie z tym meczylem...
W nowym PHPAdminie jest opcja generowania zapytań w php wygenerowalo cos takiego:

[php:1:b4b30446d1]<?php
$sql = 'UPDATE `kki` SET `przedmiot` = '$przedmiot', `data` = '$data', `co` = '$co'

WHERE `id` = '$id' LIMIT 1 ';
?>[/php:1:b4b30446d1]

ale nawet to nie dziala.

gdy wstawie konkretne wartosci - wtedy dziala...
natomiast co mi po recznie wstawionych wartosciach jak ja potrzebuje
dynamicznego podstawiania (stringami)...

Czy komus by sie chcialo wziąźć odemnie zrodło?
I pobawic sie w to questionmark.gif
PLIZZZ... Ja juz wymiekam... sad.gif
FiDO
[php:1:00251b4cd8]<?php
$sql = "UPDATE `kki` SET `przedmiot` = '$przedmiot', `data` = '$data', `co` = '$co'
WHERE `id` = '$id' LIMIT 1";
?>[/php:1:00251b4cd8]
To powinno zadzialac.
(musza byc cudzyslowy, a nie apostrofy, zeby zmienne zostaly zinerpretowane i podmienione)
Widmo
Probowałem 'tak' juz wiele razy... NIC...

Po tylu probach mozna sie zniechecic, a to jest moj projekt na ktorym ucze sie php, zrobilem tak wiele (dla mnie) winksmiley.jpg i ... .

HELP Again...
FiDO
To pokaz troche wiecej kodu, to co podalem jest poprawne, gdzies indziej musisz miec blad.
Widmo
Zobacz, kody sa wcześniej. nic się nie zmieniło.
bregovic
a moze powinienes zmienic matode formularza z GET na POST?
no i czy przypadkiem ten target nie wadzi?
Widmo
Zmienilem na POST i dalej nie dziala...

Target tez wywalilem i dalej nie dziala...

Moze dam Wam źródła:

http://widmo.host.sk/help.zip

Bardzo prosze o pomoc... :cry:
LeWaR
W sumie skrypt niby ok, ale :
[php:1:8d824c96f6]<?php

$update = "UPDATE kki SET
przedmiot='".$_GET['przedmiot']."',
data='".$_GET['data']."',
co='".$_GET['co']."',
nick='".$_GET['nick']."'
WHERE
id='".$_GET['id']."'";
?>[/php:1:8d824c96f6]
Gdzie przekazujesz id newsa?? Nie znalazłem zadnych informacji w Twoim formularzu. Najlepiej dodaj pole hidden z id i po problemie...
adwol
Cytat
Zmienilem na POST i dalej nie dziala...

Target tez wywalilem i dalej nie dziala...

Moze dam Wam źródła:

http://widmo.host.sk/help.zip

Bardzo prosze o pomoc... :cry:

No ja tu widzę 2 rzeczy:
:arrow: w pliku update.php w zapytaniu
[sql:1:17ff9237fb]UPDATE `kki` SET `przedmiot` = '$n_przedmiot', `data` = '$n_data', `co`
= '$n_co'
WHERE `id` = '$id' LIMIT 1[/sql:1:17ff9237fb]
zamiast tych zmiennych powinny być brane odpowniedniki z tablicy $_GET (kłania się register_globals)
:arrow: w pliku edit.php w formularzu brakuje hiddena z wartością id. edit.php ją dostaje ale po przejściu do update.php jest ona tracona.
Widmo
Dziekuje jestescie wielcy smile.gif Dziala!!
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-2024 Invision Power Services, Inc.