Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] dziwny blad
infern
post 21.12.2007, 16:28:19
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 2
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


Witam,

Tworze proste zapytanie w php:
  1. <?php
  2. $query = "SELECT * FROM Stanowisko WHERE Nazwa_stan='".$temp."'";
  3. $result = mysql_query($query);
  4. $line = mysql_fetch_array($result, MYSQL_ASSOC);
  5. ?>


Jest wszystko okej, problem pojawia sie jedynie jesli w jakies tam komorce jest w stringu & to wtedy nie dziala, co moze byc przyczyna?
Go to the top of the page
+Quote Post
Lejto
post 21.12.2007, 17:14:42
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


opisz dokładniej problem i daj kod tam gdzie błąd się robi bo tak zapytanie jest czyste nie wiem tylko czy "Stanowisko" nie powinno być z małej litery

daj jeszcze przy wywołaniu zapytania or die i zobacz czy nie będzie błędu


--------------------
Go to the top of the page
+Quote Post
infern
post 21.12.2007, 19:11:18
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 2
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


Cytat(Lejto @ 21.12.2007, 17:14:42 ) *
opisz dokładniej problem i daj kod tam gdzie błąd się robi bo tak zapytanie jest czyste nie wiem tylko czy "Stanowisko" nie powinno być z małej litery

daj jeszcze przy wywołaniu zapytania or die i zobacz czy nie będzie błędu


Stanowisko jest definiwane z duzej litery przy tworzeniu tabeli.
Pisalem oco chodzi mam stworzona tabele z wpisami i jesli chce wyluskac wiersz gdzie np Nazwa_stan="fdsjfsglkdf & fsdfsd" to nie wyswietla mi poprawnie pozniej do inputa, a jesli jest string bez znaczka & to wtedy jest wszystko okej,
jak dodam die to nic sie nie dzieje, zapytanie sie dobrze wywoluje
wiecej kodu:
  1. <?php
  2. $temp = $_GET['NazwaStan'];
  3. $query = "SELECT * FROM Stanowisko WHERE Nazwa_stan='".$temp."'";
  4. $result = mysql_query($query) or die("Blad");
  5. $line = mysql_fetch_array($result, MYSQL_ASSOC);
  6. $temp = $line["Nazwa_stan"];
  7. echo "<INPUT type=\"text\" name=\"Nazwa_stan\" style=\"width: 328px;\" maxlength=\"40\" value=\"$temp\">";
  8. ?>
Go to the top of the page
+Quote Post
dadexix
post 21.12.2007, 19:15:55
Post #4





Grupa: Zarejestrowani
Postów: 439
Pomógł: 21
Dołączył: 28.06.2007
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


jak się nie myle to & jest jednym ze znaków który "przeszkadza" mysql(pewnie nie bez powodu) przepuść stringa przez mysql_real_escape_string" title="Zobacz w manualu PHP" target="_manual i wymiatasz;]


--------------------
"Na przykład zmiennej $jestem_najlepszy przypisujemy wartość logiczną TRUE"
Ja: użyj funkcji[...]
Grins: mów normalnie do mnie a nie po polsku
Ja: normalnie to znaczy jak?
Grins: No w PHP... inaczej mój parser ledwo kuma:)
Go to the top of the page
+Quote Post
infern
post 21.12.2007, 19:57:38
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 2
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


No niestety nie dziala obcina strina przed znakiem &, bo wyrzucam juz echo po kazdej operacji i stad wiem, jakies dalsze wskazowiki?
Go to the top of the page
+Quote Post
czachor
post 21.12.2007, 20:29:53
Post #6





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Przed wrzuceniem do bazy zrób to:
  1. <?php
  2. $string = htmlspecialchars($string, ENT_QUOTES);
  3. ?>


Ew. przed wyświetleniem, ale lepiej przed dodaniem do bazy, bo potem nie musisz robić tego za każdym razem.

Poza tym nie miałeś zamkniętej wartości VALUE w "".

Aha, i optymalniej i przejrzyściej:
  1. <?php
  2. echo '<INPUT type="text" name="Nazwa_stan" style="width: 328px;" maxlength="40" value="' . $temp . '">';
  3. ?>


Ten post edytował czachor 21.12.2007, 20:31:55


--------------------
how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free
Go to the top of the page
+Quote Post
infern
post 21.12.2007, 20:39:25
Post #7





Grupa: Zarejestrowani
Postów: 35
Pomógł: 2
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


Zrobilem tak jak doradziles:
  1. <?php
  2. $temp = $_POST['Nazwa_stan'];
  3. $temp2 = htmlspecialchars($temp, ENT_QUOTES);
  4. $query = "INSERT INTO Stanowisko (Nazwa_stan) VALUES ('$temp2')";
  5. mysql_query($query);
  6. ?>


Jednak jest dalej problem z pobraniem danych przez PHP, jak robie to bezposrednio w MYSQL dziala wszystko z &
Go to the top of the page
+Quote Post
czachor
post 21.12.2007, 20:59:02
Post #8





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $temp = $_POST['Nazwa_stan'];
  3. $query = "INSERT INTO Stanowisko (Nazwa_stan) VALUES ('$temp')";
  4. mysql_query($query);
  5.  
  6. //....robisz fetch'a, potem
  7. echo htmlspecialchars($temp, ENT_QUOTES);
  8. ?>


--------------------
how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free
Go to the top of the page
+Quote Post
infern
post 21.12.2007, 21:07:34
Post #9





Grupa: Zarejestrowani
Postów: 35
Pomógł: 2
Dołączył: 26.11.2007

Ostrzeżenie: (0%)
-----


Oj, zauwazylem ze zle mi przez metode GET przenosi bo jak zrobie wsyswietlenie zaraz to juz mi obcina

Dobra jest tak
1) wywolanie:
  1. <?php
  2. $query = "SELECT * FROM Stanowisko";
  3. $result = mysql_query($query);
  4. while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
  5. {
  6. echo "<tr>";
  7. $temp = $line["Nazwa_stan"];
  8. echo "<td align=\"left\"><a href=\"dwa.php?func=showPos&NazwaStan=$temp\" target=\"funk\">$temp</a></td>";
  9. echo "</tr>";
  10. }
  11. ?>

2) Pozniej testuje tak:
  1. <?php
  2. $temp = $_GET['NazwaStan'];
  3. echo $temp;
  4. $temp2 = mysql_escape_string($temp);
  5. echo $temp2;
  6. $query = "SELECT * FROM Stanowisko WHERE Nazwa_stan='".$temp2."'";
  7. $result = mysql_query($query);
  8. echo $result;
  9. $line = mysql_fetch_array($result, MYSQL_ASSOC);
  10. echo $line;
  11. ?>


Niestety wyswietla juz tak:
temp - obciete do &
temp2 - to samo
result - Resource #id3
line - i tutaj nie wyswietla nic

Chyab poprostu usune te znaki z wierszy i to bedzie najprostrze wysjcie

Ten post edytował infern 21.12.2007, 21:17:59
Go to the top of the page
+Quote Post
Liko
post 21.12.2007, 22:57:54
Post #10





Grupa: Zarejestrowani
Postów: 436
Pomógł: 6
Dołączył: 8.11.2003
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Bo nie możesz przez metodę GET wysyłać znaczka & (ampersand) bo jest on w niej używany do łączenia zmiennych w zapytaniu. Także zakoduj cały string prze wrzuceniem go do linka funkcją np. urlencode" title="Zobacz w manualu PHP" target="_manual. Później deokodujesz używając urldecode.

  1. <?php
  2. $sOne = 'Something & Something Else';
  3. print '<a href="./'.basename($_SERVER['PHP_SELF']).'?temp='.urlencode( $sOne ).'">Link</a><br/>';
  4.  
  5. if( isset( $_GET['temp'] ) ) {
  6. print urldecode( $_GET['temp'] );
  7. }
  8. ?>


Ten post edytował Liko 21.12.2007, 23:01:33
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:28