• 02-09-2012, 18:06:32
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Selamlar,

    veritabanından gelen verileri listeletirken bir tablolama sorunu yaşıyorum.

    <table width="760" border="1" align="left">
      <tr>
        <td align="center" valign="top"><strong>Tarih</strong></td>
        <td align="center" valign="top"><strong>Açıklama</strong></td>
        <td align="center" valign="top"><strong>Tracking No</strong></td>
        <td align="center" valign="top"><strong>Alacak</strong></td>
        <td align="center" valign="top"><strong>Borç</strong></td>
      </tr>
      <?php
        // Döngü (Faturalar için)
        while($sonuc2=mysql_fetch_array($query2))	{
        ?>
      <tr>
        <td align="left" valign="top"><?php echo $sonuc2['Tarih']; ?></td>
        <td align="left" valign="top"><?php echo $sonuc2['Aciklama']; ?> <?php  if (trim($sonuc2['Fatura_No'])!="") { ?> Fatura No: <a href=fatura_detay.php?id=<?php echo $sonuc2['Fatura_No']?>> <?php echo $sonuc2['Fatura_No']; ?></a><?php } ?></td>
        <td align="right" valign="top">&nbsp;</td>
        <td align="right" valign="top"><?php echo $sonuc2['Genel_Toplam']; ?> <?php echo $sonuc2['Para_Birimi']; ?></td>
        <td align="right" valign="top">&nbsp;</td>
      </tr>
      <?php
        // Döngü (Odemeler için)
        while($sonuc3=mysql_fetch_array($query3))	{
        ?>
      <tr>
        <td align="left" valign="top"><?php echo $sonuc3['Tarih']; ?></td>
        <td align="left" valign="top"><?php echo $sonuc3['Aciklama']; ?> <?php echo $sonuc3['Odeme_Tipi']; ?></td>
        <td align="right" valign="top">&nbsp;</td>
        <td align="right" valign="top">&nbsp;</td>
        <td align="right" valign="top"><?php echo $sonuc3['Miktar']; ?> <?php echo $sonuc3['Birim']; ?></td>
      </tr>
        	<?php
        } }
        ?>
       <?php
    	// Bakiye hesabı yapıyoruz
    	$sonuc4= mysql_fetch_array($query4); // Alacak TL
    	$sonuc5= mysql_fetch_array($query5); // Alacak €
    	$sonuc6= mysql_fetch_array($query6); // Alacak $
    	
    	$sonuc7= mysql_fetch_array($query7); // Borc TL
    	$sonuc8= mysql_fetch_array($query8); // Borc €
    	$sonuc9= mysql_fetch_array($query9); // Borc $
    ?>
      <tr>
        <td width="90" align="left" valign="top">&nbsp;</td>
        <td width="390" align="left" valign="top">&nbsp;</td>
        <td width="90" align="right" valign="top">&nbsp;</td>
        <td width="100" align="right" valign="top">	<strong> <?php if (trim($sonuc4['toplam1'])!="") { ?> <?php echo $sonuc4['toplam1']; ?> </strong> TL <br /><?php } ?>
    												<strong> <?php if (trim($sonuc5['toplam2'])!="") { ?> <?php echo $sonuc5['toplam2']; ?> </strong> € <br /><?php } ?>
    												<strong> <?php if (trim($sonuc6['toplam3'])!="") { ?> <?php echo $sonuc6['toplam3']; ?> </strong> $ <br /><?php } ?></td>
        <td width="90" align="right" valign="top">	<strong> <?php if (trim($sonuc7['toplam4'])!="") { ?> <?php echo $sonuc7['toplam4']; ?> </strong> TL <br /><?php } ?>
    												<strong> <?php if (trim($sonuc8['toplam5'])!="") { ?> <?php echo $sonuc8['toplam5']; ?> </strong> € <br /><?php } ?>
    												<strong> <?php if (trim($sonuc9['toplam6'])!="") { ?> <?php echo $sonuc9['toplam6']; ?> </strong> $ <br /><?php } ?></td>
      </tr>
        </table>
    şeklinde kodlarım var.

    1. satıra 1. veritabanından gelen bilgiyi çekiyor
    2. satıra 2. veritabanından gelen bilgiyi çekiyor
    3. satıra 2. veritabanından gelen bilgiyi çekiyor
    4. satıra 2. veritabanından gelen bilgiyi çekiyor
    5. satıra 2. veritabanından gelen bilgiyi çekiyor
    6. satıra 1. veritabanından gelen bilgiyi çekiyor
    7. satıra 1. veritabanından gelen bilgiyi çekiyor

    ve böyle devam ediyor...

    ben istiyorum ki
    1. satıra 1. veritabanından gelen bilgiyi çekiyor
    2. satıra 2. veritabanından gelen bilgiyi çekiyor
    3. satıra 1. veritabanından gelen bilgiyi çekiyor
    4. satıra 2. veritabanından gelen bilgiyi çekiyor

    şeklinde verileri çeksin.
  • 02-09-2012, 18:15:38
    #2
    Üyeliği durduruldu
    querylerinize LIMIT 0,2 yazın ilk 2 verıyi çekecektir
  • 02-09-2012, 18:45:35
    #3
    Malesef olmadı. 0,2 yazdığım zaman yine aynısı oluyor. Bu arada ben 7 ve 4 satırlık örnek verdim ama gelen sonuçlar daha fazla.

    $query2 = mysql_query("SELECT musteri.Firma_Adi, musteri.Adres, musteri.Sehir, musteri.Ulke, musteri.Vergi_Dairesi, musteri.Vergi_Numarasi, musteri.Telefon, musteri.Faks, musteri.Yetkili_Kisi_1, musteri.Yetkili_Kisi_1_Mail, 
    Fatura.Para_Birimi, Fatura.Fatura_No, Fatura.Tarih, Fatura.Aciklama, Fatura.Genel_Toplam
    					FROM musteri
    					LEFT JOIN Fatura ON musteri.ID = Fatura.Musteri 
    					WHERE musteri.ID='$id'
    					ORDER BY Fatura.Tarih ASC
    					LIMIT 0,2");
    					
    
    $query3 = mysql_query("SELECT musteri.Firma_Adi, musteri.Adres, musteri.Sehir, musteri.Ulke, musteri.Vergi_Dairesi, musteri.Vergi_Numarasi, musteri.Telefon, musteri.Faks, musteri.Yetkili_Kisi_1, musteri.Yetkili_Kisi_1_Mail, 
    Odeme.Tarih, Odeme.Odeme_Tipi, Odeme.Miktar, Odeme.Birim, Odeme.Aciklama
    					FROM musteri
    					LEFT JOIN Odeme ON musteri.ID = Odeme.Musteri_ID 
    					WHERE musteri.ID='$id'
    					ORDER BY Odeme.Tarih ASC
    					LIMIT 0,2");
    şeklinde sorgularım var ve dediğiniz gibi limit 0,2 ekleyince

    1. satıra 1. veritabanından gelen bilgiyi çekiyor
    2. satıra 2. veritabanından gelen bilgiyi çekiyor
    3. satıra 2. veritabanından gelen bilgiyi çekiyor
    4. satıra 1. veritabanından gelen bilgiyi çekiyor

    şeklinde sonuç verdi.

    benim istediğim 1 1. sorgudan veri çeksin 1 2. sorgudan veri çeksin ve bu şekilde devam etsin şeklinde
  • 02-09-2012, 19:10:58
    #4
    query2'ye ödeme tablosunu da dahil edip tek döngüye çevirseniz olmuyor mu?

    query2 ve query3 sorgusunu silip benim verdiğimi deneyin.
    $query2 = mysql_query("SELECT musteri.*, Fatura.Para_Birimi, Fatura.Fatura_No, Fatura.Tarih as F_Tarih, Fatura.Aciklama as F_Aciklama, Fatura.Genel_Toplam, Odeme.Tarih as O_Tarih, Odeme.Odeme_Tipi, Odeme.Miktar, Odeme.Birim, Odeme.Aciklama as O_Aciklama 
    WHERE musteri.ID = '$id' AND musteri.ID = Fatura.Musteri AND musteri.ID = Odeme.Musteri_ID
    ORDER BY F_Tarih ASC");
    Diğer kodlarıda aşağıdaki ile değiştirin.

    <table width="760" border="1" align="left"> 
      <tr> 
        <td align="center" valign="top"><strong>Tarih</strong></td> 
        <td align="center" valign="top"><strong>Açıklama</strong></td> 
        <td align="center" valign="top"><strong>Tracking No</strong></td> 
        <td align="center" valign="top"><strong>Alacak</strong></td> 
        <td align="center" valign="top"><strong>Borç</strong></td> 
      </tr> 
      <?php 
        // Döngü (Faturalar için) 
        while($sonuc2=mysql_fetch_array($query2))    { 
        ?> 
      <tr> 
        <td align="left" valign="top"><?php echo $sonuc2['F_Tarih']; ?></td> 
        <td align="left" valign="top"><?php echo $sonuc2['F_Aciklama']; ?> <?php  if (trim($sonuc2['Fatura_No'])!="") { ?> Fatura No: <a href=fatura_detay.php?id=<?php echo $sonuc2['Fatura_No']?>> <?php echo $sonuc2['Fatura_No']; ?></a><?php } ?></td> 
        <td align="right" valign="top">&nbsp;</td> 
        <td align="right" valign="top"><?php echo $sonuc2['Genel_Toplam']; ?> <?php echo $sonuc2['Para_Birimi']; ?></td> 
        <td align="right" valign="top">&nbsp;</td> 
      </tr> 
      <tr> 
        <td align="left" valign="top"><?php echo $sonuc2['O_Tarih']; ?></td> 
        <td align="left" valign="top"><?php echo $sonuc2['O_Aciklama']; ?> <?php echo $sonuc2['Odeme_Tipi']; ?></td> 
        <td align="right" valign="top">&nbsp;</td> 
        <td align="right" valign="top">&nbsp;</td> 
        <td align="right" valign="top"><?php echo $sonuc2['Miktar']; ?> <?php echo $sonuc2['Birim']; ?></td> 
      </tr> 
            <?php 
        } 
        ?> 
       <?php 
        // Bakiye hesabı yapıyoruz 
        $sonuc4= mysql_fetch_array($query4); // Alacak TL 
        $sonuc5= mysql_fetch_array($query5); // Alacak € 
        $sonuc6= mysql_fetch_array($query6); // Alacak $ 
         
        $sonuc7= mysql_fetch_array($query7); // Borc TL 
        $sonuc8= mysql_fetch_array($query8); // Borc € 
        $sonuc9= mysql_fetch_array($query9); // Borc $ 
    ?> 
      <tr> 
        <td width="90" align="left" valign="top">&nbsp;</td> 
        <td width="390" align="left" valign="top">&nbsp;</td> 
        <td width="90" align="right" valign="top">&nbsp;</td> 
        <td width="100" align="right" valign="top">    <strong> <?php if (trim($sonuc4['toplam1'])!="") { ?> <?php echo $sonuc4['toplam1']; ?> </strong> TL <br /><?php } ?> 
                                                    <strong> <?php if (trim($sonuc5['toplam2'])!="") { ?> <?php echo $sonuc5['toplam2']; ?> </strong> € <br /><?php } ?> 
                                                    <strong> <?php if (trim($sonuc6['toplam3'])!="") { ?> <?php echo $sonuc6['toplam3']; ?> </strong> $ <br /><?php } ?></td> 
        <td width="90" align="right" valign="top">    <strong> <?php if (trim($sonuc7['toplam4'])!="") { ?> <?php echo $sonuc7['toplam4']; ?> </strong> TL <br /><?php } ?> 
                                                    <strong> <?php if (trim($sonuc8['toplam5'])!="") { ?> <?php echo $sonuc8['toplam5']; ?> </strong> € <br /><?php } ?> 
                                                    <strong> <?php if (trim($sonuc9['toplam6'])!="") { ?> <?php echo $sonuc9['toplam6']; ?> </strong> $ <br /><?php } ?></td> 
      </tr> 
        </table>
    Sorun olursa hata mesajını yazın.
  • 03-09-2012, 11:20:04
    #5
    mysql_fetch_array() expects parameter 1 to be resource, boolean given in

    şeklinde hata verdi ve verdiği hatanın satır numarasında while döngüsü var.

    ben daha önceki sorgularımda bunları birbirlerine left join ile bağlamıştım ama bunlarda bi bağ yok acaba ondan olmuş olabilir mi?

    bir de 3 tablo birbirne left joinle bağlandığı gibi 3 tablo birbirine bağlanabilir mi? bir de öyle mi denesem dicem ama oyle bir sorgu varsa da benim bilgimi aşıyor nasıl sorgusu yazılır bilemedim
  • 03-09-2012, 11:33:10
    #6
    Üyeliği durduruldu
    LIMIT 0,2 sonuna ; koyar mısınız
  • 03-09-2012, 11:53:15
    #7
    LIMIT 0,2 ve LIMIT 0,2; yi ve olabilecek tüm alternatifleri denedim ama malesef bir işe yaramadı. limit sayısıyla oynamam sadece gelen veri sayısında değişiklik yapıyor ama sıralamayı değiştirmiyor malesef



    ekteki görüntü sonuçları sanırım daha iyi anlatır diye düşünüyorum. benim istediğim bir kırmızı bir mavi sonucu versin şeklinde
  • 03-09-2012, 12:05:52
    #8
    oguzhan306 adlı üyeden alıntı: mesajı görüntüle
    mysql_fetch_array() expects parameter 1 to be resource, boolean given in

    şeklinde hata verdi ve verdiği hatanın satır numarasında while döngüsü var.

    ben daha önceki sorgularımda bunları birbirlerine left join ile bağlamıştım ama bunlarda bi bağ yok acaba ondan olmuş olabilir mi?

    bir de 3 tablo birbirne left joinle bağlandığı gibi 3 tablo birbirine bağlanabilir mi? bir de öyle mi denesem dicem ama oyle bir sorgu varsa da benim bilgimi aşıyor nasıl sorgusu yazılır bilemedim
    3 tablo arasındaki tek bağ, müşteri ID'si değil mi? Fatura ve Odeme tablosunda musteri ID'sine eşitlemişsiniz. Birde aşağıdakini deneyin. Bu arada pm atmıştım size.

    $query2 = mysql_query("SELECT musteri.*, Fatura.Para_Birimi, Fatura.Fatura_No, Fatura.Tarih as F_Tarih, Fatura.Aciklama as F_Aciklama, Fatura.Genel_Toplam, Odeme.Tarih as O_Tarih, Odeme.Odeme_Tipi, Odeme.Miktar, Odeme.Birim, Odeme.Aciklama as O_Aciklama  
    WHERE musteri.ID = '".$id."' AND musteri.ID = Fatura.Musteri AND musteri.ID = Odeme.Musteri_ID");