2016-10-20 14 views
5

Veritabanından eklemek ve almak için bootstrap WYSIWYG formu ile ilgili bir cms projesinde çalışıyorum. Ekleme kodu düzgün çalışır ve geri alma kodu da iyi çalışır, ancak bir makaleyi düzenlemek istediğimde çalışmaz. <a href='index.php?page=edit&id=".$row['id']."'><span data-placement='top' data-toggle='tooltip' title='Edit'><button class='btn btn-primary btn-xs' data-title='Edit' ><span class='glyphicon glyphicon-pencil'></span></button><span></a> olan düzenle bağlantısını tıkladığımda, beni düzenleme sayfama yönlendirir. Benim edit.php sayfada ben, bu Bootstrap tabanlı WYSIWYG herhangi yankı vermez sadece iyi çalışır ben kendi formu türü içine değerini yankı zaman iyiphp kullanarak mysql veritabanından veri alma, düzenleme için bir WYSIWYG formunda görüntüleme

<?php 
include("dbconnect.php"); 

if(isset($_GET['id'])) 

$id = strip_tags($_GET['id']); 
$sql = "SELECT * FROM berita WHERE id=$id" ; 
$result = mysqli_query($conn, $sql); 
while ($row = mysqli_fetch_assoc($result)) 
{ 
    $image= $row['gambar']; 
    $title = $row['judul']; 
    $description = ($row['konten']); 
    $time = $row['tanggal']; 
} 
?> 

çalışıyor veritabanından seçmek için bu kodu var değer, ancak normal textarea olarak değiştirirseniz, iyi çalışır. İşte benim kodum.php sayfasında

<?php 
include("dbconnect.php"); 


if(isset($_GET['id']))  
    $id = strip_tags($_GET['id']); 

$sql = "SELECT * FROM berita WHERE id=$id"; 
$result = mysqli_query($conn, $sql); 
while ($row = mysqli_fetch_assoc($result))  
{ 
    $image= $row['gambar']; 
    $title = $row['judul']; 
    $description = ($row['konten']); 
    $time = $row['tanggal']; 
} 
?> 
<link href="plugins/WYSIWYG/editor.css" type="text/css" rel="stylesheet"/> 
<script src="plugins/WYSIWYG/editor.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#txtEditor").Editor(); 
    }); 
</script> 

<form name="my_form" action="action.php" method="POST" enctype="multipart/form-data"> 
    <div class="form-group"> 
     <label for="exampleInputEmail1">Date</label> 
     <input type="text" class="form-control" id="time" name="time" value="<?php echo date('d-m-Y'); ?>" disabled> 
      <small id="emailHelp" class="form-text text-muted"></small> 
    </div> 
    <div class="form-group"> 
     <label>Article Title</label> 
     <input type="text" class="form-control" id="title" name="title" value="<?php echo $title; ?>" placeholder="title" required /> 
    </div> 
    <div class="form-group"> 
     <label >select categories</label> 
     <select class="form-control" id="cat" name="cat"> 
      <option value="World">World</option> 
      <option value="Sport">Sport</option> 
      <option value="Politics">Politics</option> 
      <option value="Business">Business</option> 
      <option value="Technology">Technology</option> 
      <option value="Entertainment">Entertainment</option> 
      <option value="Fashion">Fashion</option> 
      <option value="Gist">Gist</option> </select> 
    </div> 

    <div class="form-group"> 
     <label>Write Article </label> 
     <textarea class="form-control" id="txtEditor" name="txtEditor"><?php echo htmlspecialchars($description) ;?></textarea> 
    </div> 
    <div class="form-group"> 
     <label for="exampleInputFile">upload image</label> 
     <input type="file" accept="image/*" name="myimage" id="myimage" class="form-control-file" id="exampleInputFile" aria-describedby="fileHelp"> 
      <small id="fileHelp" class="form-text text-muted"></small> 

    </div> 

    <button onclick=" $('#txtEditor').val($('.Editor-editor').html());" type="Publish" id="Publish" name="Publish" class="btn btn-primary">Publish</button> 
</form> 

Herhangi bir yardım lütfen?

+2

SQL enjeksiyonları etiketlerle yapılmadığından 'strip_tags' yardımcı olmaz. Parametreli sorgular kullanmalısınız. WYSIWYG'ye çıktı almaya çalışırken konsol hataları var mı? – chris85

+0

onlar hangi wysiwyg eklentisi kullanıyorsunuz – Dero3376

+0

hata değil? –

cevap

1

kod çözme yapacağız echo: p Burada bir javascript demo yaptı: https://jsfiddle.net/x14vdkk0/1/

Eğer kök neden olduğunu değeri yapamıyorsanız katları satırları. Gerçekten de böyle bir şey yapın:

$(document).ready(function() { 
    $('#txtEditor').Editor(); 
    $('#txtEditor').Editor('setText', 'My text with <strong>LineControl</strong> :) 
    second line !'); // SECOND LINE IN ERROR ! 
}); 

Sen javascript bu tanımadığından bölüm second line hatalı olduğuna bakın (console.log) olabilir.

enter image description here

Çözüm: veri tabanından tüm satırbaşı

kaçmak

Bu tür ve javascriptize tüm konularda sizi koruyacağını güzel işlevi json_encode var değişkeni

$(document).ready(function() { 
    $('#txtEditor').Editor(); 
    $('#txtEditor').Editor('setText', <?php echo json_encode($description); ?>); 
}); 

Ben php fonksiyon etrafında tırnak unutulmuş din't. Niye ya ? json_encode işlevi, metninize alıntılar ekleyeceği için. Bir json_encode('toto') çıktı alırsanız, "toto"; Bir json_encode([key' => 'toto']) çıkış olacaktır yaparsanız {"key":"toto"} var

tüm :)

Başka bir çözüm:

$(document).ready(function() { 
    $el = '#txtEditor'; 
    $($el).Editor(); 
    $($el).Editor('setText', $($el).val()); 
}); 
: textarea için

, htmlspecialchars($description)

<textarea id="txtEditor"> 
    My text with: 
    &lt;strong&gt;LineControl !&lt;/strong&gt; 
</textarea> 

ve kullanımı

+0

teşekkürler bu fonksiyon json_encode bunu düzeltmek, ama ph ($) ("# txtEditor") olması gerekir, senin teklifini kaçırdın. Editor ("setText", "") ;. başparmak havaya. – Dero3376

+0

HI :) Hum ... garip. json_encode, cevapsız teklifleri otomatik olarak ekleyecektir. Eğer bir ' 'çıktı" toto "olacaktır; Eğer bir “ 'toto']) yaparsanız; ?> 'çıktı" {"key": "toto"} 'olacaktır. –

1

WISIWYG için önyükleme sırasında hangi eklentiyi kullandığınızı biliyorsanız bu daha kolay olurdu. Kodunuzdaki itibaren, ben size bir ayarlayıcı kullanarak değeri yerleştirmek gerekir bu durumda https://github.com/suyati/line-control

olduğunu düşündüm, bu yüzden için bildirim kodu yeniden yazmak gerekir:

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#txtEditor").Editor(); 
    $("#txtEditor").Editor("setText", "<?php echo htmlspecialchars($description) ;?>"); 
}); 
</script> 

Ve php yankı kaldırmak textarea öğesinden

'Yayınla' düğmesiyle neyi başarmaya çalıştığınızı anlayamıyorum, göründüğü gibi editördeki içeriği değiştirmek istediğinizde.

textarea dışarı

+0

çok teşekkürler ama hala sorunumu çözmedim – Dero3376

+0

Bu satırı htmlspecialchars yerine kullan: - $ ('# txtEditor') Editor ("setText", ""); – Senthil

+0

@ Dero3376 kodu düzeltildi. Muhtemelen eklenti, – Bolovsky

0

deneyin yankılanan açıklamasına yardımcı olur Umut ve onun bir şey görüntülemeden olmadığını kontrol ... Bu değeri değiştirmek, ancak görünmez ve formu göndermek olmaz. Eğer değilse, değişkeninizde hiçbir değer elde edemezsiniz.

1
$(document).ready(function(){   
     <?php 
     if($description){ 
     ?> 
      $('#txtEditor').Editor("setText", "<?php echo addslashes($description);?>"); 
     <?php 
     } 
     ?> 
    }); 

Ref: Sonunda ben bir işte burada sorunları yapmaz bulduğumuz bazı diğer eklenti ile bu sorun karşısında ne https://github.com/suyati/line-control/issues/34

0

: script

burada
<script src="//cdn.ckeditor.com/4.5.11/standard/ckeditor.js"></script> 

ve benim bölümüm yüklemek ve veritabanına veri depolamak: veri depolamak

$features = htmlentities($_POST['features'],ENT_QUOTES); 

bir için yük verileri için d sadece fiş buldum

<textarea class="form-control" id="features" name="features"><?php echo $data['features']; ?></textarea> 
İlgili konular