v2.5.2
Giriş yap

Veri olmayan php api'yi çalıştırmama

erdal42
515 defa görüntülendi ve 1 kişi tarafından değerlendirildi
<div class="kutucugumuz"></div>

<?php

if ( isset($_GET['language']) ) {
  $language = $_GET['language'];
} else {
  $language = 'en';
}

if ( isset($_GET['userAgent']) ) {
  $userAgent = $_GET['userAgent'];
} else {
  $userAgent = 'WikiBot/1.0 (+http://'.$_SERVER['SERVER_NAME'].'/)';
}

if ( isset($_GET['betterResults']) and
     ($_GET['betterResults'] == 'false' or $_GET['betterResults'] == 0) ) {
  $betterResults = false;
} else {
  $betterResults = true;
}

if ( isset($_GET['proxy']) ) {
  $proxy = $_GET['proxy'];
} else {
  $proxy = null;
}

if ( isset($_GET['imageProxy']) and
     ($_GET['imageProxy'] == 'false' or $_GET['imageProxy']== 0) ) {
  $imageProxy = false;
} else {
  $imageProxy = true;
}

if ( isset($_GET['DEBUG']) ) {
  $DEBUG = $_GET['DEBUG'];
} else {
  $DEBUG = null;
}

// Set the Parameter
$options = array(
  'language'      => $language,
  'userAgent'     => $userAgent,
  'betterResults' => $betterResults,
  'proxy'         => $proxy,
  'imageProxy'    => $imageProxy,
  'DEBUG'         => $DEBUG,
);


require_once __DIR__.'/ciktisi.php';

// Start the Wikipedia API Class
$wiki = new wiki($options);

// Output the API Response
echo $wiki->api($_GET['q']);

// Print the Script Runtime in DEBUG Mode
if ( isset($DEBUG) ) {
  echo "<pre>\n\n\tRuntime: ".number_format((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']),3);
   }

?>

Merhabalar, yukarıdaki kodda aramalarda mesela üste verdiğim div'i apilerde sonuç çıkmayınca sadece içi boş kutucuk çıkıyor. Eğer sonuç yok ise nasıl tamamen div'i kaldırabiliriz ?

Cevap yaz
Cevaplar (30)
ebykdrms
762 gün önce

Stilllerinizi sayfanın üstünde çağırmalısınız.

<?php

$language = isset($_GET['language']) ? $_GET['language'] : 'en';

$userAgent =  isset($_GET['userAgent']) ? $_GET['userAgent'] : 'WikiBot/1.0 (+http://'.$_SERVER['SERVER_NAME'].'/)';

$betterResults = !( isset($_GET['betterResults']) && ($_GET['betterResults'] == 'false' || $_GET['betterResults'] == 0));

$proxy = isset($_GET['proxy']) ? $_GET['proxy'] : null;

$imageProxy = !(isset($_GET['imageProxy']) && ($_GET['imageProxy'] == 'false' || $_GET['imageProxy']== 0));

$DEBUG = isset($_GET['DEBUG']) ? $_GET['DEBUG'] : null;

// Set the Parameter
$options = array(
  'language'      => $language,
  'userAgent'     => $userAgent,
  'betterResults' => $betterResults,
  'proxy'         => $proxy,
  'imageProxy'    => $imageProxy,
  'DEBUG'         => $DEBUG,
);

require_once __DIR__.'/ciktisi.php';

// Start the Wikipedia API Class
$wiki = new wiki($options);

// Output the API Response
$apiResult = $wiki->api($_GET['q']);
if($apiResult) { ?>
    
    <div class="kutucugumuz">
        <div class="bilgi viki5">
            <h3 class="yazilar"><i class="ikon"></i> Türkçe wikimiz</h3>
        </div>
        <div class="sag-bilgi">
            <div class="left-s"><span class="digerb"></span></div>
            <div class="">
                <div class="kucuk">
                    <div class="">
                        <?=$apiResult?>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
<?php } else { ?>

    <div>Buraya da sonuç dönmediğinde görüntülenecek içerik gelecek</div>
    
<?php }

// Print the Script Runtime in DEBUG Mode
if ( isset($DEBUG) ) {
    echo "<pre>\n\n\tRuntime: ".number_format((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']),3);
}
?>
erdal42
762 gün önce

Hocam çalıştı :)

Sonuçlar çıkmadığında else'ye

<style>
.kutucugumuz {
    display:none;
}
</style>

diyerek gözükmemesini sağlatıyoruz.

Eğer sonuç var ise sıkıntısız bir şekilde yazdırıyor :)
Size nasıl teşekkür etsem az. Bu gibi sorunlarla karşılaştığımızda yardımımıza koştunuz. Artık php üzerine daha fazla düşeceğim. :)

ebykdrms
762 gün önce

Kodu güncelledim tekrar deneyin. Kod içinde geçen exit(); kodlarını silin.
Sayfanın altında üstünde başka kodlar varsa onlar etkiliyor da olabilir.
Sorun stillerin gelmemesiyse stilleri sayfanın üst kısımlarında yazın.
Şu an veriyi kutuya yazıyor olmalı. Ekran görüntüsü atabilir misiniz?

erdal42
762 gün önce

Aynı şekilde devam ediyor sorun hocam :/

erdal42
762 gün önce
ebykdrms
762 gün önce

ekran görüntüsü görme şansım var mı?

erdal42
762 gün önce

string(1859) " diye bir kod çıktı. Yine çalıştı. Ancak tüm divleri devre dışı bırakara.

ebykdrms
762 gün önce

İçine yazdığınızda div'leriniz görünüyor. Ama içi boş div'ler.
echo $apiResult; yazan yere var_dump($apiResult); yazıp sonuç geldiğinde oraya ne çıktı verdiğini bana göstermeniz gerekiyor.

Sonuç gelmediğinde de else içine yazdıklarınız görünüyor olmalı.

erdal42
762 gün önce

İçine yazdım yine aynı sonuç ile karşılaştık hocam. Çok ilginç

ebykdrms
762 gün önce

div'leri yukarı yazmayın.
Buraya sonuç döndüğünde ne istiyorsak o içerik gelecek. kutucuk, küçük, div'ler vs her ne istersek buraya...
yazdığım yere yazın.
else içindeki stilleri kaldırın. Ona gerek yok. Sonuç dönmediğinde görünecek html verisini oraya yazın.

erdal42
762 gün önce
<div class="kutucugumuz"><div class="bilgi viki5">
<h3 class="yazilar"><i class="ikon"></i> Türkçe wikimiz</h3></div><div class="sag-bilgi"><div class="left-s"><span class="digerb"></span></div><div class=""><div class="kucuk"><div class="">
<?php

$language = isset($_GET['language']) ? $_GET['language'] : 'tr';

$userAgent =  isset($_GET['userAgent']) ? $_GET['userAgent'] : 'WikiBot/1.0 (+http://'.$_SERVER['SERVER_NAME'].'/)';

$betterResults = !( isset($_GET['betterResults']) && ($_GET['betterResults'] == 'false' || $_GET['betterResults'] == 0));

$proxy = isset($_GET['proxy']) ? $_GET['proxy'] : null;

$imageProxy = !(isset($_GET['imageProxy']) && ($_GET['imageProxy'] == 'false' || $_GET['imageProxy']== 0));

$DEBUG = isset($_GET['DEBUG']) ? $_GET['DEBUG'] : null;

// Set the Parameter
$options = array(
  'language'      => $language,
  'userAgent'     => $userAgent,
  'betterResults' => $betterResults,
  'proxy'         => $proxy,
  'imageProxy'    => $imageProxy,
  'DEBUG'         => $DEBUG,
);

require_once __DIR__.'/ciktisi.php';

// Start the Wikipedia API Class
$wiki = new wiki($options);

// Output the API Response
$apiResult = $wiki->api($_GET['q']);
if($apiResult) { echo $apiResult; ?>
    
    <div>Buraya sonuç döndüğünde ne istiyorsak o içerik gelecek. kutucuk, küçük, div'ler vs her ne istersek buraya...</div>
    
<?php exit(); }
else { ?>

<style>
.kutucugumuz {
display:none;
}
</style>
    
<?php }

// Print the Script Runtime in DEBUG Mode
if ( isset($DEBUG) ) {
    echo "<pre>\n\n\tRuntime: ".number_format((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']),3);
    exit();
}
?>

</a></div></div></div><div class="son sag-taraf"><span class="dd"></span></div></div></div>
ebykdrms
762 gün önce

div'lerinizi nereye yazıyorsunuz?
çalışınca ne hata veriyor?

erdal42
762 gün önce

Hocam bu sefer çalıştığında tüm diğer divleri dahil tamamen kaldırıyor.
Normal text'i gibi geliyor.
Örn : https://prnt.sc/ffvb-NN3GXwf
Kısaca kutucuğun içinde değil.

Gözükmemesi için böyle yaptım ve çalıştı. Ancak çalışınca hata veriyor bu sefer.

else { ?>

<style>
.kutucugumuz {
display:none;
}
</style>

ebykdrms
762 gün önce

Bi'yeri yanlış yazmışım. Önceki mesajımı güncelledim. Tekrar deneyin.

erdal42
762 gün önce

Bu sefer hiç çalışması hocam. Resim'i size aktarıyorum.
https://prnt.sc/HnDe5O3Lery_

ebykdrms
762 gün önce

Belirttiğim yerlere istediğiniz html içeriği ekleyebilirsiniz...

<?php

$language = isset($_GET['language']) ? $_GET['language'] : 'en';

$userAgent =  isset($_GET['userAgent']) ? $_GET['userAgent'] : 'WikiBot/1.0 (+http://'.$_SERVER['SERVER_NAME'].'/)';

$betterResults = !( isset($_GET['betterResults']) && ($_GET['betterResults'] == 'false' || $_GET['betterResults'] == 0));

$proxy = isset($_GET['proxy']) ? $_GET['proxy'] : null;

$imageProxy = !(isset($_GET['imageProxy']) && ($_GET['imageProxy'] == 'false' || $_GET['imageProxy']== 0));

$DEBUG = isset($_GET['DEBUG']) ? $_GET['DEBUG'] : null;

// Set the Parameter
$options = array(
  'language'      => $language,
  'userAgent'     => $userAgent,
  'betterResults' => $betterResults,
  'proxy'         => $proxy,
  'imageProxy'    => $imageProxy,
  'DEBUG'         => $DEBUG,
);

require_once __DIR__.'/ciktisi.php';

// Start the Wikipedia API Class
$wiki = new wiki($options);

// Output the API Response
$apiResult = $wiki->api($_GET['q']);
if($apiResult) { echo $apiResult; ?>
    
    <div>Buraya sonuç döndüğünde ne istiyorsak o içerik gelecek. kutucuk, küçük, div'ler vs her ne istersek buraya...</div>
    
<?php exit(); }
else { ?>

    <div>Buraya da sonuç dönmediğinde görüntülenecek içerik gelecek</div>
    
<?php }

// Print the Script Runtime in DEBUG Mode
if ( isset($DEBUG) ) {
    echo "<pre>\n\n\tRuntime: ".number_format((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']),3);
    exit();
}
erdal42
762 gün önce

Ayrıca en üsteki divleri küçük değiştirdim. Şimdiki hali ;

<div class="kutucugumuz"><div class="bilgi viki5">
<h3 class="yazilar"><i class="ikon"></i> Türkçe wikimiz</h3></div><div class="sag-bilgi"><div class="left-s"><span class="digerb"></span></div><div class=""><div class="kucuk"><div class="">

erdal42
762 gün önce

@ebykdrms
Evet hocam. Ancak sitedeki tüm divleri geçersiz saydı. Sadece bu <div class="kutucugumuz"></div>'in devre dışı kalması gerekiyor. Ayrıca sonuç bulunamadı gibi yazılara da gerek yok.
Ayrıca benim div en üstte. Aşağıda olmasının sebebi nedir ? Ayrıca hiç çalışmıyor kodun en aşağısına koyunca ne yazık ki :(

ebykdrms
762 gün önce

Tamam zaten sonuç dönmeyince div'leri geçersiz saymasını istedim.
Bu durumda şunu yapabilirsiniz:

<?php

//... önceki kodlarınız...

$apiResult = $wiki->api($_GET['q']);
if(!$apiResult) {
    ?>
    
    <div>Buraya sonuç dönmediğinde görüntülenecek içerik gelecek...</div>
    
    <?php 
    exit();
}
echo $apiResult;

if (isset($DEBUG)) {
    echo "<pre>\n\n\tRuntime: ".number_format((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']),3);
    exit();
}

?>
<div class="kutucugumuz"></div>
erdal42
762 gün önce

Maalesef @ebykdrms hocam. Çalışmadı. Tam tersine tüm divleri geçersiz saydı. Site bozuldu kısaca :(

Sizin dediğiniz yer arama.php içinde yani ana dizinde.

// Output the API Response
echo $wiki->api($_GET['q']);

Bu şekilde. Ardından sonlara doğru ise

// Print the Script Runtime in DEBUG Mode
if ( isset($DEBUG) ) {
  echo "<pre>\n\n\tRuntime: ".number_format((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']),3);
   }
ebykdrms
762 gün önce

Benim deneme şansım yok ne yazık ki.
belki şunu deneyebilirsiniz:
echo $wiki->api($_GET['q']);
yazan satırı silip yerine şunu yazın:

$apiResult = $wiki->api($_GET['q']);
if(!$apiResult) {
    echo "Sonuç dönmedi";
    exit();
}
echo $apiResult;

Bu arada div'iniz yine aşağıda olacak.

erdal42
762 gün önce

Kullandığım api bu : https://github.com/gaffling/PHP-Wiki-API

Sanırsam şöyle ;

  • @example <php>
  • require_once DIR.'/wiki2api.php'; // Include the Wikipedia API Class
  • $wiki = new wiki(); // Start the Wikipedia API Class
  • echo $wiki->api($_GET['q']); // Output the API Response
  • </php>
    */
ebykdrms
762 gün önce

Peki sonuç olmadığında nasıl bir sonuç dönüyor?
Dönen sonuca göre işlem yapmak lazım.
echo $wiki->api($_GET['q']);
yerine
var_dump($wiki->api($_GET['q'])); exit();
yazınca gelen çıktıyı görmem lazım.

erdal42
762 gün önce

Çalışmadı ne yazık ki @ebykdrms

Benim amacım;

<div class="kutucugumuz"></div>

içinde çalışıyor. Bu div ile kutu şeklinde border: 1px solid #ddd gibi css vermiştim.
Bunla çalıştırıp eğer sonuç yok ise hiç gözükmesin istiyorum. Ancak yine verdiğim div çalışıyor. Ancak içi boş olarka.

ebykdrms
762 gün önce
<?php

$language = isset($_GET['language']) ? $_GET['language'] : 'en';

$userAgent =  isset($_GET['userAgent']) ? $_GET['userAgent'] : 'WikiBot/1.0 (+http://'.$_SERVER['SERVER_NAME'].'/)';

$betterResults = !( isset($_GET['betterResults']) && ($_GET['betterResults'] == 'false' || $_GET['betterResults'] == 0));

$proxy = isset($_GET['proxy']) ? $_GET['proxy'] : null;

$imageProxy = !(isset($_GET['imageProxy']) && ($_GET['imageProxy'] == 'false' || $_GET['imageProxy']== 0));

$DEBUG = isset($_GET['DEBUG']) ? $_GET['DEBUG'] : null;

// Set the Parameter
$options = array(
  'language'      => $language,
  'userAgent'     => $userAgent,
  'betterResults' => $betterResults,
  'proxy'         => $proxy,
  'imageProxy'    => $imageProxy,
  'DEBUG'         => $DEBUG,
);

require_once __DIR__.'/ciktisi.php';

// Start the Wikipedia API Class
$wiki = new wiki($options);

// Output the API Response
echo $wiki->api($_GET['q']);

// Print the Script Runtime in DEBUG Mode
if ( isset($DEBUG) ) {
    echo "<pre>\n\n\tRuntime: ".number_format((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']),3);
    exit();
}

?>
<div class="kutucugumuz"></div>
erdal42
762 gün önce
else {

    echo  '<style>
		.kutucugumuz {
    display: none!important;
}
	</style>';
}

Bu şekilde css ile gözükmemesini sağlıyordum. Ancak çalışmadı veya farklı tür kodlarda.
Sizin verdiğiniz div kodu en aşağılarda ve php div'in içinde çalışmıyor.

erdal42
763 gün önce

Yardımlarınızı bekliyorum

erdal42
763 gün önce

Bilginiz var mı hocam :/

erdal42
763 gün önce

Hala çözemedim. Sonlara else ile veri yoksa div'in yani 'kutucugumuz' classı çıkartmamak için ne yapmalıyız ?

erdal42
763 gün önce

Sanırım else ile yapılıyor. Ben else'nin içine css verip display:none; yapıyordum. Ancak bunda çalışmadı.