Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#26 Re : Général » convertion de temps » 24/05/2011 18:55:43
nombre time without time zone,
exact : transformer 1h15 minutes en 1,25h
afin de multiplier 1.25 x 49 € // calcul temps passe x cout horaire
#27 Général » convertion de temps » 24/05/2011 18:11:14
- unisol
- Réponses : 8
bonjour,
j'ai un temps en base 60 que je souhaite convertir en base 100
(afin de que je puisse multiplier le temps base 100 par un taux horaire)
j'utilise cette formule jusqu'à ce que je remarque qu'elle donne un resultat erroné (parfois au dessus 20 ?????????)
$requete = "select sum(nombre) from intervention where numero_affaire = xxxxx ";
$result = pg_exec( $cnx, $requete);
$tps_int = pg_result($result, 0); // le temps est base 60, si par exemple le resultat fait 33.05
$min= date("i", strtotime($tps_int));
$heure = date("H", strtotime($tps_int)); // à cette endroit le resultat est déjà faut pour des valeurs supérieures à 16 ou 20 je ne sais plus.
$tps_int = number_format($heure + (($min*100/60)/100), 2); // ici $tps_int affiche 1 ???
merci pour votre aide
je sait que c'est peut ^ter un probleme plus PHP, mais je doit certainement me compliquer la tache
car Postgres doit peut être avoir une fonction pour cela
#28 Re : Général » Transactions » 19/05/2011 23:32:44
Il parait evident que tout cela ce passe dans une seule et meme session .
par contre le reste est plus obscure : le php n'est pas coté serveur ?
dans mon esprit les sessions n'ont d'interet que dans des requetes action,
à savoir "insert into..." et "update..." Dans ces cas il est ou l'echange avec la partie client ?
j'ai lu que postgresql, lorsque rien n'est explicitement déclaré (debut de transaction)
postgresq par défaut met en place un mecanique transactionnel.
ce mecanisme est moins performant que si la declaration est mise de maniere explicite (Begin).
pour la synthaxe : est ce bien comme ceci ?
BEGIN;
$requete1 = "insert into...
$requete2 = "insert into...
COMMIT;
merci d'avance pour cotre réponse sqlpro.
#29 Général » Transactions » 18/05/2011 20:38:05
- unisol
- Réponses : 4
Bonjour,
comment réaliser une transaction en postgresql / php ?
merci
#30 Re : PHP » Enregistrement aléatoire avec pg_query » 04/05/2011 21:45:23
precision,
j'ai modifié l'ordre des déroulantes dans le code
mode de paiment dabord
puis conditions ensuite
histoire de voir si une variable de la premiere déroulante ne venait pas troubler
l'exécution de la 2eme partie.
rien n'y fait le bug persiste
#31 Re : PHP » Enregistrement aléatoire avec pg_query » 04/05/2011 21:39:55
donc je m'explique,
seule la 2 eme déroulante pose probleme
si on clic dessus, elle se déroule et affiche !
<une ligne vide>
<Carte bancaire>
<Virement bancaire>
etc.
si on selectionne une ligne autre que Carte bancaire
l'enregistrement est réalisé dans postgres puis affiché à l'ecran
si carte bancaire est selectionné, l'enregistrement est réalisé dans postgres
(j'ai vérifié, dans pgadmin) MAIS à l'ecran,
le couple HTML PHP ne me l'affiche pas
ce qui est curieux c'est que la déroulante du haut marche nickel.
#32 Re : PHP » Enregistrement aléatoire avec pg_query » 04/05/2011 21:31:05
oui bien sur.
//delais_reglement
$requete = "select conditions FROM delais_reglement where nrosociete = $_SESSION[NroSociete]";
$result_cond = pg_exec( $cnx, $requete);
$numrows_cond = pg_numrows($result_cond);
//mode_paiement
$requete = "select mode_paiement FROM modes_paiement where nrosociete = $_SESSION[NroSociete]";
$result_paiement = pg_exec( $cnx, $requete);
$numrows_paiement = pg_numrows($result_paiement);
<label>
<select name="conditions" size="1" id="conditions">
<?php
echo "<option ></option>";
for($ri = 0; $ri < $numrows_cond; $ri++)
{
$row = pg_fetch_array($result_cond, $ri);
if ($row['conditions']==$_POST['conditions'])
{echo "<option selected>".$_POST['conditions']."</option>";}
else
{echo "<option >".$row['conditions']."</option>";}
}
?>
</select>
</label>
</td>
</tr>
<tr>
// 2eme partie
<td height="24" class="style12">Mode paiement</td>
<td ><label>
<select name="mode_paiement" size="1" id="mode_paiement">
<?php
echo "<option ></option>";
for($ri = 0; $ri < $numrows_paiement; $ri++)
{
$rowp = pg_fetch_array($result_paiement, $ri);
if ($rowp['mode_paiement']==$_POST['mode_paiement'])
{echo "<option selected>".$rowp['mode_paiement']."</option>";}
else
{echo "<option >".$rowp['mode_paiement']."</option>";}
}
?>
</select>
</label>
#33 Re : PHP » Enregistrement aléatoire avec pg_query » 04/05/2011 20:22:53
oups! confusion de fenetre, je suis sur le bon forum.
voici le probleme, dans la 2eme partie, si je selectionne le 1ere item (Carte bancaire)
ce dernier n'apparait pas lors de l'affichage,
à partir du 2eme item (Virement) pas de probleme
pourquoi ?
voici la table lue:
---------------------------------
'vide'
--------------
Carte bancaire
--------------
Virement
--------------
Chèque
--------------
<label>
<select name="conditions" size="1" id="conditions">
<?php
echo "<option ></option>";
for($ri = 0; $ri < $numrows_cond; $ri++)
{
$row = pg_fetch_array($result_cond, $ri);
if ($row['conditions']==$_POST['conditions'])
{echo "<option selected>".$_POST['conditions']."</option>";}
else
{echo "<option >".$row['conditions']."</option>";}
}
?>
</select>
</label>
</td>
</tr>
<tr>
// 2eme partie
<td height="24" class="style12">Mode paiement</td>
<td ><label>
<select name="mode_paiement" size="1" id="mode_paiement">
<?php
echo "<option ></option>";
for($ri = 0; $ri < $numrows_paiement; $ri++)
{
$rowp = pg_fetch_array($result_paiement, $ri);
if ($rowp['mode_paiement']==$_POST['mode_paiement'])
{echo "<option selected>".$rowp['mode_paiement']."</option>";}
else
{echo "<option >".$rowp['mode_paiement']."</option>";}
}
?>
</select>
</label>
#34 Re : PHP » Enregistrement aléatoire avec pg_query » 04/05/2011 19:48:37
je pense localiser l'erreur, mais je pense qu'honnetement cela est plus
du PHP que du postgresql pur.
par conséquent, je clos le sujet ici en vous remerciant.
#35 Général » reparameter id non serial en serial » 04/05/2011 19:24:22
- unisol
- Réponses : 3
Bonjour,
suite à une importation, j'ai des champs non serial,
je souhaite les passer en serial. Mais PgAdmin ne me propose
pas de réaliser cette opération.
lorsque les tables sont vides, je réalise un drop table
DROP TABLE mode_paiement;
suivi d'une redéfinition de la table.
mais avec des données dedans c'est impossible.
qu'elle solutions a t'on dans un cas pareil
(passer
-- Table: mode_paiement
-- DROP TABLE mode_paiement;
CREATE TABLE mode_paiement
(
id bigint NOT NULL,
conditions character varying(50),
carence bigint,
nrosociete integer,
CONSTRAINT id_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE mode_paiement OWNER TO postgres;
#36 Re : PHP » Enregistrement aléatoire avec pg_query » 04/05/2011 18:21:37
il n'y a pas d'erreur, juste un enregistrement qui ne se fait pas
ou parfois si ....???
#37 Re : PHP » Enregistrement aléatoire avec pg_query » 04/05/2011 17:54:55
votre remarque sur l'injection est judicieuse.
pour le controle de la validation
j'ai ajouté :
if (!$result){echo "<script>alert(\"Une erreur est apparue.\")</script>"; }
mais cela va controler si la requete a échoué.
je n'arrive pas à m'expliquer que des MEMES données la réussite de requete
est aléatoire.
#38 Re : Général » Recherche texte non contigu » 04/05/2011 15:24:31
j'image que pour que l'utilisateur final n'ai pas à inserer des pourcents (%)
il faudrait créer une fonction le faisant à sa place de telle sorte qu''il
n'ait à saisir que les termes recherchés à l'instar des moteurs de recherche web.
#39 PHP » Enregistrement aléatoire avec pg_query » 04/05/2011 15:10:30
- unisol
- Réponses : 12
Bonjour,
dans le code ci dessous, j'ai des ecritures aléatoires dans la base de données.
à savoir que parfois les valeurs sont inscrites et d'autre fois, rien ne se passe.
ce la concerne la section
/// ENREGISTRER NOS REFS VOS REFS MODE DE PAIEMENT CONDITIONS ///
les autres sections se comportent normalement.
quand faut il fermer les connexions ?
merci pour votre aide
//debut du code
////////////////////////////////////// VALIDER LE DOCUMENT /////////////////////
$_SESSION['numero_document'] = $_GET['numero_document'];
if (isset($_POST['valider']))
{
$requete = "update entete_document set valide = true where numero_document = $_SESSION[numero_document] and nrosociete = $_SESSION[NroSociete] ";
$result = pg_query( $cnx, $requete);
}
///////////////////////////////////////VALIDER BLOC NOTE ////////////////////////////
if (isset($_POST['bpsave_blocnote']))
{
$requete = "update entete_document set blocnote = '$_POST[textblocnote]' where numero_document = $_SESSION[numero_document] and nrosociete = $_SESSION[NroSociete] ";
$result = pg_query( $cnx, $requete);
}
///////////////////////////////////////MISE A JOUR QUANTITE ////////////////////////////
if (isset($_POST['maj_article']))
{
if (!$_POST['remise']){$remise=0;}else{$remise=$_POST['remise'];}
$requete = "update appel set quantite = $_POST[quantite], puht = $_POST[puht], remise = $remise where id_doc = $_POST[iddoc]";
$result = pg_query( $cnx, $requete);
}
/////////////////////////////////////// ENREGISTRER NOS REFS VOS REFS MODE DE PAIEMENT CONDITIONS ///////////////
if (isset($_POST['bpenregistrer']))
{
$requete = "update entete_document set nos_refs = '$_POST[nos_refs]', vos_refs = '$_POST[vos_refs]', mode_paiement = '$_POST[mode_paiement]', conditions = '$_POST[conditions]' where numero_document = $_GET[numero_document] and nrosociete = $_SESSION[NroSociete] ";
$result = pg_query( $cnx, $requete);
}
//////////////////////////////////////////// CLOTURE SIGNATURE CLIENT ////////////////////////////
if (isset($_POST['output']) and $_POST['heure_fin_intervention']=='')
{
///////// CREATION IMAGE SIGNATURE
$json = $_POST['output'];
require_once 'signature-pad/signature-to-image.php';
$img = sigJsonToImage($json);
imagepng($img, 'signature-pad/'.$_SESSION['numero_affaire'].'_'.$_SESSION['NroSociete'].'.png');
imagedestroy($img);
//////// HEURE FIN
$requete = "update entete_document set heure_fin_intervention = localtime where numero_document = $_GET[numero_document] and nrosociete = $_SESSION[NroSociete] ";
$result = pg_query( $cnx, $requete);
//$_POST['heure_fin_intervention']= date('d/m/Y H:m');
//////// ENVOI MAIL AU RESPONSABLE////////////////////////
//recup de l'adresse mail du responsable
//envoi de l'email
$mailheaders .= "From: Unigest Web Gestion <$email>\r\n";
$mailheaders .= "Content-type: text/html; charset=utf-8\r\n";
$mailheaders .= "Clôture chantier\n\n";
$sujet="Clôture chantier client : ".$_SESSION['client']; // sujet
$message="Le chantier numéro ".$_GET['numero_document']." du client ".$_SESSION['client']." a été clôturé a : ".date('d/m/Y H:m') ; // message
//pg_close($cnx);
mail($emails, $sujet, $message, $mailheaders);
//
$tab=1;
}
///////////////////////////////////////// HEURE DEBUT ///////////////////////////////
if (isset($_POST['bpheuredebut']))
{
$requete = "update entete_document set heure_debut_intervention = '$_POST[heure_debut]' where numero_document = $_SESSION[numero_document] and nrosociete = $_SESSION[NroSociete] ";
$result = pg_query( $cnx, $requete);
pg_close($cnx);
echo "<script>alert(\"Enregistrement réalisé avec succès.\")</script>".$_SESSION['numero_document'].$_POST['heure_debut'];
$tab=1;
}
/////////////////////////////////////////////////////////////////
// LES REQUETES
///
include ("requete_document.php");
//////////////////////////////////////////// CROQUIS ////////////////////////////
if (isset($_POST['output_croquis']))
{
///////// CREATION IMAGE SIGNATURE
$json = $_POST['output_croquis'];
require_once 'signature-pad/signature-to-image.php';
$img = sigJsonToImage($json);
imagepng($img, 'signature-pad/'.$_POST['numero_affaire'].'.png');
imagedestroy($img);
}
//acomptes
$requete = "select sum(mtttc) from acomptes where numero_affaire = $_POST[numero_affaire] and nrosociete = $_SESSION[NroSociete]";
$result = pg_exec( $cnx, $requete);
$acompte = pg_result($result, 0);
//montant_heure_intervention
$requete = "select sum(extract(epoch from nombre) * taux_horaire)/3600 from intervention where numero_affaire = $_POST[numero_affaire] and nrosociete = $_SESSION[NroSociete]";
$result = pg_exec( $cnx, $requete);
$montant_heure_intervention = pg_result($result, 0);
//somme H.T.
$requete = "select sum(nombre) from intervention where numero_affaire = $_POST[numero_affaire] and nrosociete = $_SESSION[NroSociete]";
$result = pg_exec( $cnx, $requete);
$somme_heure_intervention = pg_result($result, 0);
//delais_reglement
$requete = "select conditions FROM delais_reglement where nrosociete = $_SESSION[NroSociete]";
$result_cond = pg_exec( $cnx, $requete);
$numrows_cond = pg_numrows($result_cond);
//mode_paiement
$requete = "select conditions FROM mode_paiement where nrosociete = $_SESSION[NroSociete]";
$result_paiement = pg_exec( $cnx, $requete);
$numrows_paiement = pg_numrows($result_paiement);
// TVA
$requete = "select tva FROM taux_tva where nrosociete = $_SESSION[NroSociete]";
$result_tva = pg_exec( $cnx, $requete);
$numrows_tva = pg_numrows($result_tva);
//
//echo "hf :".$_POST['heure_fin_intervention'];
?>
/// extrait de l'include requete_document.php
<?php
include ("connexion/connexionpg.php");
$requete = "select numero_document, txtdate, nos_refs, vos_refs, montant_total_tva, acompte, remise, signature, heure_debut_intervention, heure_fin_intervention, client, adresse1, adresse2, codepostal, ville, telephone, numero_affaire, blocnote, entete_document.conditions, entete_document.mode_paiement from entete_document inner join fichier_clients on entete_document.numero_client = fichier_clients.numero_client where numero_document = '$_GET[numero_document]' and entete_document.nrosociete = $_SESSION[NroSociete]";
$result = pg_exec( $cnx, $requete);
$_POST['numero_document']= pg_result($result, "numero_document");
$_POST['txtdate']= pg_result($result, "txtdate");
$_POST['nos_refs']= pg_result($result, "nos_refs");
$_POST['vos_refs']= pg_result($result, "vos_refs");
$_POST['montant_total_tva'] = pg_result($result, "montant_total_tva");
...
#40 Général » Recherche texte non contigu » 04/05/2011 10:30:06
- unisol
- Réponses : 4
Bonjour,
je souhaiterais recherche des fragments de mots ou des mots entiers dans mes champs.
ex. soit une désignation produit :
BRAUK.RED.PRESSION D06F-3/4A
je souhaite par exemple retrouver cette designation en recherche dans une zone texte comme ceci
RED PRES (puis valider)
merci pour votre aide
la recherche full text semble agir sur des documents, je ne sais si cela marche sur une table.
#41 Re : Général » Requete imbriquée : Not IN » 29/04/2011 20:57:25
je dois avoir un livre auquel vous avez participé.
je renvoi vers le lien de votre page : http://sqlpro.developpez.com/
lisez le bas, la derniere ligne.
Copyright © 2002 Frédéric Brouard. Aucune reproduction, même partielle....
#42 Re : Installation » Installation One clic ou ligne de commande » 29/04/2011 17:02:17
ça a l'air pas mal le truc de marc
ça peux s'automatiser ?
#43 Re : Installation » Installation One clic ou ligne de commande » 29/04/2011 16:58:59
Magnifique,
avez vous un script par hasard ?
#44 Installation » Installation One clic ou ligne de commande » 29/04/2011 16:25:10
- unisol
- Réponses : 6
Bonjour
je cherche un packetage d'installation du serveur postgresql 9.x
en mode silencieux (ou one clic) ou en ligne de commande
le but etant de le joindre à mon packetage de mon appli cliente
de telle sorte que cela soit transparent pour l'utilisteur.
à noter : j'utilise installshield
merci d'avance
#45 Re : Général » Requete imbriquée : Not IN » 29/04/2011 10:16:11
merci à toi marc
#46 Re : Général » Requete imbriquée : Not IN » 29/04/2011 10:07:32
la sous requete qui marche
(Select entete_ot.id_equipement from entete_ot where date_validation is null and id_equipement is not null)
#47 Re : Général » Requete imbriquée : Not IN » 29/04/2011 09:59:56
les 2 dans mon cas.
date_validation en premier cas c'est sur elle que mon raisonnement algorithmique tient:
je cherche à savoir si un ordre de travail est encore ouvert (donc sa date de validation est à null)
et enfin et ç'est là l'objet du dilem
exclure les id_equipement à null car il "derange" la clause NOT IN
#48 Re : Général » Requete imbriquée : Not IN » 29/04/2011 09:47:34
j'ai regardé avec attention ce SQLPRO a voulu dire.
créer une liste sans enregistrements à Null.
En effet (marc l'a dit) la liste peut contenir entre autres des id_equipement qui sont Null
voici la requete qui marche
select nro_equipement, designation, id_equipement
from equipements where datemaintenance
between '2010/01/01' and '2010/04/05'
and equipements.id_equipement not in
(Select entete_ot.id_equipement from entete_ot where date_validation is null and id_equipement is not null)
la derniere partie de la requete exclut des resultats pouvant êtres Null
#49 Re : Général » Requete imbriquée : Not IN » 29/04/2011 09:46:02
tout à fait exact d'ou le rajout de l'exclusion des valeurs pouvant être à Null
#50 Re : Général » Requete imbriquée : Not IN » 29/04/2011 09:19:01
Merci à tous pour vos réations.
si l'un d'entre vous a écrit un livre sur l'humilité,
SQLPro (meme le pseudo est..:-) devra le lire.
Cela, n'enleve rien à la qualité de sa remarque.
que je vais bien analyser.
Quoi que... sur ce coup là, Marc à parfaitement raison.
il a mal lu le post.
ma liste d'id_equipement existe bien
select id_equipement from entete_ot where date_validation is null;
on filtre seulement ceux dont le champs date_validation est à null
Bref d'un point de vu général, un forum est à destination de tous
si l'on devait être expert en SQL, plus personne ne poserais de question.
j'invite SQLPRO à m'aider à résoudre le probleme
en reprenant la requete exposée.