8792 sujets

Développement web côté serveur, CMS

Bonjour,

Voilà, j'ai un script pour gérer des informations sur la première page de mon site :


<?php

// INFOS DE CONNEXION à la BDD
$serveur=''; // serveur
$user=''; // nom d'utilisateur
$password=''; // mot de passe
$base='TRUC'; // nom de la base contenant les tables
/*
Noms des tables et leurs champs :
Note : il est obligatoire que vos tables disposent d'un champ "id" bénéficiant de l'option d'auto-incrémentation ou étant une clé primaire
S'il existe un champ "mdp" (mot de passe), son contenu sera obligatoirement caché lors du listage des entrées de la table.

Dans l'exemple ci-dessous, la première entrée, qui est en fait un sous-tableau, est le nom de la table à administrer.
dans le sous-tableau, vous devez mettre le nom exact des champs que vous souhaitez administrer (peu importe l'ordre)
*/
$champs=array(
	"news"=>array("date","titre","texte_news")
);
/* 
Pour finir, vous devez modifier les liens apparaissant dans le cadre "menu" plus bas dans cette page. Prenez exemple sur les liens existants pour
en créer d'autres. La syntaxe est la suivante :
<a href="<?=$_SERVER["PHP_SELF"]?>?table=NOM_DE_LA_TABLE&q=ACTION_A_EFFECTUER">NOM_DU_LIEN</a>
Avec ACTION_A_EFFECTUER valant "Ajouter" si vous voulez ajouter une entrée dans la table ou valant "" si vous voulez simplement lister.
*/


// Connexion à la base
$connexion = mysql_connect("$serveur","$user","$password") or die ("Impossible de se connecter à la base de données");
// sélection de la base
mysql_select_db("$base",$connexion);

// FONCTIONS DIVERSES
function Ajouter($table, $query) {
$insert=mysql_query("insert into $table set $query");
if ($insert==TRUE) {
echo "Les données ont été correctement ajoutées<br />";
}
else {
echo "Erreur lors de l'ajout des données<br />";
}
}
function Modifier($table, $query, $where) {
$update=mysql_query("update $table set $query where $where");
if ($update==TRUE) {
echo "Les données ont été correctement modifiées<br />";
}
else {
echo "Erreur lors de la modification des données<br />";
}
}
function Supprimer($table, $where) {
$delete=mysql_query("delete from $table where $where");
if ($delete==TRUE) {
echo "Les données ont été correctement effacées<br />";
}
else {
echo "Erreur lors de la suppression des données<br />";
}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Administration des bdd</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="imagetoolbar" content="no" />
<meta content="TRUE" name="MSSmartTagsPreventParsing" />

<style type="text/css" media="screen">
@import url( css.css );
</style>
<script language="Javascript">
function confirmation(url)
{
if(confirm('Voulez-vous vraiment supprimer ?'))
document.location.href=url
}
</script>
</head>

<body>
<!-- CADRE PRINCIPAL //-->
<div id="cadreprincipal">
	<!-- MENU //-->
	<div id="menu">
		<div class="titremenu">
			Infos
		</div>
		<div class="liensmenu">
			<ul>
				<li><a href="<?=$_SERVER["PHP_SELF"]?>?table=news">Gérer les infos</a></li>
				<li><a href="<?=$_SERVER["PHP_SELF"]?>?table=news&q=Ajouter">Ajouter une info</a></li>
			</ul>
		</div>		
	</div>
	
	<div id="main">
	<?php
	/////////////////// PROGRAMME PRINCIPAL
	if (isset($_GET["q"])) { $q=$_GET["q"]; } elseif(isset($_POST["q"])) { $q=$_POST["q"]; } else { $q=""; }
	if (isset($_GET["sq"])) { $sq=$_GET["sq"]; } elseif(isset($_POST["sq"])) { $sq=$_POST["sq"]; } else { $sq=""; }	
	if (!isset($_GET["table"])) {
		echo "<div class=\"erreur\">Erreur ! La page n'a pas été appelée avec les bons paramètres.</div>";
	} else {
		$table=$_GET["table"];
		$prefixe=""; // Utile si vous désirez préfixer automatiquement les tables
		$table_utilisee="$prefixe".$table."";
				
		switch($q) {
			/// Formulaire d'ajout
			case "Ajouter";
				$nb_champs=sizeof($champs["$table"]);
				echo "<div class=\"titrecorps\">Ajout d'une information dans la table \"$table\"</div>";
				?><br /><?php
				echo "<div class=\"souligne\"> Rentrez la date de cette manière : 0000-00-00 00:00:00</div>";
				?><br /><?php
				if ($sq=="Valider") {
					$valeurs="";
					$i=0;	
					while($i<$nb_champs) {
						$nom_champ=$champs["$table"]["$i"];	
						if ($i!=0) {
							$valeurs.=" ,";
						}
						$valeurs.="$nom_champ=\"$_POST[$nom_champ]\"";				
					$i++;
					}
					Ajouter("$table_utilisee",$valeurs);
					?>				
					<script language="Javascript">
					window.location="<? echo "".$_SERVER["PHP_SELF"]."?table=$table&msg=1"; ?>";
					</script>
					<?php
				} else {
					echo "
					<form action=\"".$_SERVER["PHP_SELF"]."?table=$table&q=Ajouter&sq=Valider\" method=\"post\">
					<table border=\"0\">";
					$i=0;	
					while($i<$nb_champs) {
						$nom_champ=$champs["$table"]["$i"];
						$nom_champ_maj=strtoupper($nom_champ);
						echo "
						<tr>
							<td><b>$nom_champ_maj</b></td><td><textarea name=\"$nom_champ\" cols=\"40\" rows=\"3\"></textarea></td>
						</tr>";
						$i++;
					}
					echo "
					<tr valign=\"top\">
						<td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"Valider\"></td>
					</tr>
					</table>
					</form>";
				}
			break;
			
			case "Modifier";
				$nb_champs=sizeof($champs["$table"]);
				echo "<div class=\"titrecorps\">Modification d'une entrée de la table \"$table\"</div>";
				?><br /><?php
				$id=$_GET["id"];			
				if ($sq=="Valider") {
					$valeurs="";
					$i=0;	
					while($i<$nb_champs) {
						$nom_champ=$champs["$table"]["$i"];	
						if ($i!=0) {
							$valeurs.=" ,";
						}
						$valeurs.="$nom_champ=\"$_POST[$nom_champ]\"";				
					$i++;
					}
					Modifier("$table_utilisee",$valeurs,"id=\"$id\"");
					?>				
					<script language="Javascript">
					window.location="<? echo "".$_SERVER["PHP_SELF"]."?table=$table&msg=2"; ?>";
					</script>
					<?php
				} else {
				
				$select=mysql_query("select * from $table_utilisee where id=\"$id\"");
				$res=mysql_fetch_array($select);
				echo "
				<form action=\"".$_SERVER["PHP_SELF"]."?table=$table&q=Modifier&sq=Valider&id=$id\" method=\"post\">
				<table border=\"0\">";
				$i=0;	
				while($i<$nb_champs) {
					$nom_champ=$champs["$table"]["$i"];
					$nom_champ_maj=strtoupper($nom_champ);
					echo "
					<tr>
						<td>$nom_champ_maj</td><td><textarea name=\"$nom_champ\" cols=\"40\" rows=\"3\">".$res["$nom_champ"]."</textarea></td>
					</tr>";
					$i++;
				}
				echo "
				<tr valign=\"top\">
					<td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"Valider\"></td>
				</tr>
				</table>
				</form>";
				
				}
			break;
			
			case "Supprimer";
			echo "<div class=\"titrecorps\">Suppression d'une entrée de la table \"$table\"</div>";
			Supprimer("$table_utilisee","id=\"$_GET[id]\"");
			?>				
			<script language="Javascript">
			window.location="<? echo "".$_SERVER["PHP_SELF"]."?table=$table&msg=3"; ?>";
			</script>
			<?php
			break;
		
			
			default:
			echo "<div class=\"titrecorps\">Enregistrements de la table \"$table\" :</div>";
			?><br /><?php
			echo "<div class=\"souligne\"> [M] = Modifier l'info	[S] = Supprimer l'info</div>";
			?><br /><?php
			$ordre=$champs["$table"]["0"];
			$select=mysql_query("select * from $table_utilisee order by $ordre ASC");
			$nb_enregistrements=mysql_num_rows($select);
			$tab_msg=array(
							"1"=>"Les données ont été correctement ajoutées !",
							"2"=>"Les données ont été correctement modifiées !",
							"3"=>"Suppression de l'enregistrement effectué !");
			?>
			&raquo; <?=$nb_enregistrements?> enregistrement(s) dans cette liste.
			<?php
			if (isset($_GET["msg"])) {
				echo "<div class=\"erreur\">".$tab_msg[$_GET["msg"]]."</div>";
			}
			?>
			<table border="1">
				<tr align="center"><td><b>ACTIONS</b></td>
				<?php	
				$nb_champs=sizeof($champs["$table"]);
				while(list($k,$nom_champ)=each($champs["$table"])) {
					$nom_champ_maj=strtoupper($nom_champ);
					echo "<td><b>$nom_champ_maj</b></td>"; 
				}
				?>
				</tr>
			<?php
			while ($res=mysql_fetch_array($select)) {
				echo "<tr><td>[<a href=\"".$_SERVER["PHP_SELF"]."?table=$table&q=Modifier&id=".$res["id"]."\">M</a>] - [<a href=\"javascript:confirmation('".$_SERVER["PHP_SELF"]."?table=$table&q=Supprimer&id=".$res["id"]."');\">S</a>]</td>";
				$i=0;	
				while($i<$nb_champs) {
					$nom_champ=$champs["$table"]["$i"];
					if ($nom_champ=="mdp") {
						echo "<td>********</td>";
					} else {
						echo "<td>".$res["$nom_champ"]."</td>"; 
					}
					$i++;
				}
				echo "</tr>";
			}		
			?>
			</table>
			<?php
			break;
		}
	}
	mysql_close();
	?>
	</div>
</div>
</body>
</html>


Et je les affiche ainsi :


<?php
// on se connecte à notre base
$base = mysql_connect ('sql1', 'TRUC', '***FELIPE***'); 
mysql_select_db('TRUC', $base);

// lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)
$sql = 'SELECT titre, date, texte_news FROM news ORDER BY date DESC;';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on compte le nombre de news stockées dans la base de données
$nb_news = mysql_num_rows($req);

if ($nb_news == 0) {
    echo 'Aucune news enregistrée.';
}
else {
    // si on a au moins une news, on l'affiche
    while ($data = mysql_fetch_array($req)) {

        // on décompose la date 
        sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec);
	
	
		// on affiche les résultats
		?><h1><?php
        echo  stripslashes(htmlentities(trim($data['titre']))) , '<br />';
		?></h1><?php
		?><p><em><?php
        echo 'Le : ' , $jour , '/' , $mois , '/' , $an , ' à ' , $heure , ':' , $min , ':' , $sec , '<br />';
		?></em></p><?php
		?><p><?php
        echo nl2br(stripslashes(htmlentities(trim($data['texte_news'])))) , '<br />';
		?></p><?php
		
    }
}
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);

// on ferme la connexion à la base de données
mysql_close ();
?>


Je voudrais rajouter des photos à ces news.

1-Quel champs rajouter dans ma BDD
2-comment l'afficher

Merci
Modifié par Julihus (14 Mar 2006 - 19:05)
Si j'étais toi je cacherais les user de connection Smiley biggol

Si un modo passe ! Smiley lol

Pour ton script, change de script !
Administrateur
Smiley eek user, mot de passe (surtout) et table modifiées (EDIT: 1 fois dans chaque cadre, j'ai rien oublié?)
Modifié par Felipe (13 Mar 2006 - 00:13)
Pourquoi changer de script, il n'est pas bon ?

Je cherche quelquechose de simple pour qu'un utilisateur lambda puisse, via un formulaire, mettre une information avec des photos pour ensuite s'afficher sur cette page :

http://www.ville-unieux.fr/rep_test

Aidez moi, je suis un peu perdue dans tous ces scripts !!
Modifié par Julihus (14 Mar 2006 - 19:08)