• 15-12-2023, 02:31:58
    #1
    Bir checkbox yaptım ve her seçilen seçeneğide aynı tabloda farklı sütunlara ekliyorum. sorunsuz çalışıyor fakat benim sorunum değerleri tıklanma sırasına göre alması!!
    ekliyorum ama Alfabetik olarak alıyor. Örnek array = (F,C,A,B,E,D) ama verilen array (A,B,C,D,E,F)
    ben soruma bir yanıt buldum
    https://stackoverflow.com/questions/...election-order
    Burda verilen ajax kodlarını benim sisteme adapte ettiğimde istediğim sıralamayı görebiliyorum. Konsoldan görebiliyorum ama ajaxla almış olduğum sıralamayı php değişkenine atamıyorum ordanda veritabanına ekleyemedim bi türlü.
    Bilen arkadaşlardan haber bekliyorum.
    [CODE]
    <?php
    if($_SERVER["REQUEST_METHOD"] == "POST"){
    if(isset($_POST['data'])){
    if($_POST)
    {
    $subjects = implode(',', $_POST['data']);
    $subjectsx = explode(',', $subjects);
    echo $subjectsx[0].$subjectsx[1].$subjectsx[2]."<br />";
    $ekle = mysql_query("UPDATE yorum SET kategori = '$subjectsx[0]', kategori1 = '$subjectsx[1]', kategori2 = '$subjectsx[2]', kategori3 = '$subjectsx[3]', kategori4 = '$subjectsx[4]' Where id ='$sid'");
    }
    }
    }
    ?>
    <form id="myForm" method="POST"><tr>
    <td class="de_control" colspan="3">
    <div class="de_insight_list">
    <input type="button" class="all" value="All categories...">
    </div>
    </div>
    </td>
    </tr><table class="control_group">
    <colgroup>
    <col width="25%">
    <col width="25%">
    <col width="25%">
    <col width="25%">
    </colgroup>
    <tbody>
    <?php
    $say = -1;
    $qry = "SELECT * FROM kat order by title";
    $execute = mysql_query($qry) or die(mysql_error());
    while($row = mysql_fetch_array($execute)){
    $say++;
    if($say%3==0){ ?>
    <tr class="group_data">
    <? } ?>
    <td><div class="de_lv_pair wrap"><label style="cursor: pointer;" for="check-<?=$say;?>"><?=$row["title"];?></label><input type="checkbox" class="messageCheckbox" value="<?=$row["tr"];?>" name="mycheck[<?=$row["id"];?>]" alt="<?=$row["tr"];?>"></div></td><?php } ?>
    <input type="submit" id="submitBtn">
    </form>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>
    var list = new Array();
    $('input').on("change", function(e) {
    let boxval = $(this).val();
    if ($(this).is(':checked')) {
    list.push(boxval);
    }
    else {
    list = $.grep(list, function(item) {
    return boxval !== item;
    });
    }
    console.log(list);
    })
    </script>
  • 15-12-2023, 02:39:14
    #2
    MySQLi kullanarak tavsiye ederim bu şekilde dener misiniz;

    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";
    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (isset($_POST['data'])) {
            $subjectsx = $_POST['data'];
            $sid = isset($_POST['sid']) ? $conn->real_escape_string($_POST['sid']) : 0;
            $placeholders = array_fill(0, count($subjectsx), '?');
            $types = str_repeat('s', count($subjectsx));
            $query = "UPDATE yorum SET ";
            foreach ($subjectsx as $index => $value) {
                $query .= "kategori" . $index . " = ?, ";
            }
            $query = rtrim($query, ", ") . " WHERE id = ?";
            $types .= 'i';
    
            $stmt = $conn->prepare($query);
            $stmt->bind_param($types, ...$subjectsx, $sid);
            $stmt->execute();
            $stmt->close();
        }
    }
    $conn->close();
  • 15-12-2023, 02:50:15
    #3
    ilginiz için tşk ediyorum Ekledim ama şöyle bir hata verdi bind_param kısmından dolayı sanırım
    Fatal error: Cannot use positional argument after argument unpacking in on line 28

    Birde kategori kısmı kategori1 den kategori5 e kadar olacak bu mysql kulllanımına fazla alışık değilim malesef
    Pardon kodda verdiğiniz kodda bind_param kısmında .... kısmı varmış onu kaldırınca düzeldi.
    Bu seferde
    $qry = "SELECT * FROM kat order by title";
    $execute = mysql_query($qry) or die(mysql_error());
    while($row = mysql_fetch_array($execute)){
    bu kısmı hata görüyor sanırım php 5 oldugu için
    mysql_query ve mysql_fetch_array tanımıyor
  • 15-12-2023, 03:17:24
    #4
    PHP 5 kullanıyorsunuz sanırım 7.0 veya üzeri php sürüm yapıp dener misiniz?
  • 15-12-2023, 03:22:30
    #5
    Bunu yapamam çünkü tüm sistem php 5 te çalışacak şekilde php7 e uyarlamam lazım anca. O sistemede yabancı olduğum için bunu kullanıyorum. Normal mysqli Select ile kategorileri sıralama kodu ile çözülür sanırım
  • 16-12-2023, 00:42:58
    #6
    Bahsettiğim hataları düzelttim. Kategoriler ve checkboxlar çalışıyor Yalnız seçim yapıp veritabanına eklemek istediğimde Update komutunun olduğu satır hata mesajı veriyor.
    Fatal error: Call to a member function bind_param() on boolean in online 25

     $query = "UPDATE yorum SET ";
            foreach ($subjectsx as $index => $value) {
                $query .= "kategori" . $index . " = ?, ";
            }
            $query = rtrim($query, ", ") . " WHERE id = ?";
            $types .= 'i';
    
    // Ayrıca eski kodda 4 kategoriye eklenecek şekilde yapmıştım. kategori1 ,kategori2,kategori3,kategori4 
    $ekle = mysql_query("UPDATE yorum SET kategori = '$subjectsx[0]', kategori1 = '$subjectsx[1]', kategori2 = '$subjectsx[2]', kategori3 = '$subjectsx[3]', kategori4 = '$subjectsx[4]' Where id ='$sid'");
    $sid bunu get ile alıyorum zaten onda sorun yok Yardımcı olursanız çok sevinirim