Php Sorusu
-
arkadaşlar çok satırlı bir inputumuz var, mesela bu mesajı yazdığım yer gibi, bu inputa girilen verileri satır satır alıp db ye ekletmek istiyorum.
1. satır 2. satır ... n. satır hepsi ayrı bir entry olacak. soruyu anlatabildim umarım. nasıl bir döngü kurarız?
-
evet başlık çarpıcı olmadı sanırım, şansımızı bi daha deneyelim
-
inputtan gelen değişkeni nl2br ile alıp her entere basıldığında sonunra <br /> ekletip regex ile satır satır ayırıp kayıt yapma gibi bişi olabilirmi acaba
-
hocam şöyle bişe olabilir inputun boyutu belli değil mi.
bi satıra kaç harf sığdığına baksonra cümleyi kaç harf sığıyosa baştan o kadar harfi bölerek dbye sırasıyla kaydet
asp'de mid fonksiyonu ile bölüyosun php'de ne fonksiyonu bilmiyorum
-
alp bunu yazdı:
-----------------------------hocam şöyle bişe olabilir inputun boyutu belli değil mi.
bi satıra kaç harf sığdığına baksonra cümleyi kaç harf sığıyosa baştan o kadar harfi bölerek dbye sırasıyla kaydet
asp'de mid fonksiyonu ile bölüyosun php'de ne fonksiyonu bilmiyorum
-----------------------------çok amele işi gibi olur bu dediğin ya, üstelik adam her satırı tamamen doldurmak zorunda değil, bi satıra 2 karakter yazar dierine 5, olmaz yani,
@genki : bişi anlamadım desem :S
şöyle bi örnek veriyim, delphide nasıl yaparız;
for i:0 to input1in_satır sayısı - 1 do
begin
dbye_ekle(input1.satır[i]);
end;
böyle bişiler olması lazım gibi :S
-
genki nin de dediği gibi nl2br ile satır satır yazdırabilirsin. ama satırları bir arraya atıp ayrı ayrı kullanmak istersen explode ile bölersin. (\n)
-
hocam şöyle bişe olabilir
sen şimdi normal bi text kutusuna yazıyı yazdın çok satırlı bunu dbye kaydettiğinde her bi satır için chr(13) karakteri kaydeder. Hatta forum için text editör yazarken replace(chr(13), "<br>") yapıp satırları bu şekilde göstermiyor muyuz
sen de adam text kutusuna bişiler yazıp gönder dediğinde text kutusundaki yazıyı al asp'de split var php'de ne bilmiyorum
chr(13)'e göre böl bi döngüyle kaydet.. asp'sini yazayımyazi = request.form("text")
bol = split(yazi, chr(13))
kacakadar = ubound(bol)
for i=1 to kacakadar
dbyekaydet(bol(i))
next
bunun phpsini yazarsan sorunun hallolur -
"adam entera basmazsa da çok satırlı yazı olursa?" dersen
chr(13) var mı ona bakarsın yoksa ilk yazdığım mesajdaki mantığı kullanırsın chr(13) varsa son yazdığım mesajdaki mantığı kullanırsın..
amelelelik diyebilirsin ama alternatif olarak yapılabilir. dediğin şeyin php'de fonksiyonu varsa ya da başka kolay yollar varsa onu yap tabi :)
-
bu yazılanlara gerek yok :S
$_post ıle gelen veri a degıskenınde toplansın. buradakı her satırı ayırmak ıcın
$a = explode("\n",$a); yeterli olacaktır
-
al dostum tam olarak işini görecek şey bu galiba :
<?php
$a="1.satırda bunlar var:hedehede hehedeh edehe hede hedehe hedehe deheh edeh 3.satırda bunlar var:hedehede hehedeh edehe hede hedehe hedehe deheh edeh 2.satırda bunlar var:hedehede hehedeh edehe hede hedehe hedehe deheh edeh";
// wordwrap fonk. ile değişkeni seksen karakterde bir kesiyoruz istersen 90 yada yetmişte yapabilirsin ve sonuna /n ekliyoruz
$na=wordwrap($a,80, "<br />\n");
//explode fonk.ilede sonunda /n olan kelimelere kadar olan harfleri satır olarak ayırıyoruz ve na arrayına atıyoruz
$na = explode("\n",$na);
echo $na[0];
echo $na[1];
echo $na[2];
?> -
pfff nihayet başardım, yardımcı olan herkese teşekkürler, belki başkasınada lazım olur, buyrun;
yazi adında bir metin alanımız var;
if (isset($_POST['yazi']))
{
$hk=split(chr(13),$_POST['yazi']); // split fonksiyonuyla yazıyı chr(13) yani enter in olduğu yerlerden ayırarak hk adlı arraya aktardık
$i=0;
while($i < count($hk)) // while döngüsüyle i değişkenimiz hk arrayının eleman sayısından küçük olduğu müddetçe döngü işliyor{
echo "bu $i. satır : $hk[$i] <br>"; //ekrana yazdırıyoruz teker teker. burda veritabanına yazıcam ben işte ;)$i++; // i yi artırıyoruz ;)
}
}temiz iş ;)
