PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : PHP » script treeview lister le contenu de mes tables » 08/06/2010 13:24:08

désolé pour cette réponse tardive, le probleme viens de mon manque de compétence en php/JS j'ai bien toute mes données, le problème est quand je clique sur un lien tout les liens de la même boucle s'affiche.

Si je continue la comparaison avec le treeview de phppgadmin : je clique sur le lien schéma et tout s'affiche même le contenu, de recherche contextuelle... (si c'est suffisamment claire^^)

#2 PHP » mapserver, phpmapscript, postgis, p.mapper » 08/06/2010 13:20:55

mamatt
Réponses : 2

Bonjour, alors je souhaite afficher des données de postgis sur internet, je sais pas du tout comment proceder. J'ai de bonne base ne html/php/sql mais léger en JS

je me suis renseigné, il faut que j'installe mapserveur, que j'utilise phpmapsript, et p.mapper ou openlayer pour visualiser les données sur un navigateur.

Alors voici mes questions :

premièrement est ce que j'ai bien tout compris?
deuxièmement comment installer mapserver? le dernier j'ai trouvé des tutos mais ils ne sont plus d'actualité, qqn a un tuto récent?
troisièmement ou puis je trouver de la doc pour ce type d'application? comment configurer p.mapper? et comment lire des données dans postgis?

Merci d'avance

je sais c'est pas forcement le bon forum, mais je sais pas où poster désolé

#3 PHP » script treeview lister le contenu de mes tables » 09/04/2010 09:13:33

mamatt
Réponses : 2

Bonjour, après moult recherches infructueuse, je cherche à réaliser un treeview qui me liste toutes mes entrées de chacune de mes tables.

ce treeview me servirait de menu que j'afficherais dans chaque page.

J'ai essayer de me pencher sur le script, mais j'arrive pas à le réaliser, alors je voudrais savoir si quelqu'un ne connait pas un script pour faire ça.

Car en php il est facile de faire un treeview d'un dossier des fonctions existe pour ça, mais pour lister le contenu des tables, il faudrait passer par du javascript et des requêtes SQL.

En fait je voudrais le même principe du treeview de phppgadmin.

Je sais que ce n'ai pas forcément le bon forum, mais je suis un peu désespéré...., si quelqu'un a une info merci pour votre aide

#4 Re : PHP » [RESOLU] probleme ecriture php/ postgresql » 08/04/2010 23:55:18

ok je l'ai trouver un log d'aujourd'hui je suppose car mon problème est apparu aujourd'hui, je dois chercher quoi, car je vais pas poster tout le log sur le forum ?^^ ou en pièce jointe si je peux?


EDIT : désolé on est le soir et je suis un peu fatiguer, donc j'ai trouvé des erreurs qui me semble en relation avec mon problème :

2010-04-08 14:36:49 CEST ERROR:  column "nom" of relation "parcelles" does not exist at character 40
2010-04-08 14:36:49 CEST STATEMENT:  UPDATE parcelles SET id_lot_parc = $1, nom = $2, description_parc= $3, prop_parc = $4, surface = $5 WHERE id_parc = $6

et :

2010-04-08 14:39:44 CEST ERROR:  INSERT has more expressions than target columns
2010-04-08 14:39:44 CEST STATEMENT:  INSERT INTO parcelles(id_lot_parc, nom_parc, description_parc, prop_parc, surface) VALUES($1, $2, $3, $4, $5, $6, $7)


a mon avis le fait que je ne peux pas renseigner viendrait de là ??


EDIT 2 : le soir on devient faignant héhé, merci trop utile ce log ca va beaucoup me servir maintenant. voila mon erreur :

INSERT INTO parcelles(id_parc, id_lot_parc, nom_parc, description_parc, prop_parc, surface) VALUES(, :id_lot_parc, :id_voirie, :id_reseau, :nom, :description, :proprio, :surf)

même si j'avais supprimé toutes mes variables et mon form des 2 colonnes que j'avais effacé avec phppgadmin, j'essayais de renseigné des colonne avec le VALUE (id_voirie et id_reseau)

un grand merci Gleu, problème résolu.

#6 Re : PHP » [RESOLU] probleme ecriture php/ postgresql » 08/04/2010 22:26:10

heu, la je suis dans un sujet que je maîtrise pas trop je vais essayer d'être le plus claire possible, j'ai installé Postgresql 8.3 tout par défaut, je suis en local je travail avec wampserver2 donc en localhost:5432 port par défaut il me semble, donc je ne sais pas du tout comment faire pour générer un log pour voir d'éventuels problèmes.....

#7 Re : PHP » [RESOLU] probleme ecriture php/ postgresql » 08/04/2010 21:26:09

désolé, mais ou voit-on le log? est il activé par défaut, faut-il modifier le fichier postgresql.conf?car a il y a plein de log

#8 PHP » [RESOLU] probleme ecriture php/ postgresql » 08/04/2010 19:43:51

mamatt
Réponses : 8

Bonjour, j'ai un problème étrange.....

J'ai un script tout simple en php j'enregistre dans ma table parcelles des données via un formulaire. J'utilise exactement le même script pour toute mes pages je change juste le nom des tables et des variables.

J'arrive a écrire dans toutes mes tables sauf la table parcelles, je me demande si ca pourrait pas venir de postgresql, car en php aucune erreur et renvoyé, pour le script tout serait ok, sauf que l'entrée ne se créée pas dans ma table.

J'ai fait un petit truc sur cette table qui différencie des autres, j'ai supprimé 2 colonnes qui me servait plus, et j'ai pas oublié de cocher cascade, peut être cela a t'il un impact?

enfin j'ai supprimé cette table et je l'ai recréé, mais toujours impossible d'enregistrer via le script php, si je vais dans phppgadmin je peux sans souci insérer une entrée dans cette table, que j'arrive a afficher via mon script php.

Je vous mets mon script de mon formulaire :

<?php
include("connection_bdd.php");

//-------------------------
//est-ce qu'on est dans le cas d'une modification 
//--------------------------
if (isset($_GET['modifier_parc'])) // Si on demande de modifier 
{
    // On récupère les infos 
	
    $req = $bdd->prepare('SELECT * FROM parcelles WHERE id_parc = ?') or die(print_r($bdd->errorInfo()));
	$req->execute(array($_GET['modifier_parc']));
	
    $donnees = $req->fetch(); // on récupere tout dans un tableau, puis on les tris
   
	$id_parc = $donnees['id_parc'];
	$id_lot_parc = $donnees['id_lot_parc'];
    $nom = $donnees['nom_parc'];
	$description = $donnees['description_parc'];
    $proprietaire = $donnees['prop_parc'];
	$surface = $donnees['surface'];
	
}
else // Sinon c'est qu'on rédige une nouvelle entrée
{
    // Les variables sont alors vides
	
	$id_parc = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
	$id_lot_parc = $_GET['ajouter_parc'];
    $nom = '';
	$description = '';
    $proprietaire = '';
	$surface = ''; 
}
?>
<!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" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> 
	<link href="style/defaut.css" rel="stylesheet" type="text/css">
	<title>renseigner une parcelle</title>
</head>
<body>
<?php
if(isset($_GET['modifier_parc']))
{
	echo'<form action="administrer_parc.php?info_parc='.$donnees['id_parc'].'" method="post">';
}
else
{
	echo'<form action="administrer_parc.php?suivi_parc=1" method="post">';
}
?>
<label>Nom : </label><input type="text" size="30" name="nom_parc" value="<?php echo $nom; ?>"/><br/>
<label>Description : </label><input type="text" size="30" name="description_parc" value="<?php echo $description; ?>"/><br/>
<label>Propriétaire : </label><input type="text" size="30" name="prop_parc" value="<?php echo $proprietaire; ?>"/><br/>
<label>Surface : </label><input type="text" size="50" name="surface" value="<?php echo $surface; ?>"/><br/>

<input type="hidden" name="id_lot_parc" value="<?php echo $id_lot_parc; ?>"/>
<input type="hidden" name="id_parc" value="<?php echo $id_parc; ?>"/>
<input type="submit" value="Envoyer" />
</form>
<a href="administrer_parc.php">retour à la fiche dde la parcelle</a>
</body>
</html>

et mon code pour insérer une nouvelle entrée :

include("connection_bdd.php");
//--------------------------------------------------------
// traitement parcelle
//--------------------------------------------------------
if (isset($_POST['nom_parc'])AND isset($_POST['description_parc'])) // on renseigne si les variables existent déjà isset permet de récupérer vrai ou faux si la variable existe
{
	$id_parc = $_POST['id_parc'];
	$id_lot_parc = $_POST['id_lot_parc'];
    $nom = $_POST['nom_parc'];
	$description = $_POST['description_parc'];
    $proprietaire = $_POST['prop_parc'];
	$surface = $_POST['surface'];
	
    // On vérifie si c'est une modification
    if ($_POST['id_parc'] == 0) // se traduit par si les variables existent et si la variable recupérée id est = 0
    {
        //  alors ce n'est pas une modification, on crée une nouvelle entrée dans la table
		$req = $bdd->prepare('INSERT INTO parcelles(id_parc, id_lot_parc, nom_parc, description_parc, prop_parc, surface) VALUES(, :id_lot_parc, :id_voirie, :id_reseau, :nom, :description, :proprio, :surf)') or die(print_r($bdd->errorInfo())); // on prepare la requete les : permettent de nommer une variable dans une requete sql
		$req->execute(array(
			'id_lot_parc' => $id_lot_parc,
			'nom' => $nom,
			'description' => $description,
			'proprio' => $proprietaire,
			'surf' => $surface,
			
		)); // on défini un tableau contenant les variables, qui seront inserées dans la requete sql
	}
    else
    {
        // Sinon c'est une modification, on met à jour les champs
		$req = $bdd->prepare('UPDATE parcelles SET id_lot_parc = :id_lot_parc, nom = :nom, description_parc= :description, prop_parc = :proprio, surface = :surf WHERE id_parc = :id_parc') or die(print_r($bdd->errorInfo())); //le where permet de reperer l'entrée  modifiée on se fixe sur l'id
		$req->execute(array(
			'id_lot_parc' => $id_lot_parc,
			'nom' => $nom,
			'description' => $description,
			'proprio' => $proprietaire,
			'surf' => $surface,
			'id_parc' => $id_parc,
		));
	}
$req->closeCursor(); // Termine le traitement de la requête
}

merci d'avance pour votre aide

#9 Re : PHP » PHP/SQL requete avec jointure de table » 07/04/2010 11:53:25

Désolé pour la réponse tardive. Merci pour votre réponse, j'ai lu des explications sur les jointures sql, et j'ai cette requete qui marche très bien :

$nbrebati = $bdd->prepare('SELECT count(*) AS nbre_bati FROM batiments b JOIN parcelles p ON (b.id_parcelle=p.id_parc)  WHERE p. id_parc = ?');
$nbrebati->execute(array($_GET['info_parc']));

mais j'ai tester aussi le code de gleu, qui marche.

Merci problème résolu et mes connaissances en sql améliorées.

#10 PHP » PHP/SQL requete avec jointure de table » 01/04/2010 09:52:27

mamatt
Réponses : 3

Bonjour, alors j'ai un petit souci plus dans la construction de ma requête que dans mon code php, je travail avec wamp 2 et phppgadmin, postgresql et en PDO

J'ai 3 tables : zone_activite, parcelle, bâtiments,

Chaque table contient  un champ id en serial , et la table parcelles a en plus le champs id_zone_activite, qui contient l'id de la za dans laquelle se situe la parcelle, et la table bâtiments a en plus le champs id_parc, qui contient l'id de la parcelle dans laquelle se situe le bâtiment.

Je souhaite compter le nombre total de bâtiments par zone_activite.

et je n'arrive pas a faire cette requete!!

j'arrive a compter le nombre de parcelle par zone d'activité en faisant la requête suivante :

<?php
$nbreparc = $bdd->prepare('SELECT COUNT(id_parc) AS nbre_parc FROM parcelles WHERE id_zone_activite = ?') or die(print_r($bdd->errorInfo()));// on compte le nombre de parcelles lorsque le champ id_zone_activité = l'id de la za
$nbreparc->execute(array($_GET['info_za'])); // id de la za récupéré via l'url
$donnees_parc = $nbreparc->fetch() ; // on tri les données récupérées
echo 'Nombre total de parcelles de la za : '.$donnees_parc['nbre_parc'].''; // on affiche le nombre de parcelles
$nbreparc->closeCursor(); // Termine le traitement de la requête
?>

je n'arrive pas a compter le nombre de batiments, qui sont dans les parcelles de la za!!! j'ai essayé ceci mais cela ne fonctionne pas :

<?php
$idparc = $bdd->prepare('SELECT id_parc FROM parcelles WHERE id_zone_activite = ?') or die(print_r($bdd->errorInfo()));// on récupere les valeurs de l'id de toute les parcelles pour faire la jointure avec la table des batiments
$idparc->execute(array($_GET['info_za']));
$donnees_nomparc = $idparc->fetch();// on tri les données récupérées

$nbrebati = $bdd->prepare('SELECT COUNT(id_bati) AS nbre_bati FROM batiments WHERE id_parcelle = ?') or die(print_r($bdd->errorInfo())); // on compte le nombre de ligne où l'id_parcelle = l'id_parc récuperer par la requete précédente
$nbrebati->execute(array($donnees_nomparc['id_parc'])); / on tri les données récupérées
$donnees_bati = $nbrebati->fetch();

echo 'Nombre total de batiments de la za: '.$donnees_bati['nbre_bati'].''; // on affiche le résultat
?>

Une idée??

Pied de page des forums

Propulsé par FluxBB