LupusMic

  • Signature
    Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
  • Site web
  • Nombre de sujets
    26
  • Nombre de messages
    1 684
  • Nombre de commentaires
    4
  • Nombre de news
    Aucune
  • Niveau en PHP
    Gourou

Ses derniers messages sur les forums

LupusMic
le 11/03/2008 à 00:51
Utiliser une class dans une autre class
Et je rajouterais que tu devrais lire le mode d'emploi de PHP, à la section POO, histoire de comprendre ce que tu fais ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 07/03/2008 à 15:34
Requete ok sous PHP4, et ne fonctionne plus sous PHP5
Et pour encore simplifier les choses, et rendre l'opération atomique, on peut imaginer remplir la table MyISAM depuis une procédure stockée appelée via un trigger.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 07/03/2008 à 15:26
Stop à l'harcelement
(LA GLOBULE) Fais gaffe, les boulets ont un service juridique qui a la gâchette facile ;)

Le seul moyen d'obtenir les informations nominatives est de porter plainte. Je sais que ça prend du temps et tout et tout, mais à partir d'un moment ça suffit les conneries.

Portes plainte pour harcèlement, et demande conseil à ton avocat.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 06/03/2008 à 20:40
Requete ok sous PHP4, et ne fonctionne plus sous PHP5
(LA GLOBULE) C'est moi qui ai parlé d'InnoDB. J'ai l'habitude d'utiliser ce moteur en raison des contraintes de clé.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 06/03/2008 à 01:13
Requete ok sous PHP4, et ne fonctionne plus sous PHP5
Pourquoi limiter à 100 le nombre de marques ? N'oublie pas que la pire des optimisation, c'est celle qui créé des bogues. Si vraiment ça commence à ramer, il sera toujours temps d'optimiser.

Ta requête ne passait plus parce que MySQL 5 ne comprend pas le SQL comme le comprenait MySQL 4. D'ailleurs, je le comprends, le pauvre.

Pour comprendre ce qui se passe, il faut extraire le morceau suivant :
modele LEFT JOIN voiture ON voiture.idmarque = marque.idmarque


L'erreur retournée est parfaitement explicite. Dans ce code, MySQL fait une jointure sur les table modele et voiture. À ce moment, l'interpréteur ne connait aucune autre table. Ainsi la table marque, on connait pas. D'ailleurs, c'est une erreur de faire intervenir la table marque.

En mettant des parenthèse autour des deux tables, tu grille la priorité au left join en forçant la première jointure. Ce qui créé une table dans laquelle la colonne souhaitée dans le on clause existerait. Certes ça marche, mais question performances... j'ai des doutes sérieux.

Je repose les tables à ma convenance (pour faire des essais), et réécrit la requête que tu semble souhaiter. Au fait, dans la table voitures, le champs marque_id est malvenu. À mon avis. Et si vraiment il y a besoin d'optimiser, il faudra se poser les questions à ce moment.

create table marques (
id int(11) NOT NULL auto_increment,
marque varchar(255) default NULL,
primary key (`id`)
) engine='InnoDB' ;

create table modeles
( id int(11) NOT NULL auto_increment
, modele varchar(255) default NULL
, marque_id integer

, primary key (`id`)
, foreign key (marque_id) references marques(id)
) engine='InnoDB' ;

create table voitures
( id int(11) NOT NULL auto_increment
, label varchar(255) default NULL
, modele_id integer

, primary key (`id`)
, foreign key (modele_id) references modeles(id)
) engine='InnoDB' ;

explain
select
marques.id as marque_id
, marques.marque as marque
, modeles.id as modele_id
, modeles.modele as modele
, count(voitures.id) as total
from voitures left join modeles on voitures.modele_id
left join marques on modeles.marque_id
group by marque, modele
order by marque, modele asc ;


Et puis un conseil : du SQL en aveugle, c'est casse-gueule. Tu devrais lire la documentation de MySQL in extenso pour vraiment maîtriser ces arcanes (ce que je suis loin de pouvoir assurer pour moi ;) ).
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 04/03/2008 à 16:12
Calculer le poids d'une BDD
Le moyen le plus fiable est encore de demander au système d'exploitation la taille des fichiers dans lesquels sont stocker les données.

À savoir que cela dépendras du moteur utilisé lors de la création des tables.

Mais au fait, dans quel but cette mesure est effectuée ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 01/03/2008 à 18:25
créer un tableau ARRAY multidimensionnel
Un tableau n'est clairement pas adapté. Quel est le but de la manœuvre ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 29/02/2008 à 15:54
Faire une requête "pondérée"
Quel dommage que MySQL ne supporte pas les index calculés :-/
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 28/02/2008 à 14:54
Faire une requête "pondérée"
(i M@N) Non, les traitements de sélections sont à faire avec la requête SQL.

(maxroucool) Il faut que tu traduises ton français en logique. C'est une juste un problème de formulation :

select * from articles where published > subdate(now(),2) or weight > 25 order by published, weight
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 22/02/2008 à 01:53
Page de démarrage : index.php ?
(Keika) Le navigateur ne teste pas des noms de fichier au hasard. C'est le serveur web qui sait quel fichier servir lors de la requête du client HTTP.

Classiquement, avec Firefox, si tu rentres « lupusmic.org » dans la barre d'adresse :

- l'URL est invalide
- vérification que c'est un nom de domaine
- si oui, interrogation de la machine lupusmic.org, voir www.lupusmic.org sur le port 80. L'interrogation porte sur la demande du document racine
- si non, interrogation d'un moteur de recherche ou message d'erreur selon la configuration du client web. Ce n'est pas une erreur HTTP 404...

Lorsque le serveur ce voit interroger sur http://lupusmic.org/, il va vérifier qu'il gère un serveur web nommé lupusmic.org.
- si oui, il regarde quel est la ressource spécifiée dans la requête, et se débrouille pour fournir une réponse. S'il trouve la requête, et que le client a le droit de la consulter, il renvoie un HTTP 200 avec les données. Sinon, il peut renvoyer un HTTP 403, un HTTP 404 ou encore un HTTP 500.

La liste des codes HTTP est à connaitre, indispensable.

À noter que le contenu de la page renvoyée est déterminée par le serveur. C'est le serveur qui, avec des mécanismes spécifiques détermine s'il faut renvoyé un fichier créé à la volé, ou un fichier d'un nom particulier dont il faut servir le contenu.

Mais bon, tout ça suppose l'utilisation d'un serveur Web, et non pas l'ouverture directe du fichier à consulter depuis le système de fichiers ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LoadingChargement en cours