Forum Clubic

[PHP/MySQL]Création d'une console d'admin?


Bonjour à tous

aller je viens une fois de plus susciter votre aide en matiere de PHP/MySQL.
Je voudrais faire une console d’administration pour le site de la SCI d’un pote.

C’est surement très simple mais comme je n’y connais pas grand chose… je tatonne ^^

J’ai une base tout simple avec 2 tables :

Locations

CREATE TABLE `locations` (
  `loc_id` int(11) NOT NULL auto_increment,
  `loc_ref` varchar(10) NOT NULL default '0',
  `loc_type` varchar(50) NOT NULL default '',
  `loc_surface` tinyint(4) NOT NULL default '0',
  `loc_loyer` smallint(4) NOT NULL default '0',
  `loc_charges` tinyint(4) NOT NULL default '0',
  `loc_lieu` varchar(128) NOT NULL default '',
  `loc_dispo` date NOT NULL default '0000-00-00',
  `loc_image` varchar(100) NOT NULL default '',
  `loc_details` text NOT NULL,
  KEY `loc_id` (`loc_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4;

Ventes

CREATE TABLE `ventes` (
  `ventes_id` int(11) NOT NULL auto_increment,
  `ventes_ref` varchar(10) NOT NULL default '0',
  `ventes_type` varchar(50) NOT NULL default '',
  `ventes_surface` tinyint(4) NOT NULL default '0',
  `ventes_prix` int(20) NOT NULL default '0',
  `ventes_charges` tinyint(4) NOT NULL default '0',
  `ventes_lieu` varchar(128) NOT NULL default '',
  `ventes_dispo` date NOT NULL default '0000-00-00',
  `ventes_image_01` varchar(100) NOT NULL default '',
  `ventes_image_02` varchar(100) NOT NULL default '',
  `ventes_image_03` varchar(100) NOT NULL default '',
  `ventes_image_04` varchar(100) NOT NULL default '',
  `ventes_details` text NOT NULL,
  KEY `ventes_id` (`ventes_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2;

Ce que je voudrais c’est faire une console qui permette de gérer tout ca
mais surtout avec la possibilité d’uploader des photos avec une option “parcourir”
Mais la je suis deja perdu

Je sais que c’est faisable, ca oui, mais est ce que c’est compliqué ?

Merci de votre aide

wuub

Et bien il faut connaitre le PHP et après c’est abordable !

Tu crée une table admin avec les champs "login" et "pass"
Apres sur ta page, via un formulaire HTML, tu récupère cela et tu cherche dans ta table si il existe une entrée correspondate.

Après tu te sers des sessions en PHP, et c’est un jeu d’en… oui enfin…

mmmm… et ben c’est pas gagné :frowning:

Malheureusement c’est un peu plus compliqué que simplement “faire une console d’administration” ^^

les tables dont tu parles ne sont déjà pas liées à l’interface d’administration, mais directement à ce que tu voudrais afficher à mon avis.

L’important c’est de correctement définir sur papier ce que tu veux faire, ce que tu veux afficher et dans quel but. C’est la méthode qu’un pote appelle “pen’n’paper” :smiley:

Une fois que tu as formalisé ton “cahier des charges” et bien tu auras une vision précise de tes besoins, ensuite ca n’est que de la technologie informatique, on finit toujours pas trouver comment faire telle ou telle fonction en cherchant sur le net ou demandant sur des forums :wink:

Bon j’ai pas terminé ma réponse d’avant, je devais répondre au tel au taf ^^

Donc ton pote il bosse dans l’immobilier si je capte bien. Bon je connais pas la problématique de son métier, mais lui certainement :slight_smile:

Ensuite il faut voir si tu veux effectivement faire qqch de relativement fonctionnel, ou si c’est juste un test “pour le fun” ^^

L’important, comme je disais précédement, c’est de cibler les besoins et les fonctions qui doivent être remplies. Il n’y a même pas à se demander si tu fais 1, 4 ou 15 tables pour l’instant, c’est de la technique : ca ne t’intéresse pas dans l’immédiat.

Par exemple : je veux disposer du nombre de maisons que j’ai dans ma base, je veux pouvoir les rechercher suivant la localité, je veux savoir si c’est des appartements…

Je veux pouvoir rechercher des maisons disponibles, à la location… bref ce genre de choses :slight_smile:

Je voudrais disposer d’une fiche par maison, avec tous les détails possibles : surface, prix, location ou vente (ou les deux ?), appartement ou maison, étage, ville… toussa quoi, une photo peut être ?

Je te suggère de regarder différents sites d’immobilier pour voir de quel niveau de détail ils disposent, sachant naturellement qu’ils ont des pros qui bossent pour eux. Mais ca te permettra de cerner ce que tu peux avoir besoin. Inutile de réinventer la roue quand des mecs ont déjà réfléchi au sujet :wink:

Il faut aussi te poser la question de qui accède à l’info : c’est monoposte mono utilisateur ton truc ? Ou le public peut y toucher ? Ca change tout en terme de sécurisation (la balance entre : ce que toi tu as les capacités et moyens de faire, et ce qu’il faudrait avoir dans l’idéal en gros)… si c’est public, je te conseille pas de le faire toi même en revanche ^^

Une fois que tu as des réponses à tout ca, tu auras déjà une vision beaucoup plus précise de ce que tu veux faire.

Par avance je peux déjà supposer que tu vas devoir trouver comment organiser tes données dans la base de données :wink: Il va aussi te falloir des formulaires pour faire des recherches dans ta base, et même avant ca pour intégrer les données dans ta base :stuck_out_tongue: Et il va aussi te falloir un script pour uploader des images et les "associer" à une maison… Je crois que tu as émis ce souhait :slight_smile:

Bon mais je suis pas développeur, donc j’oublies forcément des choses.

Tout d’abord merci de vos reponses ^^
BOn ben je me suis mis au boulot… en sachant que je ne suis pas super doué por cela j’ai tout de même réussi à m’approcher du resultat que je cherchais !
La table Locations est composée ainsi :

CREATE TABLE `locations` (
  `loc_id` int(11) default NULL,
  `loc_ref` varchar(10) NOT NULL default '0',
  `loc_type` varchar(50) NOT NULL default '',
  `loc_surface` tinyint(4) NOT NULL default '0',
  `loc_loggia` varchar(50) default NULL,
  `loc_loyer` smallint(4) NOT NULL default '0',
  `loc_charges` tinyint(4) NOT NULL default '0',
  `loc_frais` smallint(10) NOT NULL default '0',
  `loc_lieu` varchar(128) NOT NULL default '',
  `loc_dispo` date NOT NULL default '0000-00-00',
  `loc_image` varchar(100) NOT NULL default '',
  `loc_details` text NOT NULL,
  KEY `loc_id` (`loc_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

J’ai donc ecris la page d’admin qui me sort a peu pres ce que je voulais :

<?
session_start(); 

if(!isset($_SESSION['ident'])) {
    $_SESSION['ident'] = false;
}



	DEFINE('LOGIN','root');
	DEFINE('PASS','root');
	DEFINE('SQL_USER','root');
	DEFINE('SQL_PASS','');
	DEFINE('SQL_BDD','piergest');
	DEFINE('SQL_SERVER','localhost');
	DEFINE('LIMIT_NEWS','100');
	DEFINE('SHOW_DATE','no');
	DEFINE('SHOW_AUTEUR','');


$db_link = @mysql_connect(SQL_SERVER,SQL_USER,SQL_PASS);
mysql_select_db(SQL_BDD);

if(isset($_POST)) {
    foreach($_POST as $k => $v) {
        $_POST[$k] = trim(htmlspecialchars($v));
    }
}
if(isset($_GET)) {
    foreach($_GET as $k => $v) {
        $_GET[$k] = trim(htmlspecialchars($v));
    }
}


if(isset($_POST['login']) && $_POST['login'] == LOGIN 
    && isset($_POST['pass']) && $_POST['pass'] == PASS) {
    $_SESSION['ident'] = true;
}

if($_SESSION['ident'] == false) {
    print '
	<div id="locations"><br /><br /><strong>Identification</strong>
    	<form action="loc_admin.php" method="post">
    Login<input type="text" name="login" size="25">
  	<br>Password<input type="password" name="pass" size="25" /><br />
      <input type="submit" value="Valider" />
  </form>
	</div>';
}

elseif($_SESSION['ident'] == true) {
   
    if(isset($_POST['send'])) {
        if($_POST['send'] == 'new') {
        $sql =
  "INSERT INTO locations
  	(
       loc_id
  	,loc_ref
  	,loc_type
  	,loc_surface
  	,loc_loggia
  	,loc_loyer
  	,loc_charges
  	,loc_frais
  	,loc_lieu
  	,loc_dispo
  	,loc_image
  	,loc_details
  	)

  VALUES
        	(
    ''
  	,'".$_POST['loc_ref']."'
  	,'".$_POST['loc_type']."'
  	,'".$_POST['loc_surface']."'
  	,'".$_POST['loc_loggia']."'
  	,'".$_POST['loc_loyer']."'
  	,'".$_POST['loc_charges']."'
  	,'".$_POST['loc_frais']."'
  	,'".$_POST['loc_lieu']."'
  	,'".$_POST['loc_dispo']."'
  	,'".$_POST['loc_image']."'
  	,'".$_POST['loc_details']."'

  	,now()
  	)";

        }
        elseif($_POST['send'] == 'update') {
        $sql =
  	' UPDATE locations SET
     loc_ref = "'  .$_POST['loc_ref'].'"
  	, loc_type = "'  .$_POST['loc_type'].'"
  	, loc_surface = "'	.$_POST['loc_surface'].'"
  	, loc_loggia = "'	.$_POST['loc_loggia'].'"
  	, loc_loyer = "'	.$_POST['loc_loyer'].'"
  	, loc_charges = "'	.$_POST['loc_charges'].'"
  	, loc_frais = "'	.$_POST['loc_frais'].'"
  	, loc_lieu = "'  .$_POST['loc_lieu'].'"
  	, loc_dispo = "'	.$_POST['loc_dispo'].'"
  	, loc_image = "'	.$_POST['loc_image'].'"
  	, loc_details = "'	.$_POST['loc_details'].'"
  	WHERE loc_id = "'	.$_POST['loc_id'].'"';
        }
        mysql_query($sql,$db_link) or die(mysql_error());
    }
    if(isset($_GET['delete']) and is_numeric($_GET['delete'])) {
       mysql_query("DELETE FROM locations WHERE loc_id = \"".$_GET['delete']."\"",$db_link);
       header("location: loc_admin.php");
    }
    if(isset($_GET['edit']) and is_numeric($_GET['edit'])) {
        $Id = $_GET['edit'];
        $sql = 'SELECT * FROM locations WHERE loc_id = "'.$Id.'" LIMIT 1';
        $rc = mysql_query($sql,$db_link);
        while($loc_data = mysql_fetch_array($rc)) {
            print '
  	<div id="locations">
            <form action="loc_admin.php" method="post">
            <strong>Modification d\'une Location</strong>
    <br>Référence  	<input type="text" name="loc_ref"  size="10" value="'.htmlentities($loc_data['loc_ref']).'">
      	<br>Localisation	<input type="text" name="loc_lieu"  	size="10" value="'.htmlentities($loc_data['loc_lieu']).'">
              <br>Type    <input type="text" name="loc_type"  	size="10" value="'.htmlentities($loc_data['loc_type']).'">
      	<br>Surface  	<input type="text" name="loc_surface"  size="10" value="'.htmlentities($loc_data['loc_surface']).'">m²
      	<br>Loggia/Terrasse	<input type="text" name="loc_loggia"  size="10" value="'.htmlentities($loc_data['loc_loggia']).'">
      	<br>Loyer  	<input type="text" name="loc_loyer"  size="10" value="'.htmlentities($loc_data['loc_loyer']).'">
      	<br>Charges  	<input type="text" name="loc_charges"  size="10" value="'.htmlentities($loc_data['loc_charges']).'">
      	<br>Frais d\'agence	<input type="text" name="loc_frais"  size="10" value="'.htmlentities($loc_data['loc_frais']).'">
      	<br>Disponiblité	<input type="text" name="loc_dispo"  size="10" value="'.htmlentities($loc_data['loc_dispo']).'">
      	<br>Details  	<input type="text" name="loc_details"  size="10" value="'.htmlentities($loc_data['loc_details']).'">
      	<br>Image  	<input type="text" name="loc_image"  size="10" value="'.htmlentities($loc_data['loc_image']).'">


            <br>
  	<br><input type="submit" value="Valider">
  	<br><input type="hidden" name="loc_id" value="'.$_GET['edit'].'">
            <input type="hidden" name="send" value="update">
            </form>
            ';
        }
    }
    else {
        print '
  <div id="locations">
        <form action="loc_admin.php" method="post">
        	<strong>Ajouter une location :</strong><br>

    <br>Référence  <input type="text" name="loc_ref" size="10">
    <br>Localisation	<input type="text" name="loc_lieu" size="10">
    <br>Type  	<input type="text" name="loc_type" size="10">
    <br>Surface  	<input type="text" name="loc_surface" size="10">
    <br>Loggia  	<input type="text" name="loc_loggia" size="10">
    <br>Loyer  	<input type="text" name="loc_loyer" size="10">
    <br>Charges  	<input type="text" name="loc_charges" size="10">
    <br>Frais d\'agence	<input type="text" name="loc_frais" size="10">
    <br>Disponibilité	<input type="text" name="loc_dispo" size="10">
    <br>Description  <input type="text" name="loc_details" size="10">
    <br>Image  	<input type="text" name="loc_image" size="10">
    


  	<br><input type="reset" value="Effacer">
  	 - <input type="submit" value="Valider">
        	<input type="hidden" name="send" value="new">
        </form>

        <strong>Gestion des Locations :</strong><br /><br /><ul>';
    
        $sql = 'SELECT * FROM locations ORDER BY loc_id ASC';
        $rc = mysql_query($sql,$db_link);
        while($loc_data = mysql_fetch_array($rc)) {
            print
    '<li>Référence : '  	.$loc_data['loc_ref']
  	.'<li>Localisation : '  .$loc_data['loc_lieu']
  	.'<li>Type : '    .$loc_data['loc_type']
  	.'<li>Surface : '  	.$loc_data['loc_surface'] . ' m²'
  	.'<li>Loggia / Terrasse : '	.$loc_data['loc_loggia']
  	.'<li>Loyer : '    .$loc_data['loc_loyer'] . ' €  + '
          .$loc_data['loc_charges'] .' € de charges'
  	.'<li>Frais d\'agence : '	.$loc_data['loc_frais'] . ' €'
  	.'<li>Disponibilité : '  .$loc_data['loc_dispo']
  	.'<li>Description : '  .$loc_data['loc_details']
  	.'<li>Image : '    .$loc_data['loc_image']
  	
  	
  	.'<br><a href="?delete='.$loc_data['loc_id'].'">Supprimer</a> - '
  	.'<a href="?edit='.$loc_data['loc_id'].'">Editer</a><br><hr>'
          ;
        }
        print'</ul>';
    }
    print'</div>';
}


?>

Seul soucis c’est que je recoi une erreur que je tente de créer une nouvelle entrée

Je ne vois pas d’ou ca vient ?!

Et puis je ne parviens pas a faire l’upload du fichier image… snif…
Pouvez vous encore m’aider ?

tu insères moins ou plus de valeur qu’il n’y a de colonnes dans ta table, enfin c’est ainsi que je comprends le message. Sinon je dirais que pas besoin d’insérer dans la clef primaire, elle doit logiquement auto increment non ? :slight_smile:

En fait c’est le now() qui faisait tout péter ^^
Je croyais que c’etait obligatoire pour lancer une commande ?
Bon j’y retourne, je crois que j’ai pas fini avec mes messages d’erreurs ^^
Merci encore