Les views sur PHPmyAdmin

Posté par Florence le 24 mars 2011

Je vous fait un petit retour d’expérience. Je bosse en ce moment sur un gros site, et la premier boulot est la refonte de l’architecture de la BDD.
On passe d’un système CMS à notre système maison. Donc pour récupérer les infos et les placer dans ma table unique, j’ai dû aller les pêcher sur 4 tables différentes. Donc la fête aux jointures (INNER JOIN). J’ai également dû créer des tables intermédiaires pour créer des équivalence (id/texte). Et hier alors que je devais tout refaire à zéro (le client a continuer à renseigner l’ancienne base après l’import donc rebelote) j’ai découvert la merveilleuse fonction CREATE VIEW.

Voici la manière dont je procède afin de gagner du temps dans ma programmation et la récupération des données. Dans PHPmyAdmin, je visualise les résultats en tapant les requêtes dans SQL, j’y écrit mes jointures et tutti quanti, cela me permet d’avoir une représentation visuelle et être sûr que j’ai les bonne infos.
Quand on fait des requêtes sur une seule table on peut exporter les données directement en .sql, en revanche quand on en utilise plusieurs c’est impossible.
CREATE VIEW va créer une table « fictive » (je ne sais pas si c’est le mot) qui va fonctionner comme une table et vous permettre d’avoir vos données en un seul tableau. L’immense intérêt et qu’on l’utilise comme une table dans les requêtes via sql et cela permet de créer ses propres tables rapidement pour un usage précis, comme par exemple passer par un view pour récupérer les infos et updater une tierce table directement vis la commande sql.
Attention les view sont une vue de vos tables donc ce que vous modifiez dans la view est modifié dans la table originelle et si vous supprimez la table et bien plus de view, enfin si elle reste là mais comme il y une erreur pas moyen de la supprimer. Donc si vous devez supprimer une table pensez à supprimer au préalable els view qui lui sont rattachées en respectant la chronologie.

Voilà en espérant que ça vous serve.

24mar

Aligner verticalement son site dans tout les navigateurs……..

Posté par misterpink le 6 décembre 2010

Salut a tous et a toutes

voici un  pti code que j’ai tester sur mon site : www.misterpink.fr (un pti peu de pub)  ;-)

bien sur rajouter entre <head></head> :<script type= »text/javascript » src= »chemin de votre .js »></script>

et enregistrez ce code en le nommant par exemple: centrer.js
function align()
{
var lmt = document.getElementById(‘contenant’);

// si votre contenant s’appelle « papa » ou « maman » ou je ne sais quoi d’autre changer (‘nom de votre div’)…
var container = document.documentElement;
if(lmt && container)
{
var containerHeight;
if (container.innerWidth)
{
containerHeight = container.innerHeight;
}
else
{
containerHeight = container.clientHeight;
}
var lmtHeight;
if (lmt.innerWidth)
{
lmtHeight = lmt.innerHeight;
}
else
{
lmtHeight = lmt.offsetHeight;
}
var y = Math.ceil((containerHeight – lmtHeight) / 2);
if(y < 0)
{
y = 0;
}
lmt.style.position = « relative »;
lmt.style.top = y + « px »;
}
if (document.getElementById)
{
document.body.style.visibility = ‘visible’;
}
}
function addevent(obj,evt,fn,capt){
if(obj.addEventListener)
{
obj.addEventListener(evt, fn, capt);
return true;
}
else if(obj.attachEvent)
{
obj.attachEvent(‘on’+evt, fn);
return true;
}
else return false;
}
if (document.getElementById && document.getElementsByTagName)
{
addevent(window, ‘load’, align, false);
addevent(window, ‘resize’, align, false);
}

function align(){
var lmt = document.getElementById(‘contenant’); var container = document.documentElement;
if(lmt && container) { var containerHeight; if (container.innerWidth) { containerHeight = container.innerHeight; } else { containerHeight = container.clientHeight; } var lmtHeight; if (lmt.innerWidth) { lmtHeight = lmt.innerHeight; } else { lmtHeight = lmt.offsetHeight; } var y = Math.ceil((containerHeight – lmtHeight) / 2); if(y < 0) { y = 0; } lmt.style.position = « relative »; lmt.style.top = y + « px »; } if (document.getElementById) { document.body.style.visibility = ‘visible’; }
}
function addevent(obj,evt,fn,capt){ if(obj.addEventListener) { obj.addEventListener(evt, fn, capt); return true; } else if(obj.attachEvent) { obj.attachEvent(‘on’+evt, fn); return true; } else return false;}
if (document.getElementById && document.getElementsByTagName){ addevent(window, ‘load’, align, false); addevent(window, ‘resize’, align, false);}

voili voilou

a pluch

paco (alias misterpink)

06déc

Auto-Entrepreneur

Posté par Florence le 2 décembre 2010

Nous en avons tous entendu parlé pendant la formation, certains se destinaient à ce statut et d’autre non, comme moi au hasard.

C’est donc pour cela que me voici à vous faire un micro post sur l’Auto-Entreprenariat car au final je me suis inscrite…
J’espère que mes collègues de formation viendront apporter leur pierres car je suis sûre qu’ils se sont renseignés bien mieux que moi !

Réflexe de base je tape Auto-Entrepreneur sur Google et me voici sur le site qui apparaissait en premier, naïve que je suis ! Ce n’est pas le site officiel !
Ce site propose ses services pour vous inscrire et cela pour une somme assez importante (dans les 80 euros), bien sûr c’est tellement compliqué qu’on a bien besoin de se faire plumer aider.
Heureusement, je ne me suis pas inscrite car je trouvais ça aberrant. Cela m’a permis une petite recherche plus loin de tomber sur des forums sur de nombreuses plaintes et mise en garde.

Alors je vous évite cela en vous indiquant le site officiel
Vu que les instances officiels ne font rien autant qu’on se serre les coudes pour éviter les embuches.

02déc

Une police en dehors des standards via CSS3

Posté par Florence le 7 octobre 2010

Voici donc du CSS3 tout beau tout opérationnel sur tous les navigateurs (si je ne m’abuse).  Bien sûr ça demande des petites préparations:

1. Trouver sa police et la récupérer au fomat .oet (pour IE un traitement rien que pour lui pour changer…) et .ttf ou .otf pour les autres
2. Ranger ces polices où vous voulez, pour ma part j’ai un dossier font car j’aime quand c’est bien rangé !

Comment cela se passe? on va déclarer la police dans la feuille de style CSS en indiquant où la trouver et le nom qu’on lui donne car c’est vous qui décidez. Une fois que c’est fait il ne vous reste plus qu’à l’utiliser comme n’importe quelle police. Facile non?!

Cas d’une police qui supporte les changments de style (italic, bold,…)

@font-face {
font-family: "Police_maison";
/*Le nom que vous lui donnez */
src: url('font/MaSuperPolice-Regular.oet');
/* spécifique à IE */
src: url('font/MaSuperPolice-Regular.otf') format('opentype');
/* pour les autres ! IE ne sait pas lire la balise format donc il ne s’occupera pas de cette ligne*/
}

/*<!– Pour utiliser la police, il ne reste plus qu’à le spécifier –>*/
h1 {
font-family: "Police_maison";
font-style: normal;
font-weight: bold;
}

Cas d’une police qui a un fichier spécifique par style

/*<!– Ici on déclare la police en indiquant son nom, le type de style qui lui est associée (italic pour l’exemple) et le lien vers le fichier. Le nom de la police est le même quel que soit la variante–>*/

@font-face {
font-family: "Police_circonstancie_normal";
font-style: normal;
src: url('MaSuperFonte-Regular.eot');
src: url('MaSuperFonte-Regular.ttf') format('opentype');
}

@font-face {
font-family: "Police_circonstancie_italic";
font-style: italic;
src: url('MaSuperFonte-Italic.eot');
src: url('MaSuperFonte-Italic.ttf') format('opentype');
}

/*<!– On idique le nom de la police. Selon le style (italic, normal ou bold) le bon fichier sera utilisé –>*/

h1 {
font-family: "Police_circonstancie_normal"; /* Utilisera MaSuperFonte-Regular */
font-style: italic;
font-weight: normal;
}

span {
font-family: "Police_circonstancie_italic"; /* Utilisera MaSuperFonte-Italic */
font-style: normal;
font-weight: normal;
}

Categories: Codage (HTML/CSS)
07oct

Le plein de polices

Posté par Florence le 6 octobre 2010

Qui n’a pas chercher pendant des plombes LA police ultime qui va coller au thème du site, ajouter à l’ambiance, à son identité et faire jolie dans le bandeau que c’est moi qui l’ai fait. Mais jusqu’à présent nous étions quelques peu brimer dans la créativité lié à la typographie car maître référencement domine le monde du web et une police non webentionnel c’est image que cela passe…

Mais le monde merveilleux de CSS3 va permettre aus amoureux des belles fonts de mettre de l’exotisme dans les créations web. Bon c’est sûr pour l’instant tous les navigateurs ne sont pas au même niveau concernant le CSS nouvelle mouture mais pour ce qui est des polices youhou ça marche ! Comme il est un peu tard, je ne vais pas vous mettre le code de suite par contre je vais vous donner quelques liens de site pour trouver la police de vos rêves.

Dafont:
Le site propose des polices payantes mais également des polices gratuites. Attentions toutefois aux droits d’utilisation, à différencier usage personnel et usage commercial

Font Squirrel:
Un site qui propose des polices gratuites y compris pour usage commercial. Et le gros plus est qu’il propose de télécharger les police sous forme de kit @font-face. Exactement ce dont on a besoin pour le CSS3, ils sont merveilleux n’est ce pas !

The League of Moveable Type:
Un éventail de police en open source. Pour l’instant le « Lettercase » est en cours de developpement vous pouvez vous inscrire pour devenir beta tester si le coeur vous en dit.

Type The Font:
Quelques polices, à farfouiller pour vérifier les droits

Urban Fonts:
Des polices payantes et gratuites vous ne pouvez pas vous tromper un onglet pour chaque chose et chaque chose à sa place. Les droits sont spécifier dans les dossiers via fichier .txt dont la surprise à la décompression !

Voilà n’hésitez pas à partager vos trouvailles ! Prochain article le CSS3 pour la typo :-D

Categories: Graphisme,Ressources
06oct

Free Vector Graphics

Posté par Florence le 23 septembre 2010

Site en anglais qui vous propose des icônes vectorielles.

Exemple d'image vectorielle

Différents formats sont disponibles: .psd, .eps et .ai.

Afin de visionner les images cliquez sur Read More… au niveau de chaque article.

N’oubliez pas de vérifier les droits d’utilisation de chaque set !

Au niveau du téléchargement n’oubliez pas que Rapidshare limite le nombre de téléchargement quotidien (sauf si vous avez un abonnement)

Bonne recherche: Free Vector graphics

Categories: Graphisme,Ressources
Mots-clefs :,
23sept

DD Roundies

Posté par Florence le 14 septembre 2010

Voilà un petit pense bête pour chat et autres webmasters.  Le fameux dédé qui ne pèse que 8ko et ce serait donc bête de s’en passer. Donc voici les bouts de code qui étaient autorisés à la certification.

Et pour récupérer le fichier dd_roundies.js c’est par là

Si vous voulez voir les choses plus en détails je vous suggère l’article d’Alsacréation: Créer des coins arrondis en CSS et sans images

<!–HTML–>
<script type="text/javascript" src="dd_roundies.js"></script>

<!–Si vous voulez conditionner le fonctionnement de votre script à IE n’oublié pas d’ajouter le hack.  Dans ce case IE8 ou antérieures –>
<!--[if lte IE 8]> <![endif]-->

<!– Dans ce cas tous les bords on le même angle –>
DD_roundies.addRule('#div', '5px');
<!– On renseigne pour chaque angle sa valeur en respectant l’ordre: haut gauche, haut droite, bas droite, bas gauche –>
DD_roundies.addRule('#div', '5px 6px 5px 10px');
</script>

<!–CSS–>
#div
{
-moz-border-radius: 5px;
-webkit-border-radius:5px;
}

14sept

Modification: récupérer la valeur d’un menu déroulant

Posté par Florence le 14 septembre 2010

Nous avons vu ici la problématique de la récupération d’une valeur pour un bouton radio et bien aujourd’hui toujours plus loin toujours plus haut, toujours plus PHP nous nous attaquons au menu déroulant avec un nouveau contexte.
Bien sûr on peut garder le même fonctionnement que les boutons radios si on a un menu déroulant avec des valeurs fixes.

Notre postulat du jour est que votre menu déroulant fait références à des noms de clients. Tout ce que l’on souhaite au site est que le nombre de client augmente, on est dans dans une perspective dynamique. Il faut donc que le menu soit lié à la base de donnée, jusqu’ici tout va bien on a besoin d’une boucle. Oui MAIS comment fait on pour retrouver la valeur lié au menu déroulant et la récupérer pour l’affichage. On ne peut pas prévoir tous les cas de figure vu qu’on ne sait combien il y en aura…

Vous m’avez compris, et vous vous doutez que là encore on  avoir besoin d’un tableau pour tester la similitude entre la valeur de notre client et la valeur qui est dans la BDD. Ce qui change c’est que notre tableau ne sera pas pré existant, on v faire en sorte qu’il soit aussi dynamique grâce à… comme d’habitude une boucle !

La petite astuce est que l’on va tricher pour ce qui est de la première entrée (indice 0) qui sera créée à partir de l’information récupérée dans la base de donnée. Plusieurs avantages:
- elle apparaitra toujours en premier lieu au niveau de votre menu déroulant
-vous connaissez toujours la valeur de cette entrée et allez pouvoir créer des conditions.
Exemple: Si la valeur est 0 alors je ne modifie pas la valeur du client au niveau de la BDD

J’ai simplifié les choses pour la démonstration, en n’utilisant qu’une seule table mais dans mon cas de stage, le client apparait à une table spécifique et les infos à modifier font partie d’une table contrat. Le lien étant fait par les id de liaison.

<?php

///////Déclaration des variables
$fiche_client = $_GET['modif_client'];
#<!– $_GET['modif_client']: on a besoin de savoir quel est le client que l’on doit modifié. Pour cela on va avoir besoin de récupérer une information spécifique le concernant. Dans ma BDD j’ai une colonne id avec auto incrémentation, le numéro est unique. Je vais donc faire passer dans l’URL ce numéro d’id quand je clique sur le lien modifier. –>

///////Requêtes
#<!– On récupère les informations de la table client pour avoir les différentes possibilités du menu déroulant –>
$sql_nom_client = mysql_query('SELECT id, nom
FROM table
ORDER BY nom ASC');

#<!– Récupération de la valeur du client afin de l’intégrer dans le tableau associatif des clients dans le but de la faire apparaitre en premier –>
$sql_recup_nom = mysql_query('SELECT nom
FROM table`
WHERE nom = "'.$fiche_client.'"');
$valeur_recup = $sql_recup_nom['nom'];

///////Tableau associatif
#<!– On déclare la première ligne qui va nous permettre de récupérer le choix effectué on concaténe le texte [récup] pour que ce soit immédiatement compréhensible au niveau du menu déroulant. –>
#<!– Au niveau du tableau le premier indice est 0 comme cela on est sûr que c’est notre info récupéré qui s’affiche en premier! –>
$tableau_client = array ( 0 => $valeur_recup.'[recup].');

#<!– La boucle WHILE va récupérer les informations et les ajouter au taleau associatif. La structure donne: $var[x] ici x est une variable récupérant l’info de la BDD–>
while ($tabl_recup_act = mysql_fetch_array($sql_nom_client))
{
$tableau_client[$tabl_recup_act['id']] = $tabl_recup_act['nom'];
}

#<!– La boucle FOREACH va permettre l’affichage du menu déroulant –>

foreach ($tableau_client as $clef => $client)
{
echo '<option value="'.$clef.'">'.$client.'</option>';
}
?>

Voili voilou !

PS: pour l’exemple j’ai modifié mon code pour le mettre en forme simplifié. S’il y a une erreur prévenez moi mais au moins vous avez là le principe de base

Categories: PHP,Programmation
Mots-clefs :, ,
14sept

Modification: récupérer la valeur d’un bouton radio

Posté par Florence le 13 septembre 2010

Début de stage et premier cas pratique: modifier une fiche pré existante. Jusqu’ici rien de compliqué on est dans un cas classique de modification de base de donnée.
Et là retour à la réalité: comment je fais pour que mon bouton radio soit correctement coché afin d’indiquer la valeur renseignée lors de la création?

Dis comme ça c’est tout simple mais au final pour en arriver là il faut un peu de code.
Bien sûr dans le cas d’une case à choix restreint on peut écrire tout le code mais mon but était de trouver une technique qui:
- évite d’écrire x fois le même bout de code
- sois souple: puisse accepter de nouvelles réponses sans avoir à tout re coder
- dont la logique puisse être extrapolée à d’autres cas de figure (menu déroulant)

Voici donc mon bout de code qui devrait faire plaisir Athanaël car on va utiliser un tableau !

<?php
//<!– Requête de récupération des informations dans la BDD –>
$requete_donnee_table = mysql_query('SELECT *
FROM `".table."`
WHERE id = "'.$_GET['modif'].'"');


$tableau_donnee_table = mysql_fetch_array($requete_donnee_table);

//<!– Déclaration de la variable qui va nous servir à tester l’égalité entre la donné contenue dans la BDD et la valeur du bouton)–>
$radio_actif = $donnees_table['actif'];

//<!– Le tableau présente les différents cas de figure: un nouveau cas? il ne vous reste plus qu’à rajouter l’intitulé et la valeur et cela se rajoutera automatiquement–>
$option_actif = array ('1' => 'Oui', '0' => 'Non');
//<!– Création automatique des différents états via une boucle.
foreach($option_actif as $intitule => $valeur)
{
?>
<input type="radio" name="actif" value="<?php echo $intitule; ?>" <?php if ($radio_actif==$intitule) echo 'checked="checked"'; ?> />
<label><?php echo $valeur; ?></label>
<?php
}
?>

–> Dans la même veine retrouver l’article sur le menu déroulant!

Categories: PHP,Programmation
Mots-clefs :, , ,
13sept

Architecture de Base de Donnée

Posté par Florence le 5 septembre 2010

Voici un outil, qui nous a été présenté par Athanaël, qui va vous permettre de visualiser l’architecture de votre Base de Donnée: wwwsqldesigner

La page vous mène vers la fiche de l’utilitaire. L’onglet Download vous permet de télécharger l’outil, mais vous pouvez également via la démonstration créer votre BDD en ligne. Au niveau du menu latéral il vous suffit de suivre le lien: Demo installation

En mode démonstration vous pouvez changer la langue via Option. Rechargez la page.
Il vous suffit alors de supprimer toutes les tables pour créer votre propre BDD.

Créer un lien entre deux tables:

Soit récupérer l’ID de la talbe 1 pour qu’elle apparaisse dans la table 2.

1. Cliquez sur l’Id de la table 1
2. Au niveau du menu latéral: Créer une clef étrangère / Creat foreign key
3. Cliquez au niveau du nom de la table, ici table 2

Exportez votre BDD

Une fois que votre architecture est prête vous pouvez exporter votre BDD via la commande Save/Load.
Pour éviter des erreurs d’importation pensez à correctement renseigner les éléments de votre BDD, dans le cas de liste par exemple.

Categories: Boite à Outils
05sept