Các bác giúp giùm e cái code cwarl này với :(

Discussion in 'Thảo Luận Chung' started by Sì Ke, Oct 13, 2017.

  1. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Up hộ chủ thớt nguyên bộ code file craw kênh 14. Ae rảnh vào xem bị lỗi gì nhé
     

    Attached Files:

  2. Stone Vo

    Stone Vo Khách Qua Đường

    Ủa mình chạy insert db ngon lành mà nhỉ. Có điều phải làm vài cái như sau.
    1. Trong file zip ứ có demo.txt nên nó bị lỗi. Mình tạo đại cái url http://kenh14.vn/hoi-8-me-bim-sua-h...ang-chanh-khong-ai-bang-20171024130838648.chn bỏ vào cái file demo.txt
    2. Do ứ có db nên phải tạo đại cái bảng listal có 4 fields: id, title, contents, image
    3. Do ko biết mẫu link trong #1 thế nào nên nếu theo cái link như vậy thì phải đổi lại class để lấy title, description.
    4. Việc dùng cái file_get_contents với CURL chắc là để pass check user agent nhỉ
    Nếu đc thì chủ thớt vứt cái link trong #1 ra đây. Rồi mình lại vứt lại cái source sau khi update nhỉ :)
     
  3. Sì Ke

    Sì Ke Sơ Nhập Giang Hồ

    e ib bác nhé, thế ứ nào mà e insert database nó ko báo lỗi mà cũng ko nhận dữ liệu lun {too_sad}
     
  4. Stone Vo

    Stone Vo Khách Qua Đường

    hi @Sì Ke . Mình tính gửi lại nhưng chỉ cần fix một chỗ nên gửi ở đây thôi.

    Vấn đề: Có ký tự đặc biệt trong phần nội dung nên mysql không insert được.
    Giải quyết: Dùng hàm mysql_real_escape_string của php thôi. Nên:

    Code:
    "INSERT INTO listal (title, contents, image) VALUES ('$atitle', '$content', '$img')"
    Thành
    "INSERT INTO listal (title, contents, image) VALUES ('$atitle', '".mysql_real_escape_string($content)."', '$img')"
    
    Vài gợi ý nho nhỏ:
    1. Hiện tại cái title h1 trả về luôn cả thẻ h1 -> chỉ nên lấy text thôi -> $div->find(".reviewtitle h1", 0)->plaintext
    2. Hiện tại image cũng lấy luôn cả cái thẻ. Chỉ nên lấy link image thôi -> $div->find("img[class='image reviewmainimage']", 0)->src
    3. Để debug cái lỗi insert vào mysql thì dùng format dạng này:
      Code:
      $query ="INSERT INTO xxx VALUES (NULL, 5, 'xxx')";
      echo "<pre>Debug: $query</pre>\m";
      $result = mysqli_query($con, $query);
      if(false===$result ){
          printf("error: %s\n", mysqli_error($con));
      }
      else{
          echo 'done.';
      }
     
  5. Sì Ke

    Sì Ke Sơ Nhập Giang Hồ

    e có thay đổi dòng lệnh:
    "INSERT INTO listal (title, contents, image) VALUES ('$atitle', '".mysql_real_escape_string($content)."', '$img')"
    thì nó báo lỗi như này ạ :
    Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in C:\xampp\htdocs\laytin\kenh14 (1).php:37 Stack trace: #0 {main} thrown in C:\xampp\htdocs\laytin\kenh14 (1).php on line 37

    E chưa chuyên về php lắm nên mong bác giúp giùm e, e cảm ơn {adore}{adore}
     
  6. Stone Vo

    Stone Vo Khách Qua Đường

    Vậy thì dùng thằng khác : mysqli_real_escape_string
     
  7. Sì Ke

    Sì Ke Sơ Nhập Giang Hồ

    e quên chữ mysqli ^^

    Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\laytin\kenh14 (1).php on line 37

    lại bị như này ạ :(
     
  8. Stone Vo

    Stone Vo Khách Qua Đường

    Sửa cái này nó tòi ra cái khác sao =))

    Bỏ đoạn này phía trên câu query
    Code:
    $content = mysqli_real_escape_string($conn, $content);
    sau đó để câu query INSERT lại như cũ.

    p/s: mà post như này mới thấy @Sì Ke phải luyện nhiều nhé.
     
  9. Sì Ke

    Sì Ke Sơ Nhập Giang Hồ

    E đã sửa đc lỗi đó, nhưng nó cũng ko insert database {beat_shot}
     
  10. Stone Vo

    Stone Vo Khách Qua Đường

    Có bỏ đoạn này vào chưa. Mục đích đoạn này là để đưa ra lỗi khi không insert đc. Xong rồi copy cái lỗi vứt lên =))
    Code:
    $query ="INSERT INTO xxx VALUES (NULL, 5, 'xxx')";
    echo "<pre>Debug: $query</pre>\m";
    $result = mysqli_query($con, $query);
    if(false===$result ){
    printf("error: %s\n", mysqli_error($conn));
    }
    else{
    echo 'done.';
    }
    
    Đổi bằng cách
    Code:
    $sql = mysqli_query($conn, "INSERT INTO listal (id, title, contents, image) VALUES ('', '$atitle', '$content', '$img')");
    Thành:
    Code:
    echo "<pre>Debug</pre>\m";
    $result = mysqli_query($conn, "INSERT INTO listal (id, title, contents, image) VALUES ('', '$atitle', '$content', '$img')");
    if(false===$result ){
    printf("error: %s\n", mysqli_error($conn));
    }
    else{
    echo 'done.';
    }
    
    p/s: Vì đâu nên nỗi phải dắt tay từng bước thế này {cry}
     
    Last edited: Oct 25, 2017
  11. Sì Ke

    Sì Ke Sơ Nhập Giang Hồ

    Kiểu như e mò từ từ cũng đc ạ, nhưng hôm h mò nhìu hơi nản, nên có bác hỏi từng chút lun, bác thông cảm {surrender}{surrender}
     
  12. Stone Vo

    Stone Vo Khách Qua Đường

    Vậy post message lỗi lè lẹ còn đi ăn cơm {ah}
     
  13. Sì Ke

    Sì Ke Sơ Nhập Giang Hồ

    Notice: Undefined variable: con in C:\xampp\htdocs\laytin\kenh14 (1).php on line 40

    Warning: mysqli_error() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\laytin\kenh14 (1).php on line 40

    đây ạ {cry}
     
  14. Stone Vo

    Stone Vo Khách Qua Đường

    Ơ đệt. Nhầm $con -> $conn nhé. Làm lại nào
     
  15. Sì Ke

    Sì Ke Sơ Nhập Giang Hồ

    merror: Duplicate entry '0' for key 'PRIMARY'

    hình như e bị lỗi trong tạo bảng dtbs thì phải
     
  16. Stone Vo

    Stone Vo Khách Qua Đường

    Rồi hạ màn nào. Vào phpmyadmin -> bảng listal -> cho cái id là khóa chính vào auto increment -> xong phim
     
  17. Sì Ke

    Sì Ke Sơ Nhập Giang Hồ

    Đc r ạ, cảm ơn bác
    Chúc bác cơm ngon miệng {beauty}
     
  18. Phan Thị

    Phan Thị Bang Chúng

    Lần sau post code cả database lên mọi người giúp đỡ mất thời gian
     
  19. Sì Ke

    Sì Ke Sơ Nhập Giang Hồ

    Vâng, em bit r, tại e cũng sơ suất @@