Bonjour,
J’ai repris un script php qui crée un formulaire dans lequel on peut transmettre des données à la Bdd et les mettre à jour.
Si je le mets dans le répertoire www en local (sans Modx), il marche très bien mais pas quand je l’intègre en tant que snippet en réinstallallant Modx.
Voici le script :
------------------------------------------------------------------------------------
<?php
// INFOS DE CONNEXION à la BDD
$serveur=’localhost’; // serveur
$user=’root’; // nom d’utilisateur
$password=’’; // mot de passe
$base=’’; // 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(
"véhicules"=>array("id","Nom"),
"mode_paiement"=>array("id","Type","Montant")
);
/*
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
";
}
else {
echo "Erreur lors de l’ajout des données
";
}
}
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
";
}
else {
echo "Erreur lors de la modification des données
";
}
}
function Supprimer($table, $where) {
$delete=mysql_query("delete from $table where $where");
if ($delete==TRUE) {
echo "Les données ont été correctement effacées
";
}
else {
echo "Erreur lors de la suppression des données
";
}
}
?>
<!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" />
<link type="text/css" href="assets\templates\mon_fichier_css.css" rel="stylesheet" />
<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">
Sports
</div>
<div class="liensmenu">
<ul>
<li><a href="<?php echo
$_SERVER["PHP_SELF"]?>?table=véhicules">Gérer les véhicules</a></li>
<li><a href="<?php
echo$_SERVER["PHP_SELF"]?>?table=véhiculess&q=Ajouter">Ajouter une entrée</a></li>
</ul>
</div>
<div class="titremenu">
Modes de paiement
</div>
<div class="liensmenu">
<ul>
<li><a href="<?php echo
$_SERVER["PHP_SELF"]?>?table=mode_paiement">Gérer les paiements</a></li>
<li><a href="<?php echo
$_SERVER["PHP_SELF"]?>?table=mode_paiement&q=Ajouter">Ajouter une entrée</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 "";
} 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 entrée dans la
table \"$table\"</div>";
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>";
$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>";
$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é !");
?>
» <?=$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>
------------------------------------------------------------------------------
Les liens "gérer les véhicules" et "gérer les paiements" fonctionnent mais les liens "ajouter", "modifier", ou "supprimer" aboutissent à : 404 page not found alors que je voudrais qu’ils rafraichissent ma page en cours (comme "gérer les véhicules" et "gérer les paiements").
Le lien vers une feuille de style externe pour mettre en forme, n’aboutit pas non plus.
Et enfin, une dernière question : si je renseigne les codes d’accès à mysql dans ce snippet (éventuellement dans un include) et que ce snippet n’est appelé que depuis une page que seul un utilisateur web loggué peut voir, est ce que ma Bdd est sécurisée ou sinon, comment je dois faire ?
Excusez-moi pour toutes ces questions mais ça fait un bon moment que je galère sur ces problèmes.
Merci d’avance.
PS : version de Modx : 0.9.6.