Codeigniter: проверить, если массив и выполнить сообщение - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь записать данные в два разных БД. У меня есть некоторые данные, которые пользователь должен вставить, но другие данные, которые пользователь не мог вставить.

Для этих данных я должен проверить, вставлены ли они, если массив не пустой, я должен вставить эти данные в БД, в противном случае нет.

Итак, мой код:

//this is the part that the user must insert.
     $meeting = [
                'motivation' => $this->post('motivation'),
                'date' => $this->post('date'),
                'start_at' => $this->post('start_at'),
                'end_at' => $this->post('end_at'),
            ];

            $meeting_id = $this->Meeting_model->post($meeting);
            var_dump($meeting);

//this is the part that user should not insert.
            $companions = [
            'name' => $this->post('name'),
            'surname' => $this->post('surname'),
            'fiscal_code' => $this->post('fiscal_code'),
            ];

//So there I should control if the array is empty.
            if(empty($companions))
            {
                var_dump($companions);
                foreach ($companions as $postCompanion) {
                    $dataCompanion = [
                            'name' => $postCompanion['name'],
                            'surname' => $postCompanion['surname'],
                            'fiscal_code' => $postCompanion['fiscal_code'],
                            'meeting_id' => $meeting_id,
                        ];
                    $companions_id = $this->Companion_model->post($dataCompanion);
                    $this->response(['companions_id', $companions_id]);
                }   
            }

Моя проблема в том, что таким образом я никогда не вхожу в "если", передаю ли я данные или нет .. Я пробовал раньше с: $companions != []

Но если пользователь не вставляет данные, в результате которых они выглядят так:

'name' => boolean false
'surname' => boolean false
'fiscal_code' => boolean false

И поэтому я записал свои данные в БД: VALUES (0, 0, 0)

Как я могу решить эту проблему? Спасибо.

Ответы [ 3 ]

1 голос
/ 27 апреля 2020

Ошибка в том, что $companions никогда не бывает пустым, у него уже есть ключи. Это должно работать для вас- ↓↓

//this is the part that the user must insert.
     $meeting = [
                'motivation' => $this->post('motivation'),
                'date' => $this->post('date'),
                'start_at' => $this->post('start_at'),
                'end_at' => $this->post('end_at'),
            ];

            $meeting_id = $this->Meeting_model->post($meeting);
            var_dump($meeting);

//this is the part that user should not insert.
$companions = array();
if($this->post('name') != "" && $this->post('surname') != ""  && $this->post('surname') != ""){
                $companions = [
                'name' => $this->post('name'),
                'surname' => $this->post('surname'),
                'fiscal_code' => $this->post('fiscal_code'),
                ];
    }
    //So there I should control if the array is empty.
                if(empty($companions))
                {
                    var_dump($companions);
                    foreach ($companions as $postCompanion) {
                        $dataCompanion = [
                                'name' => $postCompanion['name'],
                                'surname' => $postCompanion['surname'],
                                'fiscal_code' => $postCompanion['fiscal_code'],
                                'meeting_id' => $meeting_id,
                            ];
                        $companions_id = $this->Companion_model->post($dataCompanion);
                        $this->response(['companions_id', $companions_id]);
                    }   
                }
1 голос
/ 27 апреля 2020

$ товарищи не пустые. Пожалуйста, смотрите этот код.

<?php


$companions = [
    'name' => NULL,
    'surname' => NULL,
    'fiscal_code' => NULL,
];


//DON'T IUSE THIS.

 if(empty($companions))
{    
     echo 'EMPTY :  ';
     var_dump($companions);
 }else{
     echo 'NOT EMPTY :  ';
     var_dump($companions);
 }

// USE THIS.

if(empty($companions['name']) && empty($companions['surname']) && empty($companions['fiscal_code'])){

     echo 'EMPTY :  ';
     die(var_dump($companions));

}else{
    echo 'NOT EMPTY :  ';
     die(var_dump($companions));
}
1 голос
/ 27 апреля 2020

ваша переменная $companions никогда не была пустой как массив, потому что вы уже установили ключи в ней (конечно, значение зависит от результата $this->post()).

Если вы зафиксировали 3 данных $this->post('name'), $this->post('surname'), $this->post('fiscal_code'), просто отметьте 3 из них, вот так.

$companions = [
        'name' => $this->post('name'),
        'surname' => $this->post('surname'),
        'fiscal_code' => $this->post('fiscal_code'),
    ];

//So there I should control if the array is empty.
if(!empty($companions['name']) && !empty($companions['surname']) && !empty($companions['fiscal_code']))
{
    $companions['meeting_id'] = $meeting_id;
    $companions_id = $this->Companion_model->post($companions);
    $this->response(['companions_id', $companions_id]);   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...