флаттер несколько сообщений с проблемой php api [решено] - PullRequest
0 голосов
/ 14 июля 2020

Я отправляю несколько user_id с данными формы во флаттере на страницу PHP, но мой PHP API не видел массив или объект. Я использовал этот код для других проектов, он мог работать с javascript, но я не мог работать с флаттером. мой код флаттера =

    Future<FormData> grupDuzenleData() async {
  var token = await dbcon.tumKullanicilar();
if (grupPhoto != null) {
    var fileName = path.basename(grupPhoto.path);
    return FormData.fromMap(
      {
        'token': token.single['token'],
        'group_description': grupHakkindaController.text ?? '',
        'music_type': _currentType ?? '',
        'city': _currentCity ?? '',
        'group_name': grupAdiController.text ?? '',
        'group_id': widget.BandID ?? '',
        'id': uyeler,
        'image':
            await MultipartFile.fromFile(grupPhoto.path, filename: fileName)
      },
    );
  } else {
    return FormData.fromMap(
      {
        'token': token.single['token'],
        'group_description': grupHakkindaController.text ?? '',
        'music_type': _currentType ?? '',
        'city': _currentCity ?? '',
        'id': uyeler,
        'group_id': widget.BandID ?? '',
        'group_name': grupAdiController.text ?? '',
      },
    );
  }
}
````````````````````````
**my other flutter functions**
````````````````````````
void grupDuzenleKaydet() async {
    var dio = Dio();
    Response response;
    var formData = await grupDuzenleData();

    response = await dio.post(
      //"/upload",
      ApiURL().URL('groupEdit'),
      data: formData,

      onSendProgress: (received, total) {
        if (total != -1) {
          print((received / total * 100).toStringAsFixed(0) + '%');
        }
      },
    );
    if (response.statusCode == 200) {
      Map<String, dynamic> _responseMap = json.decode(response.data);
      await showDialog(
          context: context,
          builder: (BuildContext context) {
            return PlatformDuyarliAlertDialog(
                baslik: '${_responseMap['sonuc']}',
                icerik: '',
                anaButonYazisi: '');
          });
    } else {
      Map<String, dynamic> _responseMap = json.decode(response.data);
      await showDialog(
        context: context,
        builder: (BuildContext context) {
          return PlatformDuyarliAlertDialog(
              baslik: '${_responseMap['sonuc']}',
              icerik: '',
              anaButonYazisi: '');
        },
      );
    }
  }
````````````````````````
My php code =
I get post from flutter.
````````````````````````
$token= @strip_tags($_POST["token"]);
$group_id= @strip_tags($_POST["group_id"]);
$user_id = @strip_tags($_POST["id"]);
$group_name = @strip_tags($_POST["group_name"]);
$image = @$_FILES["image"];
$description = strip_tags($_POST["group_description"]);
$music_type = strip_tags($_POST["music_type"]);
$city = strip_tags($_POST["city"]);
$user = new user();
$token_bak = @$user->userTokenCheck($token);
if($token=="" or !$token or $token_bak<=0){
  $sonuc = "Lütfen Üye Girişi Yapın.";
  $sonuclar = array("kod"=>"1","sonuc"=>$sonuc);
  echo json_encode_tr($sonuclar);
} elseif ($group_name=="" or !$group_name) {
  $sonuc = "Lütfen Grup Adını Girin.";
  $sonuclar = array("kod"=>"1","sonuc"=>$sonuc);
  echo json_encode_tr($sonuclar);
} elseif ($description=="" or !$description) {
  $sonuc = "Lütfen Grup Açıklamasını Girin.";
  $sonuclar = array("kod"=>"1","sonuc"=>$sonuc);
  echo json_encode_tr($sonuclar);
} elseif ($music_type=="" or !$music_type or $music_type=="0") {
  $sonuc = "Lütfen Grubun Genelde Çaldığı Müzik Türünü Seçin.";
  $sonuclar = array("kod"=>"1","sonuc"=>$sonuc);
  echo json_encode_tr($sonuclar);
} elseif ($city=="" or !$city) {
  $sonuc = "Lütfen Grubun Genelde Sahne Aldığı Şehiri Seçin.";
  $sonuclar = array("kod"=>"1","sonuc"=>$sonuc);
  echo json_encode_tr($sonuclar);
} else {
  if($image!=""){
    if(isset($_FILES['image'])){
      $hata = $_FILES['image']['error'];
      if($hata != 0) {
        echo 'Yüklenirken bir hata gerçekleşmiş.';
      } else {
          $tip = $_FILES['image']['type'];
          $isim = $_FILES['image']['name'];
          $uzanti = explode('.', $isim);
          $uzanti = $uzanti[count($uzanti)-1];
          $uzanti_bak=fileTypeControl($uzanti);
          $tip_bak=fileTypeControl2($tip);
          if($uzanti_bak==1) {
            $sonuc="Yalnızca Fotoğraf Yükleyebilirsiniz (jpg,jpeg,png).";
            $sonuclar= array("kod"=>"1","sonuc"=>$sonuc);
            echo json_encode_tr($sonuclar);
          } elseif ($tip_bak==1) {
            $sonuc="Yalnızca  Türünde Fotoğraf Yükleyebilirsiniz (jpg,jpeg,png).";
            $sonuclar= array("kod"=>"1","sonuc"=>$sonuc);
            echo json_encode_tr($sonuclar);
          } else {
            $dosya = $_FILES['image']['tmp_name'];
            copy($dosya, '../uploads/group_images/' . $_FILES['image']['name']);
            $avatar2='uploads/group_images/'.$_FILES['image']['name'].'';
          }
        }
      }
  } else {
    $avatar2="";
  }
  if(isset($user_id) AND count($user_id)>0){
    for ($i=0; $i <= count($user_id); $i++){
      $user_id_ekle = $user_id[$i];
      $ekle = new GroupMemberAdd($user_id_ekle, $group_id);
    }
  }
  $sonuc = "$user_id[0] ve $user_id[1]";
  $sonuclar = array("kod"=>"1","sonuc"=>$sonuc);
  echo json_encode_tr($sonuclar);
  new GroupEdit($group_id, $token, $group_name, $description, $avatar2, $music_type, $city);
}

Очень интересно, мой user_id не стал массивом или объектом, мой engli sh очень плохой, извините

1 Ответ

0 голосов
/ 14 июля 2020

РЕШЕНИЕ. Я использовал функцию разнесения после того, как сделал foreach. это решает. Всем спасибо.

...