2016-12-18 5 views
1

私はウェブプロジェクトを作っていますが、私はウェブページとphpsの間で値を渡すのに多くの問題があります。私は親切にPHPで新しいので、忍耐強くしてください。他のページでフォームの値を使用

私の問題は次のとおりです。

私はフォームを持つHTMLワードプレスページを持っています。このフォームでは、db行をチェックするためのチェックボックスをいくつか作成し、チェックしてボタンを使用すると追加、編集、削除ができます。私は追加と削除を管理しますが、編集に問題があります。

ので、ここでは、DB項目および追加のオプションを表示、編集、削除を行うことができ、コードは次のとおりです。

<strong>Aquí puede ver los ejercicios profesor</strong> 

[insert_php] 

global $wpdb; 

$consulta = "SELECT * FROM ejercicio WHERE 1"; 

$resultado = $wpdb->get_results($consulta); 

echo "<table><td>"; 

echo '<form action="http://localhost/wordpress/profesor/profesor-subir-ejercicios"><input type="submit" value="Nuevo"/></form>'; 
echo "</td><td>"; 
echo '<form name="boton" method="post" action="/wordpress/wp-content/plugins/borro.php"><input type="submit" name="editar" value="Editar" />'; 
echo "</td><td>"; 
echo '<input type="submit" name="borrar" value="Borrar" />'; 
echo "</td></table>"; 
echo "<table>"; 
echo "<tr>"; 
echo "<th>"; 
echo "<strong><u>Ejercicios </u></strong>"; 
echo "</th>"; 
echo "</tr>"; 
foreach ($resultado as $fila): 
echo "<tr><td>"; 
$datos= $fila->Nombre; 
echo $datos; 
echo "</td><td>"; 
echo '<input id="borro" type="checkbox" name="marcar[]" value="'.$datos.'"/>'; 
echo "</td></tr>"; 
endforeach; 
echo '</form>'; 
echo "</table>"; 
[/insert_php] 

私は私が行けば「marcar []」のチェックボックスをチェックする必要がありますEDITまたはDELETEの形式。

<?php 

include_once('../../wp-load.php'); 
include_once('../../wp-config.php'); 
global $wpdb; 

if(!empty($_POST['marcar'])){ 

if($_POST["editar"]) { 
foreach($_POST['marcar'] as $selected) 
header('Location: http://localhost/wordpress/profesor/profesor-editar/'); 
} 

if($_POST["borrar"]) { 

foreach($_POST['marcar'] as $selected) 
    { 
    $wpdb->delete('ejercicio', array('Nombre' => $selected)); 
    } 
header('Location: http://localhost/wordpress/profesor/profesor-ejercicios/'); 
} 
} 
?> 

あなたは私がチェックしたオプションを確認することを見ることができると私はDELETE押された場合、私は、行を削除します。これらのボタンで、私は、PHPファイルborro.phpに行きます。しかし私がEDITを押すと、私はユーザーがチェックボックスで選択されたフィールドだけを更新したい、editarのWebページに行きます。

<strong>Aquí podrá editar el ejercicio profesor</strong> 

[insert_php] 

global $wpdb; 
echo '<form action="/wordpress/wp-content/plugins/edito.php" method="post">'; 

echo "Nombre <br>"; 

echo '<input type="text" name="nombrecaja"><br>'; 

echo "Enunciado <br>"; 

echo '<textarea name="enunciadocaja" rows="5" cols="40"></textarea><br>'; 

echo "Solución <br>"; 

echo '<textarea name="solucioncaja" rows="5" cols="40"></textarea> <br>'; 

echo '<input type="submit" value="Subir ejercicio" /></form>'; 

[/insert_php] 

だから、私は、データベースの情報と、それを更新することができ、ユーザとの入力を埋めるために、確認のチェックボックスの行を取得したいです。私はデータベースをチェックするのに問題はないと思うが、どの行がチェックされているか(どの行を更新してクエリを作成する必要があるか)を知る方法がわからない。基本的に、編集Webページのmarcar []に保存されているチェックされた値をチェックして更新する方法はわかりません。

おかげ

+0

あなたのデータを追跡するために '' $ _SESSION''変数を使いたいかもしれません。 https://secure.php.net/manual/en/session.examples.basic.php –

+0

'session_start();を追加しました。 $ _SESSION ['dato'] = $ _POST ['marcar']; 'ヘッダ付きリダイレクト前のPHPで。その後、htmlファイルに次のように書きます: 'session_start(); echo $ _SESSION ['dato'] ['0']; '。私は値を正しく見ることができます!!!! session_start()はWARNINGで失敗します。SESSION_START():セッションキャッシュリミッターを送信できません - ヘッダーがすでに送信されています。しかし、データはそこにあります! – SugusTHC

+0

@SugusTHC、私の答えを見てください。 – Ionut

答えて

0

使用$_SESSIONとすべてのコードの先頭にsession_start()を入れて、それが警告問題を解決する必要があります。私があなたのコードの上に言ったとき、それはsession_start()がファイルのコードの最初の行であることを意味します。

PHPセッションhereについて詳しく読むことができます。

+0

私はsession_start()を追加しました。 $ _SESSION ['dato'] = $ _POST ['marcar'];ヘッダーでリダイレクトする前にPHPで。その後、htmlファイルに次のように記述します:session_start();エコー$ _SESSION ['dato'] ['0']; 。私は値を正しく見ることができます!!!! session_start()はWARNINGで失敗します。SESSION_START():セッションキャッシュリミッターを送信できません - ヘッダーがすでに送信されています。しかし、データはそこにあります! @ SUugusTHC。 – SugusTHC

+0

。 OK。だから、まだ警告が表示されますか?それとも、今問題になっているようですか? – Ionut

+0

私はsession_start()を[insert_php]の後ろに置いて、まだ警告を表示しています:/その値のECHOがその警告の直後に働くので好奇心が強いです。 – SugusTHC

0

セッション変数をページに使用する場合は、の前に書いたHTMLまたはPHPコードの前に、セッションディレクティブですべてのページを開始する必要があります。

<?php 

    session_start(); /* repeat this line in any others files that should communicate with this page through session superglobals */ 

?> 

<strong>Aquí puede ver los ejercicios profesor</strong> 

[insert_php] 

global $wpdb; 

$consulta = "SELECT * FROM ejercicio WHERE 1"; 

$resultado = $wpdb->get_results($consulta); 

echo "<table><td>"; 

echo '<form action="http://localhost/wordpress/profesor/profesor-subir-ejercicios"><input type="submit" value="Nuevo"/></form>'; 
echo "</td><td>"; 
echo '<form name="boton" method="post" action="/wordpress/wp-content/plugins/borro.php"><input type="submit" name="editar" value="Editar" />'; 
echo "</td><td>"; 
echo '<input type="submit" name="borrar" value="Borrar" />'; 
echo "</td></table>"; 
echo "<table>"; 
echo "<tr>"; 
echo "<th>"; 
echo "<strong><u>Ejercicios </u></strong>"; 
echo "</th>"; 
echo "</tr>"; 
foreach ($resultado as $fila): 
echo "<tr><td>"; 
$datos= $fila->Nombre; 
echo $datos; 
echo "</td><td>"; 
echo '<input id="borro" type="checkbox" name="marcar[]" value="'.$datos.'"/>'; 
echo "</td></tr>"; 
endforeach; 
echo '</form>'; 
echo "</table>"; 
[/insert_php] 

次に、セッションデータを使用するためにセッションデータを処理する必要があります。

また、別のページを見ている場合は、まずセッションフローを閉じる必要があります。

PHP : sessions

+0

私のコードが警告を出す前のそのコードでは、一方、渡したい値はそこにはありません。私は知っている:/ – SugusTHC

+0

私はページの変更、私はそれをどのように使用すると近いだろうか? – SugusTHC

+0

ここでセッションの開始方法を説明しました。これで、プロジェクト全体で実装することができます。 '' $ _SESSION''変数に正しい変数を登録するだけで、次のシーズンに使用することができます。 –

関連する問題