İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

While içindeki Sorgudan Gelen Veriyi Değişkene Aktarmak

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
Selam

Bir mysql sorgumuz var. Sorguyu aşağıdaki while döngüsü içine aldıktan sonra sorguladık ve gelen veriyi echo ile ekrana bastık.

PHP:
while ($veri = mysql_fetch_array($sorgu)) 
{
echo $veri['icerik'],'<br>'; // Sorgudan gelen içerik ekrana basılıyor.
}

Fakat sorgudan elde ettiğim veriyi değişkene aktardıktan sonra ekrana basamıyorum

PHP:
while ($veri = mysql_fetch_array($sorgu)) 
{
$degisken = $veri['icerik'],'<br>';
echo $degisken; // Hiçbir sonuç vermiyor.
}

Amaç : Bu sorgu bir function içinde çalışıyor ve gelen veriyi değişkene aktardıktan sonra çıkan sonucu str_replace ile değişikliğe uğratmam gerekiyor. Bu işi başka bir yöntemle yapma imkanım varmıdır ?
 

Angelo

0
İyinet Üyesi
Katılım
13 Aralık 2004
Mesajlar
9,603
Reaction score
111
Konum
AZ
Virgül, echo construct yaptığında çalışır ancak değişken atamada değil.

$degisken = $veri['icerik'];

Gerci $veri['icerik'] de bir degisken, neden degiskene atama ihtiyaci var, str_replace'e o da girer.
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
:) Büyük problemlerle uğraşırken küçük şeyleri göremiyorum artık. Sağolasın çalıştı şu anda.

Sadece str_replace yapmıcam için başka bir değişkene aktarmak zorundayım ayrıca başka sayfalarda da kullanıcam bu değişkeni. Birazda düzenli görünmesini istiyorum bu yüzden
 

Remark

0
İyinet Üyesi
Katılım
24 Mayıs 2007
Mesajlar
395
Reaction score
0
$degisken = $veri['icerik'].'<br>'; değiştirip denermisin
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
Remark sağolasın çoğu yerde . yerine , koymaya alıştığım için bunu gözden kaçırmıştım. Kod içinde bir çok şeyle uğraşırken küçük şeyleri göremiyor insan. Web 'de bu kadar güvenlik açığı bu yüzden çıkıyor işte :) İnsan faktörünün olduğu heryerde açık vardır.
 

NeFuSa

0
İyinet Üyesi
Katılım
27 Aralık 2006
Mesajlar
1,414
Reaction score
15
Konum
İstanbul
str_replace hakkında

fonksiyon.php :

PHP:
<?PHP
function fonksiyon_ismi($deger) {
$bul=array('değişecek değer');
$degis=array('değişmiş değer');
$deger = str_replace($bul,$degis,$deger);
return $deger;
}
?>

Php sayfalarında kullanımı :

PHP:
<?PHP
include ('fonksiyon.php');
while ($veri = mysql_fetch_array($sorgu))  
{ 
$degisken = fonksiyon_ismi($veri['icerik']);
echo "$degisken <br />";
}
?>
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
sağol NeFuSa tek bir fonksiyonu her yerde kullanmak isteyenler için lazım olur.

Ben her sayfa için if bölümlerine ayrı fonksiyonlar yazdım mecburen çünkü gelen veriler sayfaya özel.

Daha sonra yapmam gereken ve fonksiyon tarafını ilgilendiren bir soruyuda sormuş olayım burda

PHP:
function al() {

global $a;
$sorgu = mysql_query("select * from tablo");

while ($veri = mysql_fetch_array($sorgu))   
{  
$degisken = explode(' ',$veri['icerik']); 
echo $degisken[0];
echo $degisken[1];
} 
}

?>

Yukarıda veriyi explode ile parçaladık ve [1] bölümüne gelen verilerin aynılarını sayıp ( veya gelen verileri sayıp ) örnek eğer 3 'den büyükse diğerlerini yok say sadece 3 tane veriyi ekrana bas gibi birşeyi nasıl yapabilirim ?
 

Loi

0
İyinet Üyesi
Katılım
13 Kasım 2006
Mesajlar
6,192
Reaction score
44
Konum
localhost
Kod:
$toplam = count($degisken[1],$veri['icerik']);
ile sayabilirsin
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
Söylediğin şekilde yaptım daha öncede hata veriyor

Warning: count() expects parameter 2 to be long, string given in satır numarası

$toplam = count($degisken[1]);
echo $toplam;

Sonuç : 111111111111111 // Bu arada bu fonksiyon while içinde çalışıyor.

Neyse şimdilik foreach ve if karşılaştırma yapıp tamamen sildim değişken içindekini.
 

Coded

0
İyinet Üyesi
Katılım
22 Mayıs 2008
Mesajlar
59
Reaction score
1
$degisken[1] in değeri zaten 1. Döngü aynı şeyi dönderip duracaktır tabi.

Yukarıda veriyi explode ile parçaladık ve [1] bölümüne gelen verilerin aynılarını sayıp ( veya gelen verileri sayıp ) örnek eğer 3 'den büyükse diğerlerini yok say sadece 3 tane veriyi ekrana bas gibi birşeyi nasıl yapabilirim ?

burayı tam anlamadım ? $degisken inmi sadece 3 değerini almak istiyorsun ?
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
Aslında şu anda sorunsuz çalışıyor yaptığım şey. Fakat bu konuya daha sonra dönücem ve esas yapmak istediğim şu.

Gelen bir veri var elimizde aşağıdaki gibi :

- ahmet nerde
- mehmet nerde
- ayse nerde

explode ile veriyi parçaladık ve nerde bölümünü aldık toplam 3 tane nerde kelimesi geçiyor. Mesela gelen başka veride ayırdığım bölümde nerdeymiş kelimesi 20 defa geçiyor diyelim.

Yapmak istediğim gelen verinin ne olduğunu bulup diğer verilerle karşılaştırıp eğer aynıysa ve 3 den fazlaysa diğerlerini göstermemesi.
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
<?
$array = array(1, "hello", 1, "world", "hello");

print_r(array_count_values($array));

?>
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
Bir dizideki her bir benzersiz değerin kaç kez görüldüğünü sayarmış. Teşekkürler Ozcan
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
<?
$array = array(1, "hello", 1, "world", "hello");

print_r(array_count_values($array));

?>

Konuyu hortlatıcam fakat bu parametreye yine işim düştü.

array_count_values ile bulunan tekrar eden veri eğer 4 tane ise array içinden çıkart ve şu değişkene ata şeklinde nasıl yapabiliriz ?
 

metadige

0
İyinet Üyesi
Katılım
23 Aralık 2005
Mesajlar
354
Reaction score
4
Arkadaşım baş tarafı okumadım ama, eğer istediğini yanlış anlamadıysam array_count_values yerine array_unique kullanmalısın

PHP:
<?php
$dizi  = array('ahmet', 'mehmet', 'nerde', 'ayşe', 'nerde', 'mehmet', 'nerde');
print_r(array_unique($dizi));
?>
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
metadige

PHP:
$dizi  = array('ahmet', 'mehmet', 'nerde', 'ayşe', 'nerde', 'mehmet', 'nerde');

Array içinde 2 'den fazla geçen kelimeleri bul ve şu diziye ata. Bunları print_r ile ekrana basabiliyoruz fakat bulunan kelimeleri array içinden çıkartıp yeni bir dizi içine nasıl gönderebilirim ?
 

metadige

0
İyinet Üyesi
Katılım
23 Aralık 2005
Mesajlar
354
Reaction score
4
Şimdi eğer 1 den fazla tekrarlananları ayıracaksan:

PHP:
$yeni_dizi = array_unique($dizi);

demen yeterli. Ancak 2,3 vs. den fazla tekrarlanalar dersen ayrı bir şey yapmak lazım. Misal :

PHP:
$say = array_count_values($dizi);
foreach($dizi as $key){
  if($say[$key] > 2) $tekrar_dizi[] = $key;
  else $asil_dizi[] = $key; 
}

Böylece 2den fazla tekrarlananlar $tekrar_dizi'de diğerleri $asil_dizi'de olmuş olur.
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
metadige verdiğin kodu çalıştırıp denedin mi ? Benim istediğim ayrıştırmayı yaptığına eminmisin ? Yoksa ben mi hata yapıyorum bilmem gerekiyor.
 

metadige

0
İyinet Üyesi
Katılım
23 Aralık 2005
Mesajlar
354
Reaction score
4
Arkadaşım kodda bir sorun yok, 2den fazla olanları ayrı bir diziye, olmayanları diğer diziye atıyor:

PHP:
<?php
$dizi  = array('ahmet', 'mehmet', 'nerde', 'ayşe', 'nerde', 'mehmet', 'nerde');
$say = array_count_values($dizi);

foreach($dizi as $key){
  if($say[$key] > 2) $tekrar_dizi[] = $key;
  else $asil_dizi[]= $key; 
}
echo 'İlk Dizi :<br />';
print_r($dizi);

echo '<br /><br />Asıl Dizi :<br />';
print_r($asil_dizi);

echo '<br /><br />Tekrar dizi: <br />';
print_r($tekrar_dizi);
?>
 

OsmanAtabey

0
İyinet Üyesi
Katılım
26 Mart 2005
Mesajlar
922
Reaction score
4
Aldığım veriyi explode ile parçalayıp array 'a gönderiyordum bu yüzden arada bir kaç hata yapmışım. Verdiğin koda array_unique ve bir foreach daha ekleyince sorunu çözdüm.

Teşekkürler metadige
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst