2010-09-12 6 views
1

Je souhaite mettre à jour une table MySQL avec les informations de deux autres tables. Je vais mettre en place un travail cron, mais je ne sais pas quel code PHP utiliser.Code PHP pour mettre à jour la table MySQL

Chaque fois que le travail cron s'exécute, je veux que la colonne 'VideoNumber' de la table 'Profiles' soit mise à jour avec la quantité de vidéos qu'ils ont téléchargées sur le site. Les informations vidéo sont stockées dans une table appelée "Vidéos" et chaque vidéo a un "OwnerID" pour identifier l'utilisateur qui l'a téléchargé. Cela correspond à la colonne 'ID' dans le tableau 'Profiles'. Je voulais également que la colonne 'PhotoNumber' du tableau 'Profils' soit mise à jour avec la quantité de photos que le même utilisateur a téléchargées - les données de la photo sont stockées dans la colonne 'Photos'.

Quelqu'un peut-il aider?

Répondre

0

Vous vous trompez. Mettez à jour les valeurs de ces colonnes immédiatement après la création/suppression d'une nouvelle vidéo/photo. Vous pouvez placer tout dans la transaction pour vous assurer que tout ira bien:

BEGIN TRANSACTION; 
INSERT INTO videos VALUES (...); 
UPDATE profiles SET videosCount = videosCount + 1 WHERE id = ?; 
COMMIT; 



BEGIN TRANSACTION; 
DELETE FROM videos WHERE id = ?; 
UPDATE profiles SET videosCount = videosCount - 1 WHERE id = ?; 
COMMIT; 

Faites de même pour les photos.

Vous pouvez même utiliser triggers pour rendre tout plus clair (à savoir. Laisser les valeurs des colonnes de comptage base de données poignée augmentation/diminution)

DELIMITER \\ 
CREATE TRIGGER abc AFTER INSERT ON videos 
FOR EACH ROW BEGIN 
    UPDATE profiles SET videosCount = videosCount + 1 WHERE id = NEW.profile_id; 
END\\ 

DELIMITER ; 
+0

Le déclencheur INSERT fonctionne. Quel déclencheur utiliserais-je lorsque les vidéos sont supprimées? – hohner

+0

Je l'ai compris, vous remplacez "+ 1" par "- 1" et "NEW.profile_id" par "OLD.profile_id". Merci – hohner

+0

P.S., si quelqu'un lit ce problème - je recommande vraiment de changer le code PHP comme suggéré par Crozin. Les déclencheurs sont corrects, mais ils sont plus faciles à mon avis. Aussi, pour mon incrédulité, certains hôtes refusent de vous autoriser à créer des déclencheurs sur phpMyAdmin via la commande SQL. Sauf si vous achetez un paquet VPS ou serveur dédié, bien sûr ... – hohner

0

Vous devez d'abord sélectionner les données de ces deux tables, affecter certaines données à l'INSERT et les transmettre.

+0

L'OP veut mettre à jour le tableau des profils. –

Questions connexes