codeigniter-3 相关问题

CodeIgniter 3.x是流行的基于PHP的框架的最新主要版本树(在2015-04-24发布3.0.0)。 CodeIgniter是一个应用程序开发框架 - 一个工具包 - 主要用于使用PHP构建网站的人。有关更多信息,请参阅[tag:codeigniter]标记。

在 codeigniter php 中编辑图像时出现多个图像上传问题

我有一个图像上传表单,同时添加上传工作正常。现在我的编辑表单如下所示: 我有一个图像上传表单,同时添加上传工作正常。现在我的编辑表单如下所示: <input type="hidden" name="pimage2old" value="<?=$val['pimage2']?>"> <?php $selectedDays = $val['days']; $titles = explode('|', $val['title']); $pimages = explode('|', $val['pimage2']); $details = explode('|', $val['details']); $notes = explode('|', $val['note']); ?> <div class="col-md-12 position-relative" id="dayRows" > <?php for ($i = 1; $i <= 100; $i++) : ?> <div class="row" style="margin-bottom:1%;<?= ($i <= $selectedDays) ? '' : 'display:none;' ?>" id="day<?php echo $i; ?>Row"> <div class="col-md-2 position-relative"> <label class="form-label" style="font-weight:bold">Day <?php echo $i; ?></label> </div> <div class="col-md-2 position-relative"> <label class="form-label" for="validationTooltip14">Title</label> <input class="form-control" id="validationTooltip14" type="text" name="title[]" value="<?=$titles[$i-1]?>" onkeypress="return RestrictCommaSemicolon(event);" ondrop="return false;" onfocusout="checkComma(this);"> </div> <div class="col-md-2 position-relative"> <label class="form-label" for="validationTooltip15">Image: <?php if($pimages[$i-1]){?><a target="_blank" href="<?php echo base_url()?>uploads/packages/<?=$pimages[$i-1]?>">View Image</a><?php } ?></label> <input class="form-control" id="validationTooltip15" type="file" name="pimage2[]" > </div> <div class="col-md-3 position-relative"> <label class="form-label" for="validationTooltip16">Details</label> <textarea class="form-control" id="validationTooltip16" name="details[]" onkeypress="return RestrictCommaSemicolon(event);" ondrop="return false;" onfocusout="checkComma(this);"><?=$details[$i-1]?></textarea> </div> <div class="col-md-3 position-relative"> <label class="form-label" for="validationTooltip17">Note</label> <textarea class="form-control" id="validationTooltip17" name="note[]" onkeypress="return RestrictCommaSemicolon(event);" ondrop="return false;" onfocusout="checkComma(this);"><?=$notes[$i-1]?></textarea> </div> </div> <?php endfor; ?> </div> 我处理图像的控制器就像 if (!empty($_FILES['pimage2']['name'])) { $config2['upload_path'] = './uploads/packages/'; $config2['allowed_types'] = '*'; $this->load->library('upload'); $images = array(); $filesCount = count($_FILES['pimage2']['name']); $oldImages = explode('|', $details['pimage2old']); for ($i = 0; $i < $filesCount; $i++) { if (!empty($_FILES['pimage2']['name'][$i])) { $_FILES['userFile']['name'] = $_FILES['pimage2']['name'][$i]; $_FILES['userFile']['type'] = $_FILES['pimage2']['type'][$i]; $_FILES['userFile']['tmp_name'] = $_FILES['pimage2']['tmp_name'][$i]; $_FILES['userFile']['error'] = $_FILES['pimage2']['error'][$i]; $_FILES['userFile']['size'] = $_FILES['pimage2']['size'][$i]; $this->upload->initialize($config2); if ($this->upload->do_upload('userFile')) { $uploadData2 = $this->upload->data(); $images[$i] = $uploadData2['file_name']; } else { $error = array('error' => $this->upload->display_errors()); var_dump($error); $images[$i] = ''; } } else { $images[$i] = $oldImages[$i]; } } // Concatenate the image names with a pipe separator $picture2 = implode('|', $images); } else { $picture2 = $details['pimage2old']; } 这里上传不起作用,如果我替换任何特定图像或将图像添加到图像不存在的字段,则不会发生,以前的图像也不会被替换,这里可能是什么问题,提前感谢 如果您使用if (!empty($_FILES['pimage2']['name'][0])),则仅在为第一个字段上传了新图像时才处理上传的图像。 您的意图可能是检查是否上传了任何图像,如果是,则处理所有图像。 但是通过您的表单设置,$_FILES['pimage2']['name']将始终有一个值(如果没有上传图像,它将包含一个带有空字符串的数组,因此if (!empty($_FILES['pimage2']['name']))将始终返回true)。因此,没有简单的方法来检查是否上传了任何图像,除非您循环遍历 $_FILES 数组并逐一检查它们。 既然您已经在内部循环中使用 if (!empty($_FILES['pimage2']['name'][$i])) 执行此操作,我建议完全删除外部 if 并仅将循环保留在内部: $config2['upload_path'] = './uploads/packages/'; $config2['allowed_types'] = '*'; $this->load->library('upload'); $images = array(); $filesCount = count($_FILES['pimage2']['name']); $oldImages = explode('|', $details['pimage2old']); for ($i = 0; $i < $filesCount; $i++) { if (!empty($_FILES['pimage2']['name'][$i])) { $_FILES['userFile']['name'] = $_FILES['pimage2']['name'][$i]; $_FILES['userFile']['type'] = $_FILES['pimage2']['type'][$i]; $_FILES['userFile']['tmp_name'] = $_FILES['pimage2']['tmp_name'][$i]; $_FILES['userFile']['error'] = $_FILES['pimage2']['error'][$i]; $_FILES['userFile']['size'] = $_FILES['pimage2']['size'][$i]; $this->upload->initialize($config2); if ($this->upload->do_upload('userFile')) { $uploadData2 = $this->upload->data(); $images[$i] = $uploadData2['file_name']; } else { $error = array('error' => $this->upload->display_errors()); var_dump($error); $images[$i] = ''; } } else { $images[$i] = $oldImages[$i]; } } // Concatenate the image names with a pipe separator $picture2 = implode('|', $images);

回答 1 投票 0

如何使用 php 检索文件

我想从php中的特定路径检索文件/图像,我尝试了不同的方法,如file_get_contents和opendir和readdir等,但找不到任何解决方案,你能帮忙吗...

回答 1 投票 0

Codeigniter 3:插入动态输入类型=“文件”课程>部分>媒体字段

让 mediaHtml = ` <div class="mediaItem"> <input type="text" name="sections[${sectionDiv.data('section-id')}][media][${mediaCounter}][</desc> <question vote="0"> <pre><code>&lt;script&gt; let mediaHtml = ` &lt;div class=&#34;mediaItem&#34;&gt; &lt;input type=&#34;text&#34; name=&#34;sections[${sectionDiv.data(&#39;section-id&#39;)}][media][${mediaCounter}][media_title]&#34; placeholder=&#34;Media Title&#34;&gt; &lt;input type=&#34;file&#34; name=&#34;sections[${sectionDiv.data(&#39;section-id&#39;)}][media][${mediaCounter}][media_name]&#34;&gt; &lt;button type=&#34;button&#34; class=&#34;removeMedia&#34;&gt;Remove Media&lt;/button&gt; &lt;/div&gt;`; mediaDiv.append(mediaHtml); &lt;/script&gt; </code></pre> <p>我正在开发一个项目,通过表单上传媒体文件。每个媒体文件都有一个相应的标题。我在这个项目中使用 CodeIgniter。我面临的问题是,我可以成功地将 <pre><code>media_title</code></pre> 插入数据库,但在将 <pre><code>media_name</code></pre>(文件名)插入存储媒体文件的文件夹时遇到困难。我对 <pre><code>media_title</code></pre> 和 <pre><code>media_name</code></pre> 使用动态字段名称,结构为 <pre><code>sections[X]media[Y]media_name</code></pre> 和 <pre><code>sections[X]media[Y]media_title</code></pre>。如何确保标题和文件名正确插入和管理?</p> <p>初始控制器:</p> <pre><code> if (isset($section[&#39;media&#39;])) { foreach ($section[&#39;media&#39;] as $media) { $mediaTitle = $media[&#39;media_title&#39;]; $mediaName = $media[&#39;media_name&#39;]; $this-&gt;ExamModel-&gt;save_lesson($sectionId, $mediaTitle, $mediaName); } } </code></pre> </question> <answer tick="false" vote="0"> <pre><code>if (isset($section[&#39;media&#39;])) { foreach ($section[&#39;media&#39;] as $mediaIndex =&gt; $media) { $mediaTitle = $media[&#39;media_title&#39;]; // Construct the correct file input name $fileInputName = &#34;sections[$sectionIndex][media][$mediaIndex][media_name]&#34;; // Access the uploaded file from $_FILES using the correct keys if (isset($_FILES[&#39;sections&#39;][&#39;name&#39;][$sectionIndex][&#39;media&#39;][$mediaIndex][&#39;media_name&#39;])) { $mediaName = [ &#39;name&#39; =&gt; $_FILES[&#39;sections&#39;][&#39;name&#39;][$sectionIndex][&#39;media&#39;][$mediaIndex][&#39;media_name&#39;], &#39;type&#39; =&gt; $_FILES[&#39;sections&#39;][&#39;type&#39;][$sectionIndex][&#39;media&#39;][$mediaIndex][&#39;media_name&#39;], &#39;tmp_name&#39; =&gt; $_FILES[&#39;sections&#39;][&#39;tmp_name&#39;][$sectionIndex][&#39;media&#39;][$mediaIndex][&#39;media_name&#39;], &#39;error&#39; =&gt; $_FILES[&#39;sections&#39;][&#39;error&#39;][$sectionIndex][&#39;media&#39;][$mediaIndex][&#39;media_name&#39;], &#39;size&#39; =&gt; $_FILES[&#39;sections&#39;][&#39;size&#39;][$sectionIndex][&#39;media&#39;][$mediaIndex][&#39;media_name&#39;] ]; echo &#34;&lt;h2&gt;&#34;; print_r($mediaTitle); echo &#34;&lt;/h2&gt;&#34;; // Print the file information echo &#34;&lt;pre&gt;&#34;; print_r($mediaName); echo &#34;&lt;/pre&gt;&#34;; $this-&gt;ExamModel-&gt;save_media($sectionId, $mediaTitle, $mediaName[&#39;name&#39;]); } else { echo &#34;No file uploaded for section: $sectionIndex, media: $mediaIndex&#34;; } } } </code></pre> </answer> </body></html>

回答 0 投票 0

将克隆行附加到单击按钮的最新子项

我有一个带有按钮的表,单击该按钮时,我会通过 AJAX 将其保存在数据库中。如果成功,它应该克隆按钮所在的当前行,然后将其附加到最新的子项。拯救我...

回答 1 投票 0

如何使用 PHP 同时高效地向 200,000 个用户发送 Firebase 推送通知?

拥有 200,000 名用户并且正在进行实时会话,因此需要同时向所有用户发送推送通知,以告知他们 PHP 中的实时会话。然而,Firebase 推动

回答 1 投票 0

Codeigniter 带有 SMTP 的电子邮件显示奇怪的格式

我有一条 HTML 消息,如下所示。 这是银行帐号 *********0205 这是一封测试电子邮件。 这是我的电子邮件 [email protected] 我有一条 HTML 消息,如下所示。 <p>This is a bank account number *********0205</p> <p><b>This is a test email.</b></p> <p>This is my email [email protected]</p> <p>This is a link <a href='https://xxxxxx.uslogistics.com/images/logo_big.png'>https://xxxxxx.uslogistics.com/images/logo_big.png</a><p> 我想通过 SMTP 发送该消息。使用的主机是smtp.office365.com 我正在使用 Codeignitor,当我在没有 SMTP 的情况下发送电子邮件时,我收到的电子邮件显示良好,请参见下面(图像和代码) <?php $this->load->library('email'); $body = "<p><b>This is a test email.</b></p><p>This is my email [email protected]</p><p>This is a link <a href='https://xxxxxx.uslogistics.com/images/logo_big.png'>https://xxxxxx.uslogistics.com/images/logo_big.png</a><p>"; $config['mailtype'] = 'html'; $config['charset'] = 'iso-8859-1'; $config['wordwrap'] = TRUE; $config['newline'] = "\r\n"; $this->email->clear(TRUE); $this->email->initialize($config); $this->email->from("[email protected]", "No Replay"); $this->email->to("[email protected]"); $this->email->subject("Test"); $this->email->message($body); $this->email->send(); 当我使用 SMTP 时,我会收到一封有线电子邮件(参见下面的图片和代码) $this->load->library('email'); $body = "<p><b>This is a test email.</b></p><p>This is my email [email protected]</p><p>This is a link <a href='https://xxxxxx.uslogistics.com/images/logo_big.png'>https://xxxxxx.uslogistics.com/images/logo_big.png</a><p>"; $config['protocol'] = 'smtp'; $config['smtp_host'] = 'smtp.office365.com'; $config['smtp_user'] = ""; //Here I put the SMTP username $config['smtp_pass'] =""; //Here I put the SMTP password $config['smtp_port'] = '587'; $config['smtp_crypto'] = 'tls'; $config['mailtype'] = 'html'; $config['charset'] = 'iso-8859-1'; $config['wordwrap'] = TRUE; $config['newline'] = "\r\n"; $this->email->clear(TRUE); $this->email->initialize($config); $this->email->from("", "No Replay");//Here I put the SMTP username as email. $this->email->to("[email protected]"); $this->email->subject("Test"); $this->email->message($body); $this->email->send(); 这只是一个简单的 HTML,如果我使用表格,它们都会被有线文本替换。 为了确保它与 codeignitor 相关,我使用了 PHPMailer(一个没有 CI 的新项目),当我使用 SMTP 或不使用 SMTP 发送相同的 HTML 电子邮件时,我每次都会收到正确的电子邮件。 这是我的 SMTP 的 PHPMailer 代码: <?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; $mail = new PHPMailer(true); try { $mail->SMTPDebug = 2; $mail->isSMTP(); $mail->Host = 'smtp.office365.com'; $mail->SMTPAuth = true; $mail->Username = '';//Here I put the SMTP username. $mail->Password = '';//Here I put the SMTP password. $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('');//Here I put the SMTP username as email. $mail->addAddress('[email protected]'); $mail->isHTML(true); $mail->Subject = ''; $mail->Body = "<p><b>This is a test email.</b></p><p>This is my email [email protected]</p><p>This is a link <a href='https://xxxxxx.uslogistics.com/images/logo_big.png'>https://xxxxxx.uslogistics.com/images/logo_big.png</a><p>"; $mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo; } 这个 email.php 配置终于对我有用了: config= array( 'protocol' => 'smtp', 'smtp_host' => 'smtp.office365.com', 'smtp_port' => '587', 'smtp_user' => '[email protected]', 'smtp_pass' => 'xxxxxxxxxx', 'smtp_crypto' => 'tls', 'charset' => 'utf-8', 'crlf' => "\r\n", 'newline' => "\r\n", 'mailtype' => 'html'); 我的电子邮件中的 = 字符也遇到了完全相同的问题,我通过在 email.php 的配置中添加以下内容解决了这个问题: $config['crlf'] = "\r\n"; $config['newline'] = "\r\n"; 希望对你有帮助

回答 2 投票 0

Json 数据未到达控制器

函数 makePayment() { const txRef = `shayonix-${new Date().getTime()}-${Math.random().toString(36).substring(2, 15)}`; 让价格 = document.getElementById("</desc> <question vote="0"> <pre><code>&lt;script&gt; function makePayment() { const txRef = `shayonix-${new Date().getTime()}-${Math.random().toString(36).substring(2, 15)}`; let price = document.getElementById(&#34;price&#34;).value; const user_email = document.getElementById(&#34;user_email&#34;).value; const username = document.getElementById(&#34;username&#34;).value; var store_id = document.getElementById(&#34;store_id&#34;).value; var plan_id = document.getElementById(&#34;plan_id&#34;).value; var start_date = document.getElementById(&#34;start_date&#34;).value; var end_date = document.getElementById(&#34;end_date&#34;).value; var status = &#39;active&#39;; var data = { store_id: store_id, plan_id: plan_id, start_date: start_date, end_date: end_date, status: status, price: price, }; console.log(data); FlutterwaveCheckout({ public_key: &#34;FLWPUBK_TEST-7dfa27ed7558780e7b90be30246599b0-X&#34;, tx_ref: txRef, amount: price, currency: &#34;TZS&#34;, payment_options: &#34;card, ussd&#34;, callback: function(payment) { console.log(data); if (payment.status === &#34;successful&#34;) { $.ajax({ type: &#34;POST&#34;, url: &#34;&lt;?php echo admin_url(&#39;membership/insert_payment&#39;)?&gt;&#34;, data: $.param(data), success: function(response) { document.getElementById(&#34;createForm&#34;).submit(); }, error: function(xhr, status, error) { console.error(&#34;Error:&#34;, xhr.responseText); document.querySelector(&#34;#payment-failed&#34;).style.display = &#39;block&#39;; } }); } else { document.querySelector(&#34;#payment-failed&#34;).style.display = &#39;block&#39;; } }, onclose: function() { console.log(&#34;Payment popup closed&#34;); document.querySelector(&#34;#payment-failed&#34;).style.display = &#39;block&#39;; }, meta: { consumer_id: document.getElementById(&#34;user_id&#34;).value, consumer_mac: &#34;92a3-912ba-1192a&#34;, }, customer: { email: user_email, name: username, }, customizations: { title: &#34;Shayonix Membership POS&#34;, description: &#34;Shayonix Membership POS Payment&#34;, logo: &#34;&#34;, }, }); } &lt;/script&gt; </code></pre> <pre><code>public function insert_payment() { $post_data = file_get_contents(&#34;php://input&#34;); // Decode the JSON data $data = json_decode($post_data, true); $store_id = $this-&gt;input-&gt;post(&#39;store_id&#39;); $plan_id = $this-&gt;input-&gt;post(&#39;plan_id&#39;); $start_date = $this-&gt;input-&gt;post(&#39;start_date&#39;); $end_date = $this-&gt;input-&gt;post(&#39;end_date&#39;); $status = $this-&gt;input-&gt;post(&#39;status&#39;); $price = $this-&gt;input-&gt;post(&#39;price&#39;); $data = array( &#39;store_id&#39; =&gt; $store_id, &#39;plan_id&#39; =&gt; $plan_id, &#39;start_date&#39; =&gt; $start_date, &#39;end_date&#39; =&gt; $end_date, &#39;status&#39; =&gt; $status, &#39;price&#39; =&gt; $price, ); var_dump($data); $insert = $this-&gt;db-&gt;insert(&#39;user_memberships&#39;, $data); $response = array(&#39;status&#39; =&gt; $insert ? &#39;success&#39; : &#39;error&#39;); echo json_encode($response); } </code></pre> <p>我是,成功付款后,数据应输入数据库,并且数据显示在控制台选项卡中,但当我重定向到控制器时,数据未显示在控制器中,数据显示为空</p> </question> <answer tick="false" vote="0"> <p>您遇到的问题似乎源于数据如何从 JavaScript 代码发送到控制器。具体来说,jQuery 中的 <pre><code>$.param(data)</code></pre> 方法将数据编码为查询字符串,而不是 JSON。当尝试在服务器端检索数据时,这可能会导致问题,特别是如果您需要 JSON。</p> <p>以下是确保数据以 JSON 形式发送并在服务器端正确处理的方法:</p> <ol> <li><p><strong>更新AJAX请求发送JSON数据</strong>:</p> <pre><code>$.ajax({ type: &#34;POST&#34;, url: &#34;&lt;?php echo admin_url(&#39;membership/insert_payment&#39;)?&gt;&#34;, data: JSON.stringify(data), contentType: &#34;application/json&#34;, success: function(response) { document.getElementById(&#34;createForm&#34;).submit(); }, error: function(xhr, status, error) { console.error(&#34;Error:&#34;, xhr.responseText); document.querySelector(&#34;#payment-failed&#34;).style.display = &#39;block&#39;; } }); </code></pre> </li> <li><p><strong>调整服务器端代码以读取JSON输入</strong>:</p> <p>在 PHP 控制器中,确保正确解码 JSON 输入:</p> <pre><code>public function insert_payment() { $post_data = file_get_contents(&#34;php://input&#34;); $data = json_decode($post_data, true); $store_id = $data[&#39;store_id&#39;]; $plan_id = $data[&#39;plan_id&#39;]; $start_date = $data[&#39;start_date&#39;]; $end_date = $data[&#39;end_date&#39;]; $status = $data[&#39;status&#39;]; $price = $data[&#39;price&#39;]; $data = array( &#39;store_id&#39; =&gt; $store_id, &#39;plan_id&#39; =&gt; $plan_id, &#39;start_date&#39; =&gt; $start_date, &#39;end_date&#39; =&gt; $end_date, &#39;status&#39; =&gt; $status, &#39;price&#39; =&gt; $price, ); // Insert the data into the database $insert = $this-&gt;db-&gt;insert(&#39;user_memberships&#39;, $data); $response = array(&#39;status&#39; =&gt; $insert ? &#39;success&#39; : &#39;error&#39;); echo json_encode($response); } </code></pre> </li> </ol> <p>通过确保数据以 JSON 形式发送并在服务器端正确解码,您应该能够避免数据无法正确到达控制器的问题。</p> <h3>补充说明:</h3> <ul> <li>确保处理客户端和服务器端潜在的 JSON 解析错误。</li> <li>通过验证服务器设置和任何中间件(如果使用 CodeIgniter 或 Laravel 等框架),确保您的服务器配置为接受 JSON 内容类型。</li> <li>您可能还想记录原始 <pre><code>POST</code></pre> 数据和解码数据以进一步调试任何问题。</li> </ul> </answer> </body></html>

回答 0 投票 0

我无法使用 Codeigniter join 命令提取数据

在我当前的代码中,我想将“feed”表中名为“model”的列中的数据与名为“arac_model”的表中的“model_id”列中的数据进行匹配,取...

回答 1 投票 0

添加代码点火器中选定范围的列值

我有时间记录表 日期 时间在 暂停 打破 爆发 总时间 我的表中的字段。我有这个sql查询 公共函数 showattendance(){ $start = $this->输入-&g...

回答 2 投票 0

CodeIgniter MySQL 选择和查询

我在 CodeIgniter 中使用下面的模型来获取列的总和: 公共函数 b2c_totalsales() { $this->db->select_sum('total_price'); $结果=$this->db->from('

回答 1 投票 0

session_start():无法解码会话对象

我有时在使用 CodeIgniter 时遇到以下问题: 错误 - 2019-03-05 19:57:26 --> 严重性:警告 --> session_start(): 无法解码会话对象。会话已被破坏...

回答 4 投票 0

codeigniter php 中的多个图片上传问题

我正在尝试使用codeigniter上传多个图像,我有大约15个图像字段,名称为pimage到pimage15,所有都是可选的,我的控制器代码如下所示: 公共职能

回答 1 投票 0

Codeigniter 选择并统计 MySQL 记录

使用Codeigniter 3,我想显示MySQL数据库中表中的所有记录。我还想包括所选记录的数量。 例如; 显示 x 条记录;

回答 5 投票 0

CodeIgniter AJAX 表单提交中的 CSRF 令牌重新生成问题

我正在开发一个 CodeIgniter 应用程序,我在其中使用 CSRF 保护和 AJAX 表单提交。我有 $config['csrf_regenerate'] = TRUE;在我的配置中启用,但我遇到了 403

回答 1 投票 0

CI3 中重复的 foreach

所以我尝试使用 foreach 来显示数据,但它重复了 foreach 内的内容。这是代码 所以我尝试使用 foreach 来显示数据,但它重复了 foreach 内的内容。这是代码 <!-- Begin Page Content --> <div class="container-fluid"> <?= $this->session->flashdata('pesan'); ?> <div class="row"> <div class="col-lg-6"> <?php if (validation_errors()) { $this->session->set_flashdata('pesan', '<div class="alert alert-danger alert-message" role="alert">Nama Kategori tidak boleh Kosong</div>'); redirect('buku/ubahkategori/' . $k['id_kategori']); } ?> <?php foreach ($kategori as $k) { ?> <form action="<?= base_url('buku/ubahKategori'); ?>" method="post"> <div class="form-group"> <input type="hidden" name="id" id="id" value="<?php echo $kategori['id_kategori']; ?>"> <input type="text" class="form-control form-control-user" id="kategori" name="kategori" placeholder="Masukkan Kategori Buku" value="<?= $kategori['kategori']; ?>"> </div> <div class="form-group"> <input type="button" class="form-control form-control-user btn btn-dark col-lg-3 mt-3" value="Kembali" onclick="window.history.go(-1)"> <input type="submit" class="form-control form-control-user btn btn-primary col-lg-3 mt-3" value="Update"> </div> </form> <?php } ?> 这是控制器 public function ubahKategori() { $data['judul'] = 'Ubah Kategori Buku'; $data['user'] = $this->ModelUser->cekData(['email' => $this->session->userdata('email')])->row_array(); $where = ['id_kategori' => $this->uri->segment(3)]; $data['kategori'] = $this->ModelBuku->kategoriWhere($where)->row_array(); $this->form_validation->set_rules( 'kategori', 'Kategori', 'required', [ 'required' => 'Judul Buku harus diisi' ]); if ($this->form_validation->run() == false) { $this->load->view('templates/header', $data); $this->load->view('templates/sidebar', $data); $this->load->view('templates/topbar', $data); $this->load->view('buku/ubah_kategori', $data); $this->load->view('templates/footer'); } else { $data = ['kategori' => $this->input->post('kategori')]; $this->ModelBuku->updateKategori(['id_kategori' => $this->input->post('id')], $data); redirect('buku/kategori'); } } 它重复了 foreach 内部的内容,尝试在查询上使用 Limit 但它仍然不起作用 尝试添加限制 如果我理解正确,您正在尝试更新表单中的一个类别。您可以使用 ->row_array() 从数据库中获取此类别,因此 $data['kategory'] 包含单个数据库行/单个类别的属性。 如果您随后对此类别执行 foreach,则 foreach 会循环遍历该类别的属性并为每个属性重复该形式。由于您只想显示一种类别,因此这里不需要使用 foreach,直接访问属性即可。 删除 foreach,并将 $k['id_kategori'] 中的 redirect 替换为 $kategori['id_kategori']: <!-- Begin Page Content --> <div class="container-fluid"> <?= $this->session->flashdata('pesan'); ?> <div class="row"> <div class="col-lg-6"> <?php if (validation_errors()) { $this->session->set_flashdata('pesan', '<div class="alert alert-danger alert-message" role="alert">Nama Kategori tidak boleh Kosong</div>'); redirect('buku/ubahkategori/' . $kategori['id_kategori']); } ?> <form action="<?= base_url('buku/ubahKategori'); ?>" method="post"> <div class="form-group"> <input type="hidden" name="id" id="id" value="<?php echo $kategori['id_kategori']; ?>"> <input type="text" class="form-control form-control-user" id="kategori" name="kategori" placeholder="Masukkan Kategori Buku" value="<?= $kategori['kategori']; ?>"> </div> <div class="form-group"> <input type="button" class="form-control form-control-user btn btn-dark col-lg-3 mt-3" value="Kembali" onclick="window.history.go(-1)"> <input type="submit" class="form-control form-control-user btn btn-primary col-lg-3 mt-3" value="Update"> </div> </form>

回答 1 投票 0

在 CodeIgniter 的 editblog.php 视图页面中收到“未定义的数组键”警告 - 如何解决?

有人可以帮助我摆脱这个错误吗,因为我已经陷入这个错误一段时间了,我对摆脱这个错误感到非常沮丧。 错误是: 更新博客 遇到 PHP 错误...

回答 1 投票 0

CodeIgniter3 中的 URL 路由不会到达正确的目录

我刚刚下载了 CI,并将 2 个文件夹应用程序和系统复制到我的网络文件夹中。 我将 index.php 移至应用程序内部,并修改了 .htaccess 我的网络文件夹是 C:\onedrive\dropbox\

回答 1 投票 0

消息:CI_Session_files_driver::open($save_path, $name) 的返回类型应与 SessionHandlerInterface 兼容:

我无法找到代码点火器中遇到的此错误的解决方案。我已经尝试了所有可用的解决方案,例如 drivers/Session_files_driver.php ,适用于此页面。 这就是我的错误

回答 2 投票 0

如果数据存储为内爆,我们如何使用where条件

我的桌子是这样的 如果location_id为3,我想获取所有部门,这意味着如果使用位置id 3,我需要获取心脏病科和头发科的部门名称,这样我就完成了...

回答 2 投票 0

do_upload() 函数从 Codeigniter 3 中的文件名中删除“&”字符

我正在 CI3 中使用 do_upload() 函数来重命名和上传文件。文件名包含“&”字符。当我上传文件并保存它时,文件名中的“&”字符正在被删除...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.