probleme update

Invité
Invité n'ayant pas de compte PHPfrance

14 sept. 2005, 23:19

salut,

je fais ma requete pour update mais ca marche pas:
ligne64
$sql3 = "UPDATE censure SET word='".$_POST["word"]."', replacement='".$_POST["replacement"]."' WHERE id='$_GET[id]'";
ca genere cette erreur:
Notice: Undefined index: word in c:\program files\easyphp1-7\www\dubaiboy\mybook\FormCensure.php on line 64

Notice: Undefined index: replacement in c:\program files\easyphp1-7\www\dubaiboy\mybook\FormCensure.php on line 64

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

14 sept. 2005, 23:22

c'est que les variables $_POST que tu utilises n'existent pas, es-tu sûr de bin récupérer ton formulaire ? qu'elles ont le même nom que des champs de celui-ci ?

il est en tout cas bizarre d'avoir 2 variables $_POST et 1 variable $_GET utilisée en même temps...

Invité
Invité n'ayant pas de compte PHPfrance

14 sept. 2005, 23:28

if(isset($_POST['word'])) $word = $_POST['word'];
else $word = '';
if(isset($_POST['replacement'])) $replacement = $_POST['replacement'];
else $replacement = '';
$sql3 = "UPDATE censure SET word='".$_POST["word"]."', replacement='".$_POST["replacement"]."' WHERE id='". $id ."'";

Code : Tout sélectionner

Notice: Undefined index: word in c:\program files\easyphp1-7\www\dubaiboy\mybook\FormCensure.php on line 64 Notice: Undefined index: replacement in c:\program files\easyphp1-7\www\dubaiboy\mybook\FormCensure.php on line 64

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

14 sept. 2005, 23:55

super

ça ne m'avance pas beaucoup, et tu pourrais peut-être faire l'effort de taper quelques phrases explicatives merci

bref, à quoi sert un test sur $_POST['var'] si c'est pour l'utiliser directement ensuite

Eléphant du PHP | 164 Messages

15 sept. 2005, 00:01

j'ai deja vu ce probleme!

je peux oir le formulaire stp?

Invité
Invité n'ayant pas de compte PHPfrance

15 sept. 2005, 22:01

<?php
/*
http://www.nexen.net/docs/php/annotee/security.database.sql-injection.php?lien=update
*/

if(isset($_POST['date'])) $date = $_POST['date'];
else $date = '';
if(isset($_POST['hour'])) $hour = $_POST['hour'];
else $hour = '';

if(isset($_POST['word'])) $word = $_POST['word'];
else $word = '';
if(isset($_POST['replacement'])) $replacement = $_POST['replacement'];
else $replacement = '';


$host = 'localhost';
$user = 'root';
$pass = '';
$db_name = 'test';

$action = (isset($_GET['action'])) ? $_GET['action'] : ''; 
$id     = (isset($_GET['id']))     ? $_GET['id'] : ''; 


//$word = (isset($_GET['word'])) ? $_GET['word'] : ''; 
//$replacement = (isset($_GET['replacement'])) ? $_GET['replacement']: ''; 	
	
	
//$word = $_POST['word']; // post city as var
//$replacement = $_POST['replacement']; // post city as var


$date=date("d/m/Y");
$hour=date("H:i");

?>
<?php
$connection = mysql_connect($host, $user, $pass) or die(mysql_error());
$db = mysql_select_db($db_name, $connection) or die(mysql_error());

if ($action == 'add')
{
$sql1 = "INSERT INTO censure VALUES ('','$_POST[word]','$_POST[replacement]','$date','$hour')";
$result1 = mysql_query($sql1,$connection) or die('Erreur SQL insertion: '.mysql_error());
echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php?menu=GuestBookCensure\">\n ";
}

if($action == 'del')
   {
$sql2 = "DELETE FROM censure WHERE id='$_GET[id]'";
//ou bien  $sql2 = "DELETE FROM censure WHERE id='". $id ."'";
$result2 = mysql_query($sql2,$connection) or die('Erreur SQL Delete: '.mysql_error()); 
echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php?menu=GuestBookCensure\">\n ";
} 

if($action == 'update')
   {  

$sql3 = "UPDATE censure SET word='".$_POST["word"]."', replacement='".$_POST["replacement"]."' WHERE id='". $id ."'";

$result3 = mysql_query($sql3,$connection) or die('Erreur SQL Update: '.mysql_error()); 
echo "<meta http-equiv=\"refresh\" content=\"10;url=index.php?menu=GuestBookCensure\">\n ";
} 

else
{
?>
<form action="index.php?menu=GuestBookCensure&action=add" method="post" name="form">
  <table width="100%"  class="DivStyle2">
  <tr>
    <td width="40%" align="right">Word:</td>
	<td width="60%"><input type="text" name="word" maxlength="30" size="20" value="" class="input01"></td>
	</tr>
	<tr>
     <td width="40%" align="right">Replace with:</td>
	  <td width="60%">  <input type="text" name="replacement" maxlength="30" size="20" value="***" class="input01"></td>
  </tr>
  <tr>
  <td colspan="2" align="center">
    <input type="submit" value="Send" class="input02">
  </td>
  </tr>
  </table>
</form>
<br>
<?php
$sql = "select * from $table_gbook_censure order by id DESC";
$result = mysql_query($sql,$connection) or die(mysql_error());
$total = mysql_num_rows($result);
if ($total == '')
{
echo 'No bad words';
}
else
{
echo '<center><font color="red">There is&nbsp;' .$total. '&nbsp;bad words</font></center></br>';
//echo "There is $total Rows";
}
?>
<table width="100%" class="DivStyle2">
  <tr>
<td width="20%" align="left">Date</td>
<td width="20%" align="left">Word</td>
<td width="20%" align="left">Replacement</td>
<td width="40%" align="center">Actions</td>
	</tr>
<?php
	while($censure = mysql_fetch_array($result)) {
	
$date = $censure['date'];
$hour = $censure['hour'];
$word = $censure['word'];
$replacement = $censure['replacement'];
?>
<tr>
<td width="20%" align="left"><?php echo "$date"; ?> &nbsp; <?php echo "$hour"; ?></td>
<td width="20%" align="left"><input type="text" name="word" maxlength="30" size="20" value="<?php echo "$word"; ?>" class="input01"></td>
<td width="20%" align="left"><input type="text" name="word" maxlength="30" size="20" value="<?php echo "$replacement"; ?>" class="input01"></td>
<td width="40%" align="right">
<?php
echo "<a href=\"index.php?menu=GuestBookCensure&action=update&id=$censure[id]\" onClick=\"return conf();\">Update</a>";
echo '&nbsp;&nbsp;';
echo "<a href=\"index.php?menu=GuestBookCensure&action=del&id=$censure[id]\" onClick=\"return conf();\">Delete</a>";
?>
</td>
</tr>
<?php
}
}
?>
</table>
<script language="JavaScript">
<!--
function conf() {
    return (confirm("Are you sure?"));
}
//-->
</script>

Mammouth du PHP | 19672 Messages

15 sept. 2005, 23:11

Salut,
c'est dans tes requête que ça bafouille, les concaténation de chaine, ça aide un peu. Proposition de code revu et un peu épuré:
<?php
$date        = (isset($_POST['date']))        ? $_POST['date']        : "";
$hour        = (isset($_POST['hour']))        ? $_POST['hour']        : "";
$word        = (isset($_POST['word']))        ? $_POST['word']        : "";
$replacement = (isset($_POST['replacement'])) ? $_POST['replacement'] : "";
$action      = (isset($_GET['action']))       ? $_GET['action']       : "";
$id          = (isset($_GET['id']))           ? $_GET['id']           : "";

$host = 'localhost';
$user = 'root';
$pass = '';
$db_name = 'test';

$date = date("d/m/Y");
$hour = date("H:i");

$connection = mysql_connect($host, $user, $pass) or die(mysql_error());
$db = mysql_select_db($db_name, $connection) or die(mysql_error());

if ($action == 'add')
{
    $sql1 = "INSERT INTO censure VALUES ('','". $word ."','". $replacement ."','". $date ."','". $hour ."')";
    $result1 = mysql_query($sql1,$connection) or die('Erreur SQL insertion: '.mysql_error());
    echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php?menu=GuestBookCensure\">\n ";
}

elseif($action == 'del')
{
    $sql2 = "DELETE FROM censure WHERE id='". $id ."'";
    $result2 = mysql_query($sql2,$connection) or die('Erreur SQL Delete: '.mysql_error());
    echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php?menu=GuestBookCensure\">\n ";
}

elseif($action == 'update')
{

    $sql3 = "UPDATE censure SET word='". $word ."', replacement='". $replacement ."' WHERE id='". $id ."'";

    $result3 = mysql_query($sql3,$connection) or die('Erreur SQL Update: '.mysql_error());
    echo "<meta http-equiv=\"refresh\" content=\"10;url=index.php?menu=GuestBookCensure\">\n ";
}
else
{
?>
<form action="index.php?menu=GuestBookCensure&action=add" method="post" name="form">
  <table width="100%" class="DivStyle2">
    <tr>
      <td width="40%" align="right">Word:</td>
      <td width="60%"><input type="text" name="word" maxlength="30" size="20" value="" class="input01"></td>
    </tr>
    <tr>
      <td width="40%" align="right">Replace with:</td>
      <td width="60%"> <input type="text" name="replacement" maxlength="30" size="20" value="***" class="input01"></td>
    </tr>
    <tr>
      <td colspan="2" align="center">
        <input type="submit" value="Send" class="input02">
      </td>
    </tr>
  </table>
</form>
<?php
    $sql = "SELECT * FROM ". $table_gbook_censure ." ORDER BY id DESC";
    $result = mysql_query($sql,$connection) or die(mysql_error());
    $total = mysql_num_rows($result);
    if ($total == '')
    {
        echo "<p>No bad words</p>\n";
    }
    else
    {
        echo "<p style=\"color: #f00; text-align: center\">There is ". $total ." bad words</p>\n";
        //echo "There is $total Rows";
    }
?>
<script language="JavaScript" type="text/javascript">
<!--
function conf()
{
    return (confirm("Are you sure?"));
}
//-->
</script>
<table width="100%" class="DivStyle2">
  <tr>
    <td width="20%" align="left">Date</td>
    <td width="20%" align="left">Word</td>
    <td width="20%" align="left">Replacement</td>
    <td width="40%" align="center">Actions</td>
  </tr>
<?php
    while($censure = mysql_fetch_array($result))
    {
        $date        = $censure['date'];
        $hour        = $censure['hour'];
        $word        = $censure['word'];
        $replacement = $censure['replacement'];
?>
  <tr>
    <td width="20%" align="left"><?php echo "$date"; ?> &nbsp; <?php echo "$hour"; ?></td>
    <td width="20%" align="left"><input type="text" name="word" maxlength="30" size="20" value="<?php echo "$word"; ?>" class="input01"></td>
    <td width="20%" align="left"><input type="text" name="word" maxlength="30" size="20" value="<?php echo "$replacement"; ?>" class="input01"></td>
    <td width="40%" align="right">
      <a href="index.php?menu=GuestBookCensure&action=update&id=<?php echo($censure[id]); ?>" onClick="return conf();">Update</a>&nbsp;&nbsp;
      <a href="index.php?menu=GuestBookCensure&action=del&id=<?php echo($censure[id]); ?>" onClick="return conf();">Delete</a>
    </td>
  </tr>
<?php
    }
}
?>
</table>
Observe les modifications dans les requêtes: on simplifie et puisque les variables ont été définies, pourquoi se servir de $_POST ?

Par contre, je ne saisis pas trop ce que tu veux faire avec ceci:
 echo "<meta http-equiv=\"refresh\" content=\"10;url=index.php?menu=GuestBookCensure\">\n ";
Tu mets ça après les trois requêtes : c'est pour recharger la page ? Un Javascript dans ce cas serait plus approprié, une balise meta doit se trouver dans l'en-tête, pas dans le corps de la page :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

16 sept. 2005, 12:22

ca me retourne cette erreur:

Code : Tout sélectionner

Erreur SQL Update: Erreur de syntaxe près de 'id' in c:\program files\easyphp1-7\www\dubaiboy\mybook\FormCe' à la ligne 1

Mammouth du PHP | 19672 Messages

16 sept. 2005, 13:34

Fais afficher la requête en question pour vérifier ce qui cloche.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

16 sept. 2005, 13:40

if($action == 'update')
   {  
$sql3 = "UPDATE censure SET word='". $word ."', replacement='". $replacement ."' WHERE id='". $id ."'"; 
$result3 = mysql_query($sql3,$connection) or die('Erreur SQL Update: '.mysql_error()); 
echo "<meta http-equiv=\"refresh\" content=\"10;url=index.php?menu=GuestBookCensure\">\n ";
} 

Mammouth du PHP | 19672 Messages

16 sept. 2005, 13:42

Non, ce n'est pas ce que je demande: fais afficher avec un echo($sql3) pour voir si la requête générée est correcte dans ton navigateur..
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 45 Messages

11 oct. 2005, 18:07

desole pour le retard, mais ca donne rien, il m'affiche une page vierge

Eléphanteau du PHP | 45 Messages

11 oct. 2005, 18:11

quand je fais ca:
...
elseif($action == 'update')
   {  

echo "Hello";
...
il m'affiche le Hello

Mammouth du PHP | 19672 Messages

11 oct. 2005, 18:20

Tu l'as mis où le echo($sql3) au juste ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 45 Messages

11 oct. 2005, 18:23

juste apres result3 et ca donne:

Code : Tout sélectionner

UPDATE censure SET word='', replacement='' WHERE id='7'les donnees ont ete modifie