[php, mysql, html] problem z spacja w formularzu
[php, mysql, html] problem z spacja w formularzu
mam w baze "oddzialy" a w niej tabele "oddzial" oddzial posiada zmienna "nazwa" (char(20)). Mam formularz umozliwiajacy modyfikacje tej zmiennej.
[php]<?php
//tu wyciagam nazwe z bazy
$zapytanie = "SELECT * FROM kontakt_oddzial WHERE
id_oddzial IN($id_oddzial) ";
if($wykonaj = mysql_query($zapytanie))
{
while($wiersz = mysql_fetch_array($wykonaj))
{
$st_nazwa=$wiersz['nazwa'];
}
}
//jesli mam zmienic nazwe to ja zmieniam
if($co =='zm_nazwe')
{
$st_nazwa=$nazwa; // zeby po zmienie nazwy nie wyswieltilc
//tej z bazy tylko z formularza
$rozkaz="UPDATE kontakt_oddzial SET nazwa='$nazwa'
WHERE id_oddzial IN($id_oddzial)";
if(!mysql_query($rozkaz))
echo("blad");
}
/// i formularz wyswietlajacy w poli text stara nazwe
// i ew wysylajacy polecenie zmiany (zmienna "co" )
//oraz sama nowa zmienna (nazwa) no i oczywiscie id (jawnie w adresie)
print"
<FORM METHOD=POST ACTION=edycja.php?id_oddzial=$id_oddzial>
nazwa:
<INPUT TYPE=text NAME=nazwa VALUE=$st_nazwa>
<INPUT TYPE=hidden NAME=co VALUE=zm_nazwe>
<INPUT TYPE=SUBMIT VALUE=Zmien>
</FORM>";
?>[/php]
a wiec w czym tkwi problem :
dopuki zmienna nazwa jest jednoczlonowa (bez spacji)
skrypt dziala bez zarzutu. Niestety czasem potrzebuje wpisca nazwe dwuczlonowa i wtedy zaczynaja sie problemy
1) jesli wpisze zmienna z spacja zostanie ona dodana do bazy poprawnie ale nie wyswietli sie poprawnie w formularzu
2) jesli recznie wpisze zmienna do bazy to takze nie zostanie ona prawidlowo pobrana z bazy i wpisana do formularza
prosze powiedzcie mi w czym tkwi problem
[php]<?php
//tu wyciagam nazwe z bazy
$zapytanie = "SELECT * FROM kontakt_oddzial WHERE
id_oddzial IN($id_oddzial) ";
if($wykonaj = mysql_query($zapytanie))
{
while($wiersz = mysql_fetch_array($wykonaj))
{
$st_nazwa=$wiersz['nazwa'];
}
}
//jesli mam zmienic nazwe to ja zmieniam
if($co =='zm_nazwe')
{
$st_nazwa=$nazwa; // zeby po zmienie nazwy nie wyswieltilc
//tej z bazy tylko z formularza
$rozkaz="UPDATE kontakt_oddzial SET nazwa='$nazwa'
WHERE id_oddzial IN($id_oddzial)";
if(!mysql_query($rozkaz))
echo("blad");
}
/// i formularz wyswietlajacy w poli text stara nazwe
// i ew wysylajacy polecenie zmiany (zmienna "co" )
//oraz sama nowa zmienna (nazwa) no i oczywiscie id (jawnie w adresie)
print"
<FORM METHOD=POST ACTION=edycja.php?id_oddzial=$id_oddzial>
nazwa:
<INPUT TYPE=text NAME=nazwa VALUE=$st_nazwa>
<INPUT TYPE=hidden NAME=co VALUE=zm_nazwe>
<INPUT TYPE=SUBMIT VALUE=Zmien>
</FORM>";
?>[/php]
a wiec w czym tkwi problem :
dopuki zmienna nazwa jest jednoczlonowa (bez spacji)
skrypt dziala bez zarzutu. Niestety czasem potrzebuje wpisca nazwe dwuczlonowa i wtedy zaczynaja sie problemy
1) jesli wpisze zmienna z spacja zostanie ona dodana do bazy poprawnie ale nie wyswietli sie poprawnie w formularzu
2) jesli recznie wpisze zmienna do bazy to takze nie zostanie ona prawidlowo pobrana z bazy i wpisana do formularza
prosze powiedzcie mi w czym tkwi problem
Re: [php, mysql, html] problem z spacja w formularzu
Odpowied jest prosta, jakby zajrzał do ródła strony (tego z przeglšdarki, widok -> pokaż ródło), pewnie domyliłby się sam... Chodzi o cudzysłów
jest:
<INPUT TYPE=text NAME=nazwa VALUE=$st_nazwa>
powinno być:
<INPUT TYPE=text NAME=nazwa VALUE=\"$st_nazwa\">
Czyli kod skryptu powinien wyglšdać tak:
[php]
<?php
//tu wyciagam nazwe z bazy
$zapytanie = "SELECT * FROM kontakt_oddzial WHERE
id_oddzial IN($id_oddzial) ";
if($wykonaj = mysql_query($zapytanie))
{
while($wiersz = mysql_fetch_array($wykonaj))
{
$st_nazwa=$wiersz['nazwa'];
}
}
//jesli mam zmienic nazwe to ja zmieniam
if($co =='zm_nazwe')
{
$st_nazwa=$nazwa; // zeby po zmienie nazwy nie wyswieltilc
//tej z bazy tylko z formularza
$rozkaz="UPDATE kontakt_oddzial SET nazwa='$nazwa'
WHERE id_oddzial IN($id_oddzial)";
if(!mysql_query($rozkaz))
echo("blad");
}
/// i formularz wyswietlajacy w poli text stara nazwe
// i ew wysylajacy polecenie zmiany (zmienna "co" )
//oraz sama nowa zmienna (nazwa) no i oczywiscie id (jawnie w adresie)
print"
<FORM METHOD=POST ACTION=edycja.php?id_oddzial=$id_oddzial>
nazwa:
<INPUT TYPE=text NAME=nazwa VALUE="$st_nazwa">
<INPUT TYPE=hidden NAME=co VALUE=zm_nazwe>
<INPUT TYPE=SUBMIT VALUE=Zmien>
</FORM>";
?>
[/php]
jest:
<INPUT TYPE=text NAME=nazwa VALUE=$st_nazwa>
powinno być:
<INPUT TYPE=text NAME=nazwa VALUE=\"$st_nazwa\">
Czyli kod skryptu powinien wyglšdać tak:
[php]
<?php
//tu wyciagam nazwe z bazy
$zapytanie = "SELECT * FROM kontakt_oddzial WHERE
id_oddzial IN($id_oddzial) ";
if($wykonaj = mysql_query($zapytanie))
{
while($wiersz = mysql_fetch_array($wykonaj))
{
$st_nazwa=$wiersz['nazwa'];
}
}
//jesli mam zmienic nazwe to ja zmieniam
if($co =='zm_nazwe')
{
$st_nazwa=$nazwa; // zeby po zmienie nazwy nie wyswieltilc
//tej z bazy tylko z formularza
$rozkaz="UPDATE kontakt_oddzial SET nazwa='$nazwa'
WHERE id_oddzial IN($id_oddzial)";
if(!mysql_query($rozkaz))
echo("blad");
}
/// i formularz wyswietlajacy w poli text stara nazwe
// i ew wysylajacy polecenie zmiany (zmienna "co" )
//oraz sama nowa zmienna (nazwa) no i oczywiscie id (jawnie w adresie)
print"
<FORM METHOD=POST ACTION=edycja.php?id_oddzial=$id_oddzial>
nazwa:
<INPUT TYPE=text NAME=nazwa VALUE="$st_nazwa">
<INPUT TYPE=hidden NAME=co VALUE=zm_nazwe>
<INPUT TYPE=SUBMIT VALUE=Zmien>
</FORM>";
?>
[/php]
Re: [php, mysql, html] problem z spacja w formularzu
niestety sprawa nie jest taka prosta
przedewszystkim
[php]<?php
<INPUT TYPE=text NAME=nazwa VALUE=".$st_nazwa.">
?>[/php]
a nie
[php]<?php
<INPUT TYPE=text NAME=nazwa VALUE="$st_nazwa">
?>[/php]
"." -jako połaczenie ciągów znakowych
ale to nie rozwiazuje problemu
gdyby problem tkwil w tym co napisales skrypt nie dzialal by wcale a tutej problem tkwi tylko w danych ze spacja
przedewszystkim
[php]<?php
<INPUT TYPE=text NAME=nazwa VALUE=".$st_nazwa.">
?>[/php]
a nie
[php]<?php
<INPUT TYPE=text NAME=nazwa VALUE="$st_nazwa">
?>[/php]
"." -jako połaczenie ciągów znakowych
ale to nie rozwiazuje problemu
gdyby problem tkwil w tym co napisales skrypt nie dzialal by wcale a tutej problem tkwi tylko w danych ze spacja
Re: [php, mysql, html] problem z spacja w formularzu
Zamiast wpisywania spacji naciśnie alt, i na klawiaturze numerycznej (nadal trzymając alt) wklep 0160 . W ten sposób powsanie taki znaczek: " "... znaczy spacja innego rozdaju 
Re: [php, mysql, html] problem z spacja w formularzu
problem sie rozwiazal
powinno byc
[php]<?php
<INPUT TYPE=text NAME=nazwa VALUE='$st_nazwa'>
?>[/php]
nie moglo byc " bo wszystko print-em wysylalem i jak " wstawialem to sie sie lipa robila a jak ' to sie html ladni kuma o co mi chodzi
dzieki z zwrucenie uwagi na cudzyslowy
powinno byc
[php]<?php
<INPUT TYPE=text NAME=nazwa VALUE='$st_nazwa'>
?>[/php]
nie moglo byc " bo wszystko print-em wysylalem i jak " wstawialem to sie sie lipa robila a jak ' to sie html ladni kuma o co mi chodzi
dzieki z zwrucenie uwagi na cudzyslowy
Re: [php, mysql, html] problem z spacja w formularzu
Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...
W kodzie "gotowym" zapomniałem wstawić \ przed "... Działałoby i z cudzysłowami... Sam miałem podobny problem, to wiem
W kodzie "gotowym" zapomniałem wstawić \ przed "... Działałoby i z cudzysłowami... Sam miałem podobny problem, to wiem
-
CodeHunter
- Posty: 1
- Rejestracja: sob wrz 18, 2004 9:42 pm
- Lokalizacja: Poland
- Kontakt:
Re: [php, mysql, html] problem z spacja w formularzu
Hmm a czy nie jest tak, ze standardem jest pisanie wszystkich wartosci w tagach html w cudzyslowach? Najlepiej jest zawsze stosowac cudzyslowy, wtedy uniknie sie problemow.
Kod powinien wygladac tak:
lub tak (moim zdaniem lepiej):
Kod powinien wygladac tak:
Kod: Zaznacz cały
print"
<FORM METHOD=\"POST\" ACTION=\"edycja.php?id_oddzial=$id_oddzial\">
nazwa:
<INPUT TYPE=\"text NAME=\"nazwa\" VALUE=\"$st_nazwa\">
<INPUT TYPE=\"hidden\" NAME=\"co\" VALUE=\"zm_nazwe\">
<INPUT TYPE=\"SUBMIT\" VALUE=\"Zmien\">
</FORM>";
Kod: Zaznacz cały
print ('
<FORM METHOD="POST" ACTION="edycja.php?id_oddzial='.$id_oddzial.'">
nazwa:
<INPUT TYPE="text" NAME="nazwa" VALUE="'.$st_nazwa.'">
<INPUT TYPE="hidden" NAME="co" VALUE="zm_nazwe">
<INPUT TYPE="SUBMIT" VALUE="Zmien">
</FORM>');
Re: [php, mysql, html] problem z spacja w formularzu
w sumie masz racje ale bardzo czesto po prostu przenosimy do php kawelek kodu dzialajacej juz strony napisanej wczesniej w html-u i wtedy stosjue sie najprostrze metody prowadzace do celu czyli wstawia cudzislowy tylko tam gdzie to konieczne
Re: [php, mysql, html] problem z spacja w formularzu
mo tak, tyle bledow w jednym malym tekscie. Po pierwsze: od kiedy tagi HTML pisze sie z wIelkiej litery? Po drugie: gdzie sa apostrofy lub cudzyslowia w wartosciach?szyszek pisze:problem sie rozwiazal
powinno byc
[php]<?php
<INPUT TYPE=text NAME=nazwa VALUE='$st_nazwa'>
?>[/php]
nie moglo byc " bo wszystko print-em wysylalem i jak " wstawialem to sie sie lipa robila a jak ' to sie html ladni kuma o co mi chodzi
dzieki z zwrucenie uwagi na cudzyslowy
Ponadto poczepiam sie jeszcze tego ze nikt nie mysli o wydajnosci. po co do zwyklego wyswietlania funkcja [manual]print[/manual] skoro [manual]echo[/manual] jest ok. 5x szybsze? print rozn sie od echo tylko tym ze mozemy wyciagnac informacje z printa czy cokolwiek pokazal. czyli:
[php]<?php
$a=print ("tekst");
?>[/php]
na ekranie zostanie wyswietlony teskt, a ponadto zmienna $a przyjmie wartosc 1.
W przypadku echo(), taka konstrukcja zwroci blad.
Rzeczowy przyklad nie dzialal tylko z jednego powodu, bledu w HTML. Jeszcze raz pisze ze w html wartosci piszemy w cudzysloiu (lub w apostrofie). Powinno wiec byc:[php]<?php
echo "<input type="text" name="nazwa" value="".$st_nazwa."">";
?>[/php]
lub:
[php]<?php
echo "<input type='text' name='nazwa' value='".$st_nazwa."'>";
?>[/php]
lub:
[php]<?php
echo html_entity_decode("<input type="text" name="nazwa" value="".$st_nazwa."">");
?>[/php]

