modifier / supprimer des champs

Invité
Invité n'ayant pas de compte PHPfrance

21 déc. 2006, 18:12

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 déc. 2006, 18:16

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){
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 1961 Messages

21 déc. 2006, 18:22

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
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

21 déc. 2006, 18:29

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']);

ViPHP
ViPHP | 1961 Messages

21 déc. 2006, 18:36

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());
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

21 déc. 2006, 18:39

 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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 déc. 2006, 18:43

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 ? :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 1961 Messages

21 déc. 2006, 18:45

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 déc. 2006, 18:53

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 ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 1961 Messages

21 déc. 2006, 18:56

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:
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

21 déc. 2006, 20:13

ca marche mais les champs sont vide :(

ViPHP
ViPHP | 1961 Messages

21 déc. 2006, 20:20

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 = ''; 
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

21 déc. 2006, 20:29

$titre = isset($_POST['titre']) ? $_POST['titre'] : "Test"; 
ca donne Test en fin de compte

ViPHP
ViPHP | 1961 Messages

21 déc. 2006, 20:31

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

21 déc. 2006, 20:35

<?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();
}
	?>