[최초보]문자열 입출력문제

Submitted by dhchoi on 2009.10.13.(Tue) - 00:13

안녕하세요? 항상 질문만 하는 최초보입니다.
php와 mysql을 이용하여 문자열을 입력 할때 addslashes()함수를 이용하여 입력하고 stripslashes()함수를 이용하여 출력하면 "\"나 뭐 그런 문자들은 잘 들어가고 나오쟎아요?
그런데, 공백(blank)는 어떻게 처리 하나요? 책을 뒤져 봤는데... 그런 루틴은 찾지를 못하겠습니다.

입력 후 mysql에 접속해 보면 분명 공백(blank)까지 다 들어가 있는데요...
출력을 해 보면 공백(blank)부분에서 잘려 나옵니다.
예를 들어 입력 할때 "최 초보" 이렇게 입력하면 출력시에는 "최"만 덜렁 나옵니다.

해결 방안을 알려 주시면 정말 감사하겠습니다.
좋은 밤 되세요. 감사합니다.
최 초보드림

wildapple

작성: 2009.10.13.(Tue) - 21:02

수정: 2017.05.03.(Wed) - 14:40

출력은 어떤 방법으로 하나요? 제 경우에는 문제가 없거든요.

dhchoi

작성: 2009.10.14.(Wed) - 09:07

수정: 2017.05.03.(Wed) - 14:43

In reply to by wildapple

제 질문이 너무 엉성했나 봅니다. 죄송합니다.
web에서 입력을 받습니다. (예를 들면 : input.html - form사용) 그걸 받아서 (예. inputok.php)를 통하여 mysql에 입력합니다.
그때 addslashes()함수를 사용하여 입력합니다. 그러면, mysql 에서 봐도 정상적으로 보입니다.
다시, 출력화면(예.output.php)를 작성하여 이름을 입력하면 불러 오기는 하는데 공백문자(blank)에서 잘려 버립니다.

그런데, 한가지 아무리 생각해 봐도 제가 이해 안되는게 있습니다. 저는 지금 화면을 frame으로 나누어 씁니다.
한쪽에는 이름만 주~~~욱 보이도록 했구요.
그 이름을 클릭하면 다른 한쪽 frame에서 자세한 내역이 나오도록 (이름/전화번호 등등)이 나오도록 했습니다.

문제는 이름만 주~~욱 나열된 곳은 공백문자(blank)의 문제 없이 다 보입니다.
그런데, 자세한 내역이 나오도록 한 곳은 잘려 버립니다. 두 php문서는, 아시는 바와 같이 제가 워낙 초보라 똑 같이 했습니다.
불러오는 방법도 같고 뿌려주는 방법도 같은데...
다만 한가지 다른게 있다면 주~~~욱 나열된 곳은 를 사용하지 않고 그냥 화면에 보이도록 했고 자세한 내역이 나오도록 한 곳은 >을 사용하였다는 겁니다.
혹시 여기서 문제가 있는게 아닐까요? 창피하지만 소스코드 보여 드릴까요???

도움 부탁드리겠습니다.
감사합니다. 최 초보 드림

wildapple

작성: 2009.10.14.(Wed) - 09:39

수정: 2017.05.03.(Wed) - 14:45

In reply to by dhchoi

일단 대충(?) 추측해 보면 > 에서 $data[name] 형태는 php에서 배열인 것 같습니다.
"1 2 3" 이런 데이터를 배열로 다룬다면 공백이 각각의 데이터를 구분하기 때문에 데이터 하나만 출력 되겠죠.
확실하지 않지만 이 부분을 고쳐야 할 것 같습니다.

dhchoi

작성: 2009.10.14.(Wed) - 22:33

수정: 2017.05.03.(Wed) - 14:49

In reply to by wildapple

제가 보고 있는 책들(3권)이 전부 mysql_fetch_array()를 사용하고 있습니다.
그래서 저는 그게 맞는 줄 알고 책에 있는데로 따라 하고 있습니다. 그런데, 책대로 해도 안됩니다.
잠시 코드를 봐 주세요.
<?php 
  include"db_connect.php"; 
  $query="select * from company where id=$id"; 
  $result=mysql_query($query,$connect); 
  $row = mysql_fetch_array($result); 
  $id = $row[id]; 
?>
위와 같이 접속 했습니다.
echo "$row[name]"; 
echo "$row[tel]"; 
echo "$row[fax]"; 
echo "$row[address]"; 
echo "$row[remarks]"; 
echo "$row[name]"; 
위 명령은 정상적으로 다 나옵니다. 공백문자(blank)는 물론 역슬래쉬까지도 잘 나옵니다.
회사명(<? echo $row[id] ?>) > 여기서는 회사이름이 잘립니다.

저의 생각으로는
echo "$row[name]";
가 정상적으로 출력이 된다면 밑에도 정상적으로 출력이 되어야 하는것 같은데 안됩니다. 그래서 더욱 궁금합니다.
뭐가 잘못되었는지 지적해 주시고 해결 방법을 알려 주시기를 간절히 부탁드립니다.

감사합니다. 최 초보드림

php와는 상관이 없군요. 저도 잘 몰라서 직접 해봐야지 답이 나오네요^^
> 이 부분에서 value에 "를 붙여 주세요.
value="<? echo $row[name]; ?>" 
* ?>" 앞에 ; 빠진 거 아닌가요? 없어도 되나요?
 
value="1 2" 
여기에서 " 빠지면 value=1 2 가 되니 당연히 1만 나오겠죠.

이 고마움... 이 감사함... 어떻게 말로 다 표현하리까... 정말 감사합니다. 절 받으시죠.... OZL...
잘 나옵니다. 이제 드디어 다음 진도를 나갈 수 있게 되었습니다.
단순히 " 하나에도 울고 웃을 수 있다는 걸 느끼게 됩니다.

역시 컴퓨터는 아무나 하는게 아니군요... ;)
다시 한번 진심으로 감사드립니다.
최 초보드림

 value="<? echo $row[name]; ?>"
        * ?>" 앞에 ; 빠진 거 아닌가요? 없어도 되나요?

써 놓고 보니 이상해서 다시 한번 봤습니다만 ;
없어도 나옵니다.
이것도 이상합니다만 결과가 나와서... ㅎㅎㅎ

최 초보드림