Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Localde çalışan, sunucuda çalışmayan kod, nerde hata yapıyorum

Biliyorum çok dağınık ve karışık bi kod ama anca bu kadar yazabildim zaten çok basit bir işlemde kullanılacak.
Localde sorunsuz ekleme düzenleme silme işlemlerini yapıyor ama sunucuya attığımda ise Hata var mesajı alıyorum.

<?php ob_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Yönetim Paneli</title>
<link rel="stylesheet" type="text/css" href="demo.css" />

</head>

<body>
<?php include('baglan.php'); ?>
<div id="rounded">
<img src="img/top_bg.gif" alt="top" /><div id="main" class="container">    
    <ul id="navigation">
    <li><a href="index.php">Araç</a></li>
    <li><a href="fiyat.php">Fiyat</a></li>
    <li><a href="tarih.php">Tarih</a></li>
    <li><a href="ayarlar.php">Ayarlar</a></li>
    </ul>
    <div class="clear"></div>
    
<div id="pageContent">

<!--Actionlar burdan başlar -->
<?php 
if (isset($_GET['action'])) {
$_GET['action'] = $action;

if ($action =="ekle") {
$arac = $_GET['arac'];
$ozellik = $_GET['ozellik'];
$sorgu = "INSERT INTO arac (id, arac, ozellik) VALUES('', '$arac', '$ozellik')";
$sonuc = mysql_query($sorgu);
if(! $sonuc){
echo "!!Hata Oluştu!!";
}else
{header("Refresh: 0; url=index.php?sonuc=ok");}
}


else if ($action =="duzenle"){
$arac = $_GET['arac'];
$ozellik = $_GET['ozellik'];
$sorgu = "UPDATE arac SET arac='$arac', ozellik='$ozellik' WHERE id='$id'";
$sonuc = mysql_query($sorgu);
if(! $sonuc){
echo "!!Hata Oluştu!!";
}else
{header("Refresh: 0; url=index.php?sonuc=ok");}
}

else if ($action =="sil") {
$id = $_GET['id'];
$sorgu = "DELETE FROM arac WHERE id = '$id' ";
$sonuc = mysql_query($sorgu);
if(! $sonuc){
echo "!!Hata Oluştu!!";
}else
{header("Refresh: 0; url=index.php?sonuc=ok");}
}else{echo "hata var";}


}
else if (isset($_GET['islem'])) {
$_GET['islem'] = $islem;
if ($islem =="ekle") {
?>
<!--Araç ekle başla-->
	<form name="aracekle" action="index.php" method="get"> 	
	<input type="hidden" name="action" value="ekle" />
	<table border="0">
	<tr><td width="100"></td><td width="200"></td></tr>
	<tr>
		<td><b>araç</b></td>
		<td><input type="text" name="arac" size="66" /></td>
	</tr><br />
	<tr>
		<td><b>özellik</b></td>
		<td><textarea name="ozellik" rows="1" cols="50"></textarea></td>
	</tr>
	<tr>
		<td></td>
		<td><input type="submit" value="Kaydet" /></td>
	</tr>
	</table>
	</form>
<!--Araç ekle bit-->	
<?php
}

else if ($islem =="duzenle") {
$id = $_GET['id'];
$sorgu = "SELECT * FROM arac WHERE id='$id'";
$sonuc = mysql_query($sorgu);
$array = mysql_fetch_assoc($sonuc);

?>
<!--Araç duzenle başla-->	
	<form name="duzenle" action="index.php" method="get"> 	
	<input type="hidden" name="action" value="duzenle" />
	<input type="hidden" name="id" value="<?php echo $id; ?>" />
	<table border="0">
	<tr><td width="100"></td><td width="200"></td></tr>
	<tr>
		<td><b>araç</b></td>
		<td><input type="text" name="arac" size="66" value="<?php echo $array["arac"]; ?>" /></td>
	</tr><br />
	<tr>
		<td><b>özellik</b></td>
		<td><textarea name="ozellik" rows="1" cols="50"><?php echo $array["ozellik"]; ?></textarea></td>
	</tr>
	<tr>
		<td></td>
		<td><input type="submit" value="Kaydet" /></td>
	</tr>
	</table>
	</form>
<!--Araç düzenle bit-->	
<?php
}
else {echo "Hata var";}
} else { if($_GET['sonuc'] =="ok"){
?>
<!--işlem başarılı başla-->
<font color="green">!! İşlem Başarıyla Gerçekleştirildi !!</font><br /><br /><br />
<!--işlem başarılı bit-->	
<?php } 
?>
<a href="index.php?islem=ekle"><img src="img/add.gif" /> Araç Eklemek İçin Tıklayın</a><br />

<!--Araç listele basla-->	
<table class="liste">
	<tr>
		<td width="150"><b>araç</b></td>
		<td width="500"><b>özellik</b></td>
		<td width="40"><b>işlem</b></td>
	</tr><br />
	
<?php 
$sorgu =mysql_query("SELECT * FROM arac ORDER BY id");
while($array = mysql_fetch_array($sorgu)){	
	echo "<tr>";
	echo "<td>".$array['arac']."</td>";
	echo "<td>".$array['ozellik']."</td>";
	echo "<td><a href='index.php?islem=duzenle&id=".$array['id']."'><img src='img/edit.gif' /></a>  <a href='index.php?action=sil&id=".$array['id']."'><img src='img/del.gif'</a></td>";
	echo "</tr>";
}?>	</table>
	<!--Araç listele bit-->
<?php } ?>	


</div>
    
    </div>
    <div class="clear"></div>
<img src="img/bottom_bg.gif" alt="bottom" /></div>

</body>
</html>
<?php mysql_close($baglanti); ?>
<?php ob_end_flush(); ?>
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • necmettin adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    80 cevap - 0 soru
    Altta kullanırken köşeli parantezlerden kurtulmak istiyorsan,
    if (isset($_GET['action'])) {$_GET['action'] = $action; }

    yerine
    if (isset($_GET['action'])) {$action = $_GET['action']}

    kullanman gerekir. Aynı şeyi $islem icin de yapmissin. Yani $_GET['action']ı almıyorsun, üzerine yazıyorsun..
    Ayrıca, daha temiz bir eylem için $action ve $eylem diye iki ayrı kontrol mekanizman olmaMAsı gerekir.

Cevaplar

  • Kemal adlı üyenin fotoğrafı
    12 yıl önce yazılmış
    63 cevap - 10 soru
    $_GET['action']=$action; burada ne yapmak istediğini anlayamadım :S
    ekleme işlemlerini bu kadar basitleştirmeyin
    - GET ile aldığınız verileri mutlaka ve mutlaka zararlı kodlar olabilme ihtimali içn süzün
    if(isset($_GET['action'])){}
    

    yerine
    if($_GET['action']=='ekle' && isset($_GET['action'])){}
    

    şeklinde yaparsanız daha iyi olacaktır neden derseniz şuan sizin yaptıgınız şekilde
    action da ekle diye veri gelsede çalışacak action=abuzer diye veri gelsede kodlar çalışacak
    yani 2.bi if sorgulamasına gerek yok.
    insert into arac (id,arac,ozellik)values('','$arac','$ozellik');
    id sutunu auto_increment ise id sutununu hiç boş bırakmanıza gerek yok o zaman kendi bildiğini okuyacaktır.
    
    • heatclife adlı üyenin fotoğrafı heatclife
      İlk olarak bu bir admin panel olacağı için zararlı kod süzme gibi bişey düşünmedim komple klasörü şifrelemeyi planladım.

      $_GET['action']=$action;

      derken altta kullanırken köşeli parantezlerden kesme işaretinden falan kurtulayım diye yazdım evet saçma olmuş :)

      if($GET['action']=='ekle' && isset($GET['action'])){} 

      kullanımı evet daha pratik oluyormuş ama mantık olarak benim yazdığımla bir farkı yok ben önce action diye bi veri geliyormu ona bak eğer geliyorsa içeriği ekle ise şunu yap duzenle ise bunu yap gibi yazmaya çalışıp işi uzattım, haklısınız.

      Ancak bu kodda her ne kadar karmaşa olsada localde çalışıp sunucuda çalışmamasının farklı bir nedeni olması lazım. Yani versiyon farklılıklarından kaynaklanan bir algılama problemi diye tahmin ediyorum. Sürekli kod yazmadığımdan acemiliğimden göremedim, çok haşır neşir olan arkadaşlar görebilir belki,
      12 yıl önce yazılmış
    • necmettin adlı üyenin fotoğrafı necmettin
      Altta kullanırken köşeli parantezlerden kurtulmak istiyorsan,
      if (isset($_GET['action'])) {$_GET['action'] = $action; }

      yerine
      if (isset($_GET['action'])) {$action = $_GET['action']}

      kullanman gerekir. Aynı şeyi $islem icin de yapmissin. Yani $_GET['action']ı almıyorsun, üzerine yazıyorsun..
      Ayrıca, daha temiz bir eylem için $action ve $eylem diye iki ayrı kontrol mekanizman olmaMAsı gerekir.
      12 yıl önce yazılmış
    • heatclife adlı üyenin fotoğrafı heatclife
      Teşekkür ederim. Sorun değişkene atamak istediğim yerde yaptığım hatadan kaynaklanıyormuş.
      Doğru cevap olarak işaretleyebilmem için konuya cevap yazarsanız sevinirim.
      12 yıl önce yazılmış