بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل در قسمت آپدیت پروژه Note (حل شد)

مدیریت گفتگو
هادی بی غم 11 سال پیش
آخرین تغییر: 11 سال پیش

با سلام خدمت دوستان و استاد گرامی

پروژه Note که من نوشتم تا قسمت ReadData و SendData داشت درست اجرا میشد اما به قسمت updateData که رسیدم روی دیتابیس اطلاعاتی که می فرستم آپدیت نمیشه برنامه بدون خطا میاد بالا حتی خطاهای نارنجی رنگ هم نمیده به نظرم مشکل از سمت php باشه من ورژن جدید wamp  دارم کدهای php استاد روش جواب نمیده از مثالهای داخل سایت w3school استفاده کردم تا اینجا ، خواهشا منو راهنمایی کنید مشکل کارم چی هست .

این کد قسمت  ActivityEdit  و پایینش کد قسمت service.php

 package hadi.rock.apps.notes;

import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;


public class ActivityEdit extends ActivityEnhanced {

    @Override
    protected void onResume() {
        G.currentActivity = this;
        super.onResume();
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit);
        final EditText edtTitle = (EditText) findViewById(R.id.edtTitle);
        final EditText edtDescription = (EditText) findViewById(R.id.edtDescription);
        final CheckBox chkDone = (CheckBox) findViewById(R.id.chkDone);
        Button btnOk = (Button) findViewById(R.id.btnOk);

        Bundle extras = getIntent().getExtras();
        int position = 0;
        if (extras != null) {
            position = extras.getInt("POSITION");
        }
        final StructTask note = G.tasks.get(position);
        edtTitle.setText(note.title);
        edtDescription.setText(note.desc);
        chkDone.setChecked(note.done);

        btnOk.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                note.title = edtTitle.getText().toString();
                note.desc = edtDescription.getText().toString();
                note.done = chkDone.isChecked();

                ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("id", "" + note.id));
                params.add(new BasicNameValuePair("title", note.title));
                params.add(new BasicNameValuePair("desc", note.desc));
                params.add(new BasicNameValuePair("done", "" + (note.done ? 1 : 0)));

                Commands.updateData(params);
                finish();
            }
        });
    }
}

 

<?php
if (isset($_REQUEST['action'])){
$action = $_REQUEST['action'];
}else {
    echo "Invalid Data";
    exit;
}

if ($action=="read"){
    readData();
} elseif ($action=="insert"){
    sendData();
}elseif($action=="update"){
    updateData();
}

function conectToDatabase(){
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "note_db";

    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }



    return $conn;
}
function readData(){
    $conn = conectToDatabase();
    $sql = "SELECT * FROM tasks";
    $result = $conn->query($sql);
    $output = array();
    while($row= $result->fetch_assoc())
    {
        $record=array();
        $record['Task_id']=$row['Task_id'];
        $record['Task_title']=$row['Task_title'];
        $record['Task_desc']=$row['Task_desc'];
        $record['Task_done']=$row['Task_done'];
        $output[]=$record;
    }
    echo json_encode($output);
//print_r($output);
}
function sendData(){
    $conn = conectToDatabase();

    $title = $_REQUEST["title"];
    $desc = $_REQUEST["desc"];
    $sql = "INSERT INTO tasks VALUES ( 0 ,'$title','$desc',0)";
    $result = $conn->query($sql);

    $conn->close();
}
function updateData(){
    $conn = conectToDatabase();

    $id = $_REQUEST["id"];
    $title = $_REQUEST["title"];
    $desc = $_REQUEST["desc"];
    $done = $_REQUEST["done"];
    $sql = "UPDATE tasks SET Task_done=' . $done . ' . Task_title='" . $title . "' . Task_desc='" . $desc . "' WHERE Task_id=" . $id ;
    $result = $conn->query($sql);

    $conn->close();

}

نظرات

h_uk2009 11 سال پیش
خوب عزیز من شما با همون ومپ استاد فعلا تست کن ... شما که میدونی چقدر اینم برنامه ها حساسه یک کد جواب نده بالا نمیاد به نظر من اول کد استاد رو بزن تستش کن به این میگن مدلینک یعنی اول تست کن ببین دسنورات درست کار میکنه بعد و..الان اینجا صد نفر دیکه هم بیان نمیتونن نظر بدن در مورد این همه کد !
هادی بی غم 11 سال پیش
فعلا دارم همین کارو می کنم ولی جالبشین اینجاست که همون کدهایی که روی اون مینوشتم داره واسه ورژن wamp استاد هم نتیجه میده اما هنوز آپدیت نمی کنه
kmelodi 11 سال پیش
آقا منم مشکلم همینه ولی از نرم افزار های استاد استفاده میکنم هیچ خطایی ندارم ولی اطلاعات آپدیت نمیشه منظورتون از نامگذاری table چیه؟؟؟؟؟؟؟؟ الان چیکار کنم؟
Criss 11 سال پیش
از من مشکلی توی اسم گذاری table نیست کاملا درسته درسته = task

پاسخ‌ها 7

مشاهده پاسخ صحیح
kmelodi 11 سال پیش

سلام:

بنظرم تعریف آپدیت کردنتون اشتباه بوده ، که خودمم دو روز توی همین گیر کرده بودم که مشکلش یه دونه ( , ) بود

این طور بنویسین فکر میکنم درست بشه:

mysqli_query($connection, "UPDATE task SET task_done=$done, task_title='$title', task_desc='$desc' WHERE task_id=$id");

نظرات

Criss 11 سال پیش

سلام دوستان من هم دقیقا همین مشکل رو برای اپدیت کردن دارم که مقادیر روی سرور اپدیت نمیشه <

حتی params رو توی لاگ درست نشون میده

میخواستم این رو دیباگ کنم برای همین میخاستم

بپرسم چطوری باید دستی لینک رو وارد کنیم و تست کنیم ؟

من برای تست لینک زیر رو دستی میزنم باز هم جواب نمیگیرم !

 http://localhost/note-server/service.php?action=update,title=1,desc=2,done=1,id=1

 

 if (isset($_REQUEST['action'])){
$action = $_REQUEST['action'];
}else {
echo "Invalid Data !";
exit;
}
if ($action == "read"){
read();
} else if ($action == "insert"){
insert();
} else if ($action == "update"){
update();
}

function update(){
$connection = ConnectToDataBase();
$id = $_REQUEST['id'];
$title = $_REQUEST['title'];
$desc = $_REQUEST['desc'];
$done = $_REQUEST['done'];
$result = mysqli_query($connection, "UPDATE task SET task_done=" . $done . ", task_title='" . $title . "', task_desc='" . $desc . "' WHERE task_id=" . $id);
mysqli_close($connection);
}

نظرات

Criss 11 سال پیش

مشکل حل شد <

رفتم از بچه های اشیانه پرسیدم < جواب رو اینجا میزارم در آینده بچه های دیگه استفاده کنند

این قسمت از کد به شکل زیر اصلاح شد

 mysqli_query($connection, "UPDATE task SET task_done='$done', task_title='$title', task_desc='$desc' WHERE task_id='$id'");

 

نظرات

125025 11 سال پیش

منم همین مشکل رو دارم باید چیکار کنم کد php:

 function UpdateData()
{
$connection = connectToDatabase();
if(isset($_REQUEST['title'])&&isset($_REQUEST['desc'])&&isset($_REQUEST['desc'])){
$id = $_REQUEST['id'];
$title = $_REQUEST['title'];
$desc = $_REQUEST['desc'];
$done = $_REQUEST['done'];
mysqli_query($connection, "UPDATE task SET task_done=$done, task_title='$title', task_desc='$desc' WHERE task_id='$id'");
}

mysqli_close($connection);
}
 

نظرات

125025 11 سال پیش
مثل کد کریس هم که نوشتم باز کار نکرد..
هادی بی غم 11 سال پیش
شما چک کنید ببینید اسم table که اینجا داخل کد دادین با اسم table که داخل wamp ساختین یکی هست یا نه واسه من مشکل همین بود چون حساس به حروف بزرگ و کوچیکه خیلی باید دقت کرد
Criss 11 سال پیش

نظرات

Criss 11 سال پیش
چرا پست رو ویرایش میکنم ! همه اش پاک میشه !
Criss 11 سال پیش

من دوباره باز همین مشکل رو با اپدیت کردن دارم !!! البته این بار خیلی عجیب تر !!

کد PHP کاملا صحیح هست < و وقتی لینک رو دستی وارد میکنم ، کاملا صحیح کار میکنه <

 http://android.ir/App/Jam/update.php?text=txtupdate&done=0&id=21

 لینک بالا برای کد زیر کاملا صحیح کار میکنه

function update(){
 
    $connection = ConnectToDataBase();
    date_default_timezone_set("Asia/Tehran"); 
 
    $text= $_REQUEST['text'];
    $id= $_REQUEST['id'];
    $date = date("Y-m-d");
    $time = date("H:i:s");
    $done= $_REQUEST['done'];
    $result = mysqli_query($connection, "UPDATE msg SET msg_done=$done, msg_text='$text' WHERE msg_id=$id");
    mysqli_close($connection);
}

پس با این حساب از سمت اندروید مشکل دارم < متد مربوط به Update :

 private void updatedata(ArrayList params) {
        Log.i("PARAMS", "" + params);
        WebService.readUrl("http://android.ir/App/Jam/update.php", params);
        //WebService.readUrl("http://android.ir/App/Jam/insert.php", params);
    }

 

با همین متد Insert میکنم < اما Update نمیتونم !!! حتی همین URL بالا رو کپی میکنم < توی مرورگر و Params رو دستی بهش میدم درست کار میکنه :| !  

 

}

نظرات

Criss 11 سال پیش

 پاسخ صحیح

خب دوستانی که مثل من این چنین مشکلی رو دارند کافیه برای آپدیت دیتابیس از متد Gey استافاده کنند ! (روش کاملا اصولی نیست ولی موقتی کار رو راه میندازه)

   HttpGet method = new HttpGet(url.replace(" ", "%20"));

مشکلاتی که ممکنه همیشه بوجود بیاد و باید دقت کرد < نحوه ارسال و دریافت دیتا هست که بصورت Post داره صورت میگیره یا بصورت Get

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .