8796 sujets

Développement web côté serveur, CMS

bonjour,

Normalement le code compte le nombre total de messages dans la table. S'il y en a par exemple plus de 3, il supprime le plus vieux.
Mais lorsque je fais rentrer des messages, il affiche des d’erreurs et rien n’est supprimé dans la table.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\vberset_du_jour\Modification.php on line 24



<?php	
	// Connexion
	include ("Connexion.php");
	
	// Récupération des variables
	$ID = $_POST['ID'];
	$Verset = $_POST['verset'];
	$Reference = $_POST['reference'];
	$Existe = $_POST['existe'];
	
	
	// je recupere le dernier mess
$dermess = mysql_query("SELECT * FROM verset_du_jour WHERE id=(SELECT max(id) FROM verset_du_jour)");
$dermessage = mysql_fetch_array($dermess);
$plusvieux =($dermessage['id']-3);
//je le compare avec celui-ci
if ($dermessage['verset']==$Verset and $dermessage['reference']==$Reference)
{
	
	if (empty($Verset))
	{
			echo "Veuillez remplir le champ &quot;Verset&quot; <br />";
			echo "<a href='javascript:history.back()'>Retour</a>";
			exit();
	}

	if (empty($Reference))
	{
			echo "Veuillez remplir le champ &quot;Reference&quot; <br />";
			echo "<a href='javascript:history.back()'>Retour</a>";
			exit();
	}

	// Mise à jour ou création du verset suivant condition existe oui ou non
	// Si il existe 
	if ($Existe=="oui")
		{ 
		$sql = " UPDATE `VersetDuJour` SET `Verset` = '$Verset', `Reference` = '$Reference' WHERE `ID` = '$ID' "; 
		$sql2 = "ALTER TABLE `VersetDuJour` ORDER BY `ID`";
		$result = mysql_query($sql);
	
		if (!$result)
		{
		echo "<form><fieldset style=\"padding:5px;\"><legend>Administration du script</legend>
		 &quot;".mysql_error()."&quot;<br />\n
		 <a href='javascript:history.back()'>Retour</a></fieldset></form>";
		}
		else
		{
		echo "<form><fieldset style=\"padding:5px;\">
		<legend>Administration du script</legend>La modification est effectu&eacute;e<br />\n
		<a href='javascript:history.back()'>Retour</a></fieldset></form>";
		}
		}
	elseif ($Existe=="non")  // Si il n'existe pas
		{ 
		$sql = "INSERT INTO `VersetDuJour` VALUES('$ID','$Verset','$Reference');"; 
		$sql2 = "ALTER TABLE `VersetDuJour` ORDER BY `ID`";
		$result = mysql_query($sql);
	
		if (!$result)
		{
		echo "<form><fieldset style=\"padding:5px;\"><legend>Administration du script</legend>
		 &quot;".mysql_error()."&quot;<br />\n
		 <a href='javascript:history.back()'>Retour</a></fieldset></form>";
		}
		else
		{
		echo "<form><fieldset style=\"padding:5px;\">
		<legend>Administration du script</legend>La cr&eacute;ation est effectu&eacute;e<br />\n
		<a href='javascript:history.back()'>Retour</a></fieldset></form>";
		}
		//On compte le nombre d'entrees
$entrees = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM verset_du_jour ");
$nombre = mysql_fetch_array($entrees);
//Si + de 50:
if ($nombre['nbre_entrees'] > 4)
{
//je supprime le plus vieux
mysql_query("DELETE FROM verset_du_jour WHERE id=$plusvieux")or die(mysql_error());
}
//et je deco
mysql_close($conn);

}
}
?>




Voici le code d’origine

<?php	
	// Connexion
	include ("Connexion.php");
	
	// Récupération des variables
	$ID = $_POST['ID'];
	$Verset = $_POST['verset'];
	$Reference = $_POST['reference'];
	$Existe = $_POST['existe'];
	
	if (empty($Verset))
	{
			echo "Veuillez remplir le champ &quot;Verset&quot; <br />";
			echo "<a href='javascript:history.back()'>Retour</a>";
			exit();
	}

	if (empty($Reference))
	{
			echo "Veuillez remplir le champ &quot;Reference&quot; <br />";
			echo "<a href='javascript:history.back()'>Retour</a>";
			exit();
	}

	// Mise à jour ou création du verset suivant condition existe oui ou non
	// Si il existe 
	if ($Existe=="oui")
		{ 
		$sql = " UPDATE `VersetDuJour` SET `Verset` = '$Verset', `Reference` = '$Reference' WHERE `ID` = '$ID' "; 
		$sql2 = "ALTER TABLE `VersetDuJour` ORDER BY `ID`";
		$result = mysql_query($sql);
	
		if (!$result)
		{
		echo "<form><fieldset style=\"padding:5px;\"><legend>Administration du script</legend>
		 &quot;".mysql_error()."&quot;<br />\n
		 <a href='javascript:history.back()'>Retour</a></fieldset></form>";
		}
		else
		{
		echo "<form><fieldset style=\"padding:5px;\">
		<legend>Administration du script</legend>La modification est effectu&eacute;e<br />\n
		<a href='javascript:history.back()'>Retour</a></fieldset></form>";
		}
		}
	elseif ($Existe=="non")  // Si il n'existe pas
		{ 
		$sql = "INSERT INTO `VersetDuJour` VALUES('$ID','$Verset','$Reference');"; 
		$sql2 = "ALTER TABLE `VersetDuJour` ORDER BY `ID`";
		$result = mysql_query($sql);
	
		if (!$result)
		{
		echo "<form><fieldset style=\"padding:5px;\"><legend>Administration du script</legend>
		 &quot;".mysql_error()."&quot;<br />\n
		 <a href='javascript:history.back()'>Retour</a></fieldset></form>";
		}
		else
		{
		echo "<form><fieldset style=\"padding:5px;\">
		<legend>Administration du script</legend>La cr&eacute;ation est effectu&eacute;e<br />\n
		<a href='javascript:history.back()'>Retour</a></fieldset></form>";
		}
		}
	
	
	
?>




-- Structure de la table `versetdujour`
--

CREATE TABLE IF NOT EXISTS `versetdujour` (
  `ID` text NOT NULL,
  `Verset` text NOT NULL,
  `Reference` text NOT NULL,
  PRIMARY KEY (`ID`(4))
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Contenu de la table `versetdujour`
--



merci pour votre
Salut,

ben en l'état il est impossible de tester ton code : le premier plante puisqu'il teste une valeur MAX de ID alors que ce dernier est de type text (il devrait plus probablement être de type INT en auto-increment) et que le second affiche directement Veuillez remplir le champ "Verset" Smiley rolleyes

Par ailleurs tu ne semble pas connaître l'utilisation de l'élément FORM puisque tu mets des liens dedans. Smiley rolleyes Smiley rolleyes

Bref... c'est un peu trop laborieux pour espérer une réponse.