IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Chaîne de caractères et base de données


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut Chaîne de caractères et base de données
    Bonjour,

    Je souhaiterai entrer des données dans une base de données.
    J'explique plus en détails : dans ma base de données qui regroupe des imprimantes, se trouve une table "compteurs" qui affiche les compteurs d'impression de chaque jour, avec pour clé primaire l'identifiant de l'imprimante (clé primaire d'une autre table), concaténée avec la date. J'ai 46 fichiers qui répertorient les compteurs relevés jusqu'à un certain jour, les chaînes de caractères ressemblant à ceci : 30/01/14;28349.
    Mon objectif est donc de découper cette chaîne de caractère pour qu'elle entre dans ma base de donnée, sachant qu'en plus, il faut rajouter l'identifiant de l'imprimante.

    Pour le moment, j'ai écris ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
     
    function parcourir_repertoire($repertoire)
    {
    	$le_repertoire = opendir($repertoire) or die("Erreur le repertoire $repertoire n'existe pas");
    	while($fichier = @readdir($le_repertoire))
    	{
    		if ($fichier == "." || $fichier == ".." || $fichier == "lecture_fichiers.php") continue;
    		if (is_dir($repertoire. '/'.$fichier))
    		{
    			print '<ul>'.$repertoire.'/'.$fichier;
    			parcourir_repertoire($repertoire.'/'.$fichier);
    			print '</ul>';
    		}
    		else
    		{
    			print "$fichier \n";
    			$myfile = file_get_contents($repertoire. '/' .$fichier, "r");
    			echo $myfile;
    		}
    	}
     
     
    }
     
    parcourir_repertoire('/script_python/historique');
     
    ?>
    Ce code me permet donc de récupérer les fichiers, de les ouvrir et de récupérer les données à l'intérieur. Mais à partir de là, je bloque un peu. Je sais qu'il faut que j'utilise explode et array, mais je ne sais pas comment l'utiliser ni où le mettre, et comment l'intégrer à la base.

    Merci d'avance pour votre aide !
    Ju'

    EDIT :

    J'ai déjà réussi à couper une seule chaîne de caractère, maintenant, comment faire quand il faut découper plusieurs dizaines de chaînes à suivre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    $chaine = "30/01/14;28349";
     
    print_r(explode(';', $chaine));
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    avec pour clé primaire l'identifiant de l'imprimante (clé primaire d'une autre table), concaténée avec la date
    Ca c'est une drole d'idée.
    Il te faut plutôt comme clef primaire un id autoincrémenté et un index UNIQUE sur le couple id_imprimante + date.

    chaque fichier contient plusieurs informations ou seulement un seul compteur ?
    Si c'est un seul ton explode doit se faire simplement sur $myfile.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut
    Et bien pour la clé primaire, c'est ma prof qui m'a dit de faire ça comme ça, donc j'avoue que je sais pas trop. Mais pour moi (je me trompe peut-être hein ^^'), un compteur est identifié par l'imprimante et par la date, du coup, il faut forcément faire appel à la table imprimantes
    Mais je comprends ta solution ! Du coup, tu penses qu'il faudrait que je la modifie en mettant un id_compteur ? Mais du coup, l'id_imprimantes serait une clé étrangère en relation avec la date ?

    Comme j'ai édité mon premier message entre temps, je ne sais pas si tu as vu mon "EDIT".
    Chaque fichier contient tous les compteurs entre janvier et mai, donc plusieurs chaînes de caractères ressemblant à celle que j'ai donné

    Merci pour ton aide !
    Ju'

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je ne sais pas si tu as bien compris, ce que je propose c'est
    compteur_id; imprimante_id; compteur_date; compteur_valeur

    Si tu n'as pas une colonne distincte pour la date, tu ne pourras pas faire de requête par date, ca serait un peu dommage.

    Pour ton problème d'explode, je ne comprends pas ta difficulté : tu es dans une boucle qui parcours tous les fichiers, tu fais l'explode pour les données de chaque fichier.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut
    Ah mais je pensais faire une colonne distincte pour la date ! C'est vrai que je me suis mal exprimée en parlant de concaténation... Désolée ^^'
    En fait la table aurait pour champs : id_imprimante, date_releve, compteur. Et en gros, la clé primaire de la table serait id_imprimante, date_releve

    Pour l'explode, en gros il faudrait que je le mette dans le while ? Ou dans le if ? Mais du coup, ma variable $chaine, prendrait le fichier pour valeur ? Parce que j'ai essayé, et ça me renvoie une erreur " -bash: Erreur de syntaxe près du symbole inattendu « ( » ". Je ne sais pas trop si ça a un rapport avec ce que j'essaie de faire, mais je ne comprends pas trop cette erreur

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ca n'a pas d'interet alors de faire un id comme ça. Un entier autoincrementé est plus simple et efficace.

    Pour ton erreur, ba c'est une erreur de syntaxe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/05/2015, 22h35
  2. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  3. Réponses: 3
    Dernier message: 15/11/2013, 12h49
  4. chaîne de connexion à une base de données distante
    Par mehdi.cheddani dans le forum VB.NET
    Réponses: 3
    Dernier message: 24/04/2013, 15h04
  5. Réponses: 2
    Dernier message: 01/11/2012, 20h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo