Architecture SQL, faire des favoris
Résolu/Fermé
Yuh12
Messages postés
184
Date d'inscription
mercredi 7 mai 2014
Statut
Membre
Dernière intervention
28 septembre 2017
-
7 mai 2014 à 06:47
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 - 8 mai 2014 à 17:43
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 - 8 mai 2014 à 17:43
A voir également:
- Architecture SQL, faire des favoris
- Logiciel architecture gratuit - Télécharger - Architecture & Déco
- Chrome exporter favoris - Guide
- Exporter favoris firefox - Guide
- Architecture 3d gratuit - Télécharger - Architecture & Déco
- Favoris google - Guide
2 réponses
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
Modifié par mpmp93 le 7/05/2014 à 07:42
Modifié par mpmp93 le 7/05/2014 à 07:42
Bonjour,
L'autre solution est de mettre dans la table utilisateurs un champ supplémentaire favoris de type longtext. Ainsi vous n'avez pas besoin de créer et gérer votre table supplémentaire.
Dans ce champ favoris, vous mettez la sérialisation des favoris, exemple:
et plus loin dans le SQL:
xxx étant l'id de l'utilisateur
Pour le rajout ou suppression d'un favori:
$favoris = unserialize($champFavori);
pour la suppression d'un favori, passer par une boucle foreach:
et vous réenregistrez avec SQL
Avec cette solution, pas besoin de table supplémentaire, ni de jointure et tout le bastringue
A+
public function meilleurProgrammeurDuMonde() { return "MOI"; } // humour
L'autre solution est de mettre dans la table utilisateurs un champ supplémentaire favoris de type longtext. Ainsi vous n'avez pas besoin de créer et gérer votre table supplémentaire.
Dans ce champ favoris, vous mettez la sérialisation des favoris, exemple:
$favoris = array(17,27,32);
et plus loin dans le SQL:
$sql = "UPDATE utilisateurs SET favoris='".serialize($favoris)."'" WHERE id=xxx"
xxx étant l'id de l'utilisateur
Pour le rajout ou suppression d'un favori:
$favoris = unserialize($champFavori);
$favoris[] = 44; // rajoute le favori 44
pour la suppression d'un favori, passer par une boucle foreach:
$aSupprimer = 27; // valeur à supprimer foreach ($favoris AS $key => $val) if ($val == $aSupprimer) { unset($favoris[$key]) } }
et vous réenregistrez avec SQL
Avec cette solution, pas besoin de table supplémentaire, ni de jointure et tout le bastringue
A+
public function meilleurProgrammeurDuMonde() { return "MOI"; } // humour
Yuh12
Messages postés
184
Date d'inscription
mercredi 7 mai 2014
Statut
Membre
Dernière intervention
28 septembre 2017
24
7 mai 2014 à 09:21
7 mai 2014 à 09:21
Donc à partir de ma deuxième proposition, un longtext suffirait pour stocker les favoris? Même si un utilisateur met plus de 100 médias en favoris, en terme de ressources il n'y aura pas de problème?
Merci beaucoup pour ces conseils en tout cas !!!
Merci beaucoup pour ces conseils en tout cas !!!
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
7 mai 2014 à 10:04
7 mai 2014 à 10:04
la sérialisation d'un ARRAY ne contenant que des valeurs numériques prendra en fait très peu de place. Un longtext prend la place en BDD en fonction de son contenu. Un longtext contenant un array sérialisé de 100 valeurs fera moins de 1Ko, une paille en somme. En tout cas beaucoup moins que votre première solution. De plus, vous n'aurez pas besoin de jointures entre tables vu que pour chaque utilisateur on a directement ses favoris associés à sa fiche.
Yuh12
Messages postés
184
Date d'inscription
mercredi 7 mai 2014
Statut
Membre
Dernière intervention
28 septembre 2017
24
8 mai 2014 à 17:43
8 mai 2014 à 17:43
Génial je vais tester tout ça, je ne connaissais pas du tout le serialize.
Je marque ce sujet comme résolu du coup, merci beaucoup pour votre aide :) !
Je marque ce sujet comme résolu du coup, merci beaucoup pour votre aide :) !