Page 1 sur 4

modifier / supprimer des champs

Posté : 21 déc. 2006, 18:12
par Invité
salut

je passe un script de modification et suppression de champs mais ca donne rien en resultat:
<?php
include ('config.php');
if(isset($_POST['titre'])) $titre = $_POST['titre'];
else $titre = '';
if(isset($_POST['message'])) $message = $_POST['message'];
else $message = '';
if(isset($_POST['url'])) $url = $_POST['url'];
else $url = '';
if(isset($_POST['date'])) $date = $_POST['date'];
else $date = '';
$act = ( isset($_GET["act"]) ) ? $_GET["act"] : Null;
if(isset($_GET['id'])) $id = $_GET['id'];
else $id='';


$date = date("d/m/Y");

//http://www.editeurjavascript.com/trucs/index-cat_2.php
//http://www.nexen.net/docs/php/annotee/function.htmlspecialchars.php
//http://www.nexen.net/docs/php/annotee/function.nl2br.php
//http://www.nexen.net/docs/php/annotee/function.htmlentities.php

$connection = mysql_connect($dbhost, $dblogin, $dbpassword) or die ($ErrorConnection);
$db = mysql_select_db($dbname, $connection) or die ($ErrorDBase);
$select = 'SELECT * FROM '.$scroll_table;
$result = mysql_query($select,$connection) or die ($ErrorSelect);
$Total = mysql_num_rows($result); 

if($act=="del")
   {
$sql1 = "DELETE FROM $scroll_table WHERE id='$_GET[id]'";
 //mysql_query("DELETE FROM twiggy_messages WHERE id='$_GET[id]'");
$result1 = mysql_query($select,$connection) or die ($ErrorDelete);  
$Total1 = mysql_num_rows($result1); 
if ($Total1 == '1'){
echo "item deleted";
echo "<meta http-equiv=\"refresh\" content=\"5;url=http://google.com\">\n ";
}
else
{
echo "item notdeleted";
}
}
if($act=="update")
   {
$sql2 = "Update $scroll_table set titre=$titre , url=$url , message=$message WHERE
 id=".$_GET['id'];
$result2 = mysql_query($select,$connection) or die ($ErrorUpdate);  
$Total2 = mysql_num_rows($result2); 
if ($Total2 == '1'){
echo "item updated";
echo "<meta http-equiv=\"refresh\" content=\"5;url=http://google.com\">\n ";
}
else
{
echo "item not updated";
}
	mysql_close();
}
	?>
il affiche toujouts que la modification ou la suppression n'est pas passee.

merci pr votre aide

Posté : 21 déc. 2006, 18:16
par zeus
Est-ce normal que dans ces 2 lignes, tu mettes ta requête dans $sql1 et que tu executes $select ? :?
$sql1 = "DELETE FROM $scroll_table WHERE id='$_GET[id]'";
 //mysql_query("DELETE FROM twiggy_messages WHERE id='$_GET[id]'");
$result1 = mysql_query($select,$connection) or die ($ErrorDelete);   
De plus, je ne suis pas sûr qu'un DELETE renvoi une valeur dans le mysql_num_rows()

J'aurais plutôt écrit
//Si la requête de suppression a fonctionnée
if ($Total1 !== false){

Posté : 21 déc. 2006, 18:22
par Ajoloca
Bonjour.
De plus, je ne suis pas sûr qu'un DELETE renvoi une valeur dans le mysql_num_rows()
Je confirme que mysql_num_rows() retourne le nombre de rangs d'un résultat SELECT, SHOW, etc

Mai pour les requêtes de type action DELETE, UPDATE, INSERT, ...
il faut utiliser mysql_affected_rows() pour avoir ce nombre

Posté : 21 déc. 2006, 18:29
par Invité
ca marche pour la suppression mais ca marche pas pour la modification:
mysql_query ("Update $scroll_table set titre=$titre , url=$url , message=$message WHERE id=".$_GET['id']);

Posté : 21 déc. 2006, 18:36
par Ajoloca
Re,

Il faut toujours tester les retour de MySQL

Utilise ceci, on aura au moins l'erreur, mais on peut déjà dire que c'est bizarre des champs texte sans " ou '. MySQL nous en dira plus
$qryUpdate = "Update $scroll_table set titre=$titre , url=$url , message=$message WHERE id=".$_GET['id'];
mysql_query ($qryUpdate) or die('ERR_SQL :<br />'. $qryUpdate . '<br />' . mysql_error());

Posté : 21 déc. 2006, 18:39
par Invité
 ERR_SQL :
Update scroll_table set titre= , url= , message= WHERE id=39
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' url= , message= WHERE id=39' at line 1

Posté : 21 déc. 2006, 18:43
par Ryle
Et il n'y a rien qui te choque dans la requête que tu as généré ?
genre des valeurs absente ou des chaines de caractères sql mal délimitées ? mmh ? :)

Posté : 21 déc. 2006, 18:45
par Ajoloca
Re,

Comme tu peux le constater tes variables ($titre , $url et $message) sont vides et comme elles ne sont pas entourées de " ni de ' ça donne une erreur.

Il faut corriger ça comme ceci
$qryUpdate = 'Update '.$scroll_table.' set titre="'.$titre.'", url="'.$url.'", message="'.$message.'" WHERE id='.$_GET['id'];
mysql_query ($qryUpdate) or die('ERR_SQL :<br />'. $qryUpdate . '<br />' . mysql_error());
Je ne te garantis pas que ça face ce que tu veux (mettre les champs à vide) mais ça marchera.

Posté : 21 déc. 2006, 18:53
par Ryle
Raaah bah oui mais si tu lui souffles la réponse aussi.... :)

Ceci dit, il vaut mieux préférer les apostrophes (') aux guillemets (") pour délimiter une chaine en sql. En effet beaucoup de sgbd (oracle, db2, ...) refuseront le second. MySql le tolère, mais ce n'est pas pour autant qu'il faut en user ;)

Posté : 21 déc. 2006, 18:56
par Ajoloca
Re,

Comme je ne sais pas si il a pris les précautions pour protéger les apostrophes dans les chaînes, la solution de facilité = les guillemets. :lol:

Posté : 21 déc. 2006, 20:13
par Invité
ca marche mais les champs sont vide :(

Posté : 21 déc. 2006, 20:20
par Ajoloca
Re,
Je ne te garantis pas que ça face ce que tu veux (mettre les champs à vide) mais ça marchera.
Donc ton PB se situe au niveau du passage de paramètres, quand tu les récupères ils sont vides.
Tu devras regarder à ce niveau
if(isset($_POST['titre'])) $titre = $_POST['titre'];
else $titre = '';
if(isset($_POST['message'])) $message = $_POST['message'];
else $message = '';
if(isset($_POST['url'])) $url = $_POST['url'];
else $url = ''; 

Posté : 21 déc. 2006, 20:29
par Invité
$titre = isset($_POST['titre']) ? $_POST['titre'] : "Test"; 
ca donne Test en fin de compte

Posté : 21 déc. 2006, 20:31
par Ajoloca
Re,

C'est ce que je te dis, tu ne reçois pas tes paramètres.

Regarde dans la page qui appelle celle-ci comment tu les envois (post ou get) et aussi si ce sont les bons noms.

Posté : 21 déc. 2006, 20:35
par Invité
<?php
include ('config.php');
$titre = isset($_POST['titre']) ? $_POST['titre'] : ''; 
if(isset($_POST['message'])) $message = $_POST['message'];
else $message = '';
if(isset($_POST['url'])) $url = $_POST['url'];
else $url = '';
if(isset($_POST['date'])) $date = $_POST['date'];
else $date = '';
if(isset($_GET['id'])) $id = $_GET['id'];
else $id='';
//$page = isset($_GET["page"]) ? $_GET["page"] : "";

$date = date("d/m/Y");

$connection = mysql_connect($dbhost, $dblogin, $dbpassword) or die ($ErrorConnection);
$db = mysql_select_db($dbname, $connection) or die ($ErrorDBase);
$select = "SELECT * FROM $scroll_table";
$result = mysql_query($select,$connection) or die ($ErrorSelect);
$Total = mysql_num_rows($result);

if($Total=='0') 
{
echo $ErrorScroll1;
}
else
{
?>
<form method="POST" name="scroll_view" action="index.php?action=Scroll_Action">
<div align="center" dir="rtl">
<table width="100%">
<tr><td colspan="4">المجموع:&nbsp;&nbsp; <? echo $Total; ?></td>
<tr>
<td>Titre</td>
<td>Message</td>
<td>URL</td>
<td>Action</td></tr>
<?
//////////////////////////////////// multipages partie 1 debut /////////////////////////////
//donner une valeur au nombre de message par page
$NombreDeMessagesParPage = '4'; // Essayez de changer ce nombre pour voir :o)
//calculer le nombre de page avec arrondissement sup ceil()
$NombreDePages  = ceil($Total / $NombreDeMessagesParPage); // Total = 10 => 10/4=2.5 => ceil=3 pages

//on met page comme variable
if (isset($_GET['page']))
{
//    $page = $_GET['page']; // On rꤵp鳥 le num곯 de la page indiqu顤ans l'adresse (admin.php?page=4)
    $page = intval($_GET['page']);
}
else // La variable n'existe pas, c'est la premi鳥 fois qu'on charge la page
{
    $page = 1; // On se met sur la page 1 (par dꧡut)
}

// On calcule le num곯 du premier message qu'on prend pour le LIMIT de MySQL
$PremierMessageAafficher = ($page - 1) * $NombreDeMessagesParPage;
$select1 = 'SELECT * FROM '.$scroll_table.' ORDER BY id DESC LIMIT '. $PremierMessageAafficher . ', '. $NombreDeMessagesParPage;
$result1 = mysql_query($select1,$connection) or die ($ErrorSelect);
//////////////////////////////////// multipages partie 1 fin /////////////////////////////

    // on va scanner tous les tuples un par un 
    while ($data = mysql_fetch_array($result1)) {
        // on affiches les r괵ltats dans la <table>
$titre = $data['titre'];
$message = $data['message'];
$url = $data['url'];
$id = $data['id'];

?>

<tr><td>
<input type="text" name="titre" size="20" maxlength="50" value="<? echo $titre; ?>" class="input01">
</td>
<td>
<textarea  name="message" cols="45" rows="8" class="textarea01"><? echo $message; ?></textarea>
</td>
<td>
<input type="text" name="url" size="20" maxlength="50" value="<? echo $url; ?>" class="input01">
</td>
<td>
<?

echo '<a href="'.$url_admin.'/index.php?rub=Scroll_Action&act=update&id='.$id.'"><img src="'.$url_du_site.'/images/update.gif" alt="تعديل البيانات" class="imglink"></a>';
echo '&nbsp;&nbsp';
echo '<a href="'.$url_admin.'/index.php?rub=Scroll_Action&act=del&id='.$id.'"><img src="'.$url_du_site.'/images/del.gif" alt="مسح البيانات" class="imglink"></a>';
?>
</td></tr>
</div>
<?php
    } // fermeture de while
?>	
<td>
<form name="formpages">
<?
//http://www.htmlcodetutorial.com/forms/_SELECT_onChange.html
?>
<SELECT name="ListeUrl" size=1 ONCHANGE="location = this.options[this.selectedIndex].value;" class="select01">
<option selected>انتقل إلى الصفحة</option>
<?
for ($i = 1 ; $i <= $NombreDePages ; $i++)
{
    echo '<center><option value="'.$url_admin.'/index.php?rub=Scroll_View&page=' . $i . '"><a href="'.$url_admin.'/index.php?rub=Scroll_View&pagepage=' . $i . '">' . $i . '</a></option></center>';
}
?>
</select>
</form>
</td></tr>
<tr><td>عدد الصفحات:&nbsp;&nbsp; <? echo $NombreDePages; ?></td></tr>
<?

mysql_free_result ($result); 
mysql_free_result ($result1); 
// on ferme la connexion ࡬a base de donn꦳. 
mysql_close (); 
    } // fermeture de else {}
?>
</table>
</form>
<?

if ($i != '0' && $i > '1' && $i < $NombreDePage){
$suivant = $_GET[i] + 1; // on ajoute 1 au numero de page en cours 
echo '<a href="'.$url_admin.'/index.php?rub=Scroll_View&page='.$suivant.'">التالي</a>'; //le lien pour les pages suivantes
}
if($NombreDePages !='0' && $i > '1' && $i< '10')
{
echo '&nbsp;&nbsp;<a href="javascript: history.back();">السابق</a>'; // retour page précédente, ici version javascript 
} 

?>

et ca envoi ici:
<?php
include ('config.php');
//if(isset($_POST['titre'])) $titre = $_POST['titre'];
//else $titre = '';
$date   = (isset($_POST['date']))   ? $_POST['date']   : ''; 
$titre = isset($_POST['titre']) ? $_POST['titre'] : ''; 
if(isset($_POST['message'])) $message = $_POST['message'];
else $message = '';
if(isset($_POST['url'])) $url = $_POST['url'];
else $url = '';
if(isset($_POST['date'])) $date = $_POST['date'];
else $date = '';
$act = ( isset($_GET["act"]) ) ? $_GET["act"] : Null;
if(isset($_GET['id'])) $id = $_GET['id'];
else $id='';


$date = date("d/m/Y");

//http://www.editeurjavascript.com/trucs/index-cat_2.php
//http://www.nexen.net/docs/php/annotee/function.htmlspecialchars.php
//http://www.nexen.net/docs/php/annotee/function.nl2br.php
//http://www.nexen.net/docs/php/annotee/function.htmlentities.php

$connection = mysql_connect($dbhost, $dblogin, $dbpassword) or die ($ErrorConnection);
$db = mysql_select_db($dbname, $connection) or die ($ErrorDBase);
$select = 'SELECT * FROM '.$scroll_table;
$result = mysql_query($select,$connection) or die ($ErrorSelect);
$Total = mysql_num_rows($result); 

if($act=="del")
   {
mysql_query("DELETE FROM $scroll_table WHERE id='$_GET[id]'");

 //mysql_query("DELETE FROM twiggy_messages WHERE id='$_GET[id]'");
 //echo $sql1;
//$result1 = mysql_query($select,$connection) or die ($ErrorDelete);  
$Total1 =  mysql_affected_rows($result); 
if ($Total1 !== false){ 
echo "item deleted";
echo "<meta http-equiv=\"refresh\" content=\"5;url=http://google.com\">\n ";
}
else
{
echo "item notdeleted";
}
}
if($act=="update")
   {
$qryUpdate = 'Update '.$scroll_table.' set titre="'.$titre.'", url="'.$url.'", message="'.$message.'" WHERE id='.$_GET['id']; 
mysql_query ($qryUpdate) or die('ERR_SQL :<br />'. $qryUpdate . '<br />' . mysql_error()); 

//$qryUpdate = 'Update '.$scroll_table.' set titre="'.$titre.'", url="'.$url.'", message="'.$message.'" WHERE id='.$_GET['id']; 
//$query = "UPDATE membres SET email = '$email', secret = '$pass1sql', nom = '$nomsql', prenom = '$prenomsql'$dummy, cookie = '$dureecookie' WHERE id = '$champid'";
//$result2 = mysql_query($select,$connection) or die ($ErrorUpdate);  
$Total2 = mysql_affected_rows($result); 
if ($Total2 !== false){ 
echo "item updated";
echo "<meta http-equiv=\"refresh\" content=\"5;url=http://google.com\">\n ";
}
else
{
echo "item not updated";
}
	mysql_close();
}
	?>