keitarosan

  • Signature
    >> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
  • Site web
  • Nombre de sujets
    6
  • Nombre de messages
    190
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

keitarosan
le 28/02/2005 à 15:51
authentification
tu peux pas suprimer les doublons comme ca...

admetton que tu supprime les doublon sur les villes, qu'est ce que mysql te retournerais pour une ligne ?

exemple
entreprise - ville

titi - Paris
tata - Rouen
toto - Paris


si tu fais un distinct, tu vas avoir quoi ?

entreprise - ville

titi - Paris
tata - Rouen
toto - NULL ?????


Ce n'est pas possible...
il est bien obliger de te sortir tout les champs.

Par contre, si tu veux juste une liste de ville, sans avoir les villes, et pas les autres données, tu peut faire:

- "SELECT DISTINCT(Ville) FROM entreprise."

La tu auras toutes les villes differentes ^^

Sinon, tu as peut etre un probleme sur le modele de ta base de données ;)

Ou alors tu manques de comprehension sur ce que tu veux vraiment faire, et dans ce cas, pose toi les bonnes questions pour changer ta requetes :)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 28/02/2005 à 15:45
trier les données
<?php
$sens = 'a' === $tri[$i] ? ' ASC' : ' DESC';
?>


est equivalent a:

<?php

if ('a' === $tri[$i])
{
$sens = ' ASC';
}
else
{
$sens = ' DESC';
}
?>


le '===' est pour une comparaison sur la valeur mais aussi le type.

exemple:

<?php

if (1 == '1')
{
echo ("1 == '1' -> TRUE");
}
else
{
echo ("1 == '1' -> FALSE");
}

if (1 === '1')
{
echo ("1 === '1' -> TRUE");
}
else
{
echo ("1 === '1' -> FALSE");
}
?>



cela va afficher:
1 == '1' -> TRUE
1 === '1' -> FALSE


Vala, je sais pas si j'ai été clair...
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 28/02/2005 à 15:37
authentification
le probleme vient très certainement de la jointure.

En general, quand il y a une jointure, avec dans un table un redondance de champs, tu les auras en plusieur fois.

je m'explique avec un exemple simple:

Table partage_id:
Paris - 75000
Rouen - 76000

Table entreprise:
Toto - 75000
Titi - 75000
Tata - 76000

ta requete fait la jointure:
elle ressort un truc du genre:

si tu fais une jointure, tu te retrouve avec:
Titi - 75000 - Paris
Tata - 75000 - Paris
Tata - 76000 - Paris

Le distinct, je pense pas que ca marcheras...

par contre, un GROUP BY devrait donner de meilleurs résultat.

Enfin je dis peut etre des betises...

Enfin essaye un truc comme ca:

<?php
$requete = "
SELECT
entreprise.Nom,
entreprise.id,
entreprise.Adresse,
entreprise.Ville,
entreprise.CP,
entreprise.Admin
FROM
entreprise,
partage_id
WHERE
partage_id.id_code = entreprise.CP AND
partage_id.id_user = '$statut' AND
entreprise.Ville LIKE '$lettre%'
ORDER BY
`id` ASC
GROUP BY entreprise.Ville
";

?>


Parcontre, il faut normalement mettre tous les champs du SELECT dans le GROUP BY, malgré que Mysql accepte si on n'en met qu'un seul.

Voila, je pense que c'est une piste a voir :)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 28/02/2005 à 15:24
Supprimer les doublons d'un tableau
ouep...
enfin y avais les autres fonctions a coté...

la c'est vraiment un cas... smiley
ca me rappelle un stagiaire au boulot...

qui nous foutais un truc du genre:

<?php

for ($i = 0; $i < 10; $i++)
{
$string = " Valeur de i: <?php echo $i; ?>";
}
?>


et bien sur, incapable de trouver tout seul ^^

Enfin bon, quand j'ai commencer le php y a 1 ans et demi, un copain m'a filer le lien nexen, et depuis je vais toujours voir dessus quand j'ai un doute, ou que je cherche une fonction...

Si le mec est pas capable de comprendre que quand on lui donne un lien, il regarde a coté, pour voir les autres...
on peut plus rien faire pour lui...
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 27/02/2005 à 21:13
Programation objet?
de rien

je pense que l'on peu faire plus clair que ce que j'ai dis, m'enfin si t'as compris, c'est deja une bonne chose ^^

et puis hésite pas en cas de soucis a poser tes questions ici :)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 27/02/2005 à 19:53
Programation objet?
le tout n'est pas de faire une classe et d'y mettre ses fonctions...
sinon, ca ne sert pas a grand chose.

Quand je parle penser objet, c'est que les classes que tu codes doivent reprensenter un objet (virtuel).
en gros, si je dis une classe formulaire, je pense objet formulaire:
et dans ce cas, tu dois de poser les questions suivantes :

- Comment je l'appelle (Formulaire)
- Il est caractérisé par quoi ? (Variable interne, appelée membres).
- Qu'est ce qu'il doit faire. (les methodes de ta classes).

une fois que t'as répondu a ca, je pense que t'as fait une bonne moitié de ta classe ;)

Après, il ne reste plus que le codage, lol.

Je te rassure, ce n'est pas forcement toujours evident au début, mais sache que c'est en forgeant que l'on devient forgeron. Alors si tu prends l'habitude assez vite, le reste viendras tout seul avec la patience et la perseverence...

Vala vala
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 27/02/2005 à 18:32
Taille limite de la base de donné chez Free
ah si...
j'ai une base de 2.7Mo, dont une table de 49 000 entrées smiley a 1.8Mo, et ca passe bien ^^

Donc je pense que t'as un peu de marge :p
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 27/02/2005 à 18:30
Taille limite de la base de donné chez Free
bah tu fais un test ^^

si ca se trouve, la base de données est limitée sur la taille dans le quotas du ftp... Meme si ca n'a aucun rapport smiley

Personnellement, j'ai pas encore d'assez grosse base de données... quoi que... attends, je regarde :p
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 27/02/2005 à 18:27
Programation objet?
la programmation objet est pour le confort et la maintenance ^^

il faut juste apprendre a penser objet, et ca c'est un peu plus difficile a s'y mettre.
Mais une fois que c'est fait, quel bonheur...
on se retrouve avec des pages qui contienne que peut de php, le tout etant traiter par les classes et donc les objets...

pour faire un exemple simple:

<?php

$calcul = new Calcul();

$calcul->Initiliser(20); //20
$calcul->Ajouter(20); //40
$calcul->Diviser(8); //5
$calcul->Multiplier(20); //100
$calcul->Resultat(); //affiche le résulat.

?>


//affichage
Le résultat des caculs est de 100.


Tu vois que l'utilisation est relativement simple, claire, propre.
tu n'a pas besoin de recuperer les valeur entre deux pour les remetre en parametre, comme tu devrait le faire avec des fonctions.

Et si demain tu veux rajouter une methode de calcul, c'est super simple. :)

Et le mieux pour s'y retrouver, c'est de faire un fichier par classe.
comme ca, tu es sur de t'y retrouver. En general, un nom comme class_calcul.php, calcul.class.php, etc... est compréhensible, car il porte le meme nom de que ton objet.

Tu peux aussi faire des couches d'abstration, c'est a dire obliger tes fichiers a passer par une classe pour faire certaine chose. Un exemple flagrant se situe sur les classes d'abstraction sql.

tu obliger tous tes fichiers a passer par une telle classe pour effectuer tes requetes.
Quel interet ?

Toutes tes requetes fonctionneront pareillent, seront simplifier, et tu peux y integrer des choses comme la protection, la gestions des erreurs sql, etc...

-------------------------------
couche 1: tes fichiers
(traitement des données...)
-------------------------------
| ^
| |
V |
-------------------------------
couche 2: ta class sql
(protection,gestion erreur,
mise en forme des résultat...)
-------------------------------
| ^
| |
V |
----------------------------
couche 3: la base de donnée
(renvois les données vers
php...)
----------------------------


si tu connais un peu mysql:

<?php
//declaration de l'objet
//la classe gere la connexion, le choix de la base, via un fichier de configuration, ou directement en interne
$mysql = new Mysql();

//la requete:
$query = "SELECT nom FROM pays WHERE continent = 'europe'";

//execution de la requete et recupération des resultat:
$result = $mysql->ExecuteQuery($query);

//on test si la requete est bien passée...
if ($result == FALSE)
{
//traitement de l'erreur...
echo ("une erreur est survenue:");
echo ("Code erreur: ".$mysql->GetErrorMsg()."");
echo ("Message:".$mysql->GetErrorMsg()."");
}
else
{
//affichage des résultat...
foreach($result as $line)
{
echo ("Pays :".$line["nom"]."");
}
}
?>

Pays: France
Pays: Allemagne
Pays: Espagne
...


Voila, c'est un cas super simple.
C'est une classe que j'utilise tout le temps maintenant. Elle s'occupe de la connection a la base de données, et tout ca.

Maintenant, tu veux rajouter une methode.
C'est tout simple, ca se fait tout seul, et tu peux réutiliser les variables internes.
Ainsi, tu ne passe plus beaucoup de parametres, ton code devient clair, et n'importe qui peut utiliser tes classes, en commencant par toi meme, sans savoir comment ca marche :)

Si c'est dans ta classe, tu peut réutiliser les variables interne qui sont encore en memoire.

Bon, c'etait peut etre un peu compliqué cet exemple, mais c'est pour te montrer que ca peut etre assez puissant ^^

Et pour finir, un petit avantage:
Toutes les methodes d'une classes sont plus ou moins lié. C'est comme si tu regroupaient des moutons avec des moutons, et de vaches avec des vaches...
tu les mets dans un fichier, et hop, tu sais que cette classe s'occupe de telle chose.
Les classes sont spécialisées pour faire un ou plusieurs boulot précis, sur un objet précis.

vala, j'espere pas avoir été trop confu.

En tout cas, ca fait quelques mois déja que je ne code plus qu'en classes, en ne fesant plus aucune fonctions, et je m'en sort bien, et c'est super réutilisable pour certaines choses :).

Pour le reste, ca implique parfois quelques petites modif, mais bon, moindres qu'avec des fonctions, crois moi ;)

KeitaroSan
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
LoadingChargement en cours