PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Editer des données de formulaires dans un fichier texte » 25-12-2011 12:02:54

http://fr.php.net/manual/fr/function.echo.php

echo <<<END
Cette syntaxe s'intitule le "here document" et
permet d'afficher plusieurs lignes avec de
l'interpolation de variables. Notez que la fin de
la syntaxe doit apparaître sur une nouvelle ligne,
avec uniquement un point-virgule, et pas d'espace
de plus !
END;

peut être...

#2 Re : MySQL, PostgreSQL, etc... » 2 COUNT() en une seule requete » 09-09-2010 05:50:22

En effet tout bête, maintenant que je comprends le comportement du IF (que je n'avais jamais utilisé).
Alors pour m'assurer d'avoir bien compris, je me suis amusé à additionner les ID en faisant SUM(IF(user_id <> 1,user_id,0)) AS membres
oui, un rien m'amuse smile

Merci encore pour toutes ces réponses Maljuna Kris et tous les autres.

PS :
Au moment où je rédige ce post, je m'aperçois qu'on retrouve une syntaxe similaire avec un tableur : =SI(A1=1;A1;0)

#3 Re : MySQL, PostgreSQL, etc... » 2 COUNT() en une seule requete » 09-09-2010 05:50:22

Bonjour et merci Maljuna Kris,
ça fonctionne à merveille.

Je me doutais bien qu'un seul GROUP BY ne suffisait pas, c'est pour ça que j'ai testé plusieurs requêtes avec 2. Mais quels champs grouper ? ... et comment lui faire comprendre les user_id à compter ? ...  je faisais en effet mauvaise route avec ce casse tête !

Mais juste pour comprendre :
En voyant ta proposition, et avant d'essayer, je pensais que SUM allait additionner les valeurs.
Pour les invités, ok. Mais pour les membres : id 23 + id 40 = membres → 63

Quand j'ai vu que SUM retournait le résultat escompté, j'ai testé avec COUNT + IF (ce qui devrait aussi être faisable ?). Mais je n'ai pas trouvé la syntaxe qui ne me retourne pas d'erreur...


Décidément, en dehors des SELECT *, je suis vraiment une quiche yikes

#4 MySQL, PostgreSQL, etc... » 2 COUNT() en une seule requete » 09-09-2010 05:50:22

cramj
Réponses : 5

Bonsoir,

Je n'arrive pas à écrire en une seule requête le COUNT sur 2 types d'information.

Je m'explique.
voici la table :

user_id   idle  
1         1
22        1
1         0
1         0
1         0
23        0

déjà, ne chercher que les idle=0
ensuite, mon résultat doit me sortir :
le nombre de user_id = 1
le nombre de user_id != 1

Pour ceux qui connaissent fluxBB, il s'agit de compter le nombre de membres connectés ainsi que les invités.
user_id = 1 : invité
user_id != 1 : membre
idle = 0 : connecté
idle  = 1 : déconnecté

le résultat donnerait : 1 membre et 3 invités connectés

Je sens qu'il y a encore une histoire de SELECT imbriqués...

J'ai essayé, sans succès, plusieurs requêtes du genre :

SELECT DISTINCT user_id, COUNT( user_id )
 FROM (
  SELECT user_id
   FROM pun_online
   WHERE idle =0
   GROUP BY user_id, idle
  ) AS nb
 GROUP BY user_id

et forcément, une fois de plus ça ne retourne pas le résultat escompté hmm

Je pourrais très bien faire un SELECT tout bete, puis traiter tout ça dans un while, mais quand on peut faire travailler MySQL, pourquoi s'en priver wink
Merci à vous

#5 Re : Forum Général PHP » scriptsphp.org n'est plus ? » 18-06-2010 16:32:36

Salut,

Merci merci, je reste à l'écoute...

En attendant, je vais commencer avec les quelques pages disponibles sur web.archives.org

#6 Re : Forum Général PHP » scriptsphp.org n'est plus ? » 18-06-2010 16:32:36

Dans le lien de mon 1er post, on trouve cette liste

IRCConn : Assure la gestion de la connexion au serveur IRC par socket.
IRCMain : Assure la surveillance du canal et appelle les plugins.
IRCLog : Permet de constituer les logs et stats.
plugins : Pour la gestion des plugins et de leur doc.

et le nom des pages web correspondantes : botdoc.class.IRCConn, botdoc.class.IRCMain, botdoc.class.IRCLog, botdoc.class.plugins

Je me souviens de ce site et ses scripts très bien documentés, je suppose donc que ce sont les définition des classes, avec explications, exemples... ce qui me serait bien utile pour m'y coller.

Mais s'il n'y a rien de plus que dans les fichiers sources, on oubliera ce post...

Merci pour ta contribution mcAllan

#7 Forum Général PHP » scriptsphp.org n'est plus ? » 18-06-2010 16:32:36

cramj
Réponses : 4

Bonjour,

scriptsphp.org (ou .net) n'est plus disponible... enfin, si. les domaines sont à vendre hmm

Je me demandais si on pouvait trouver son contenu sous un autre domaine ?
En particulier, la doc des classes du cspBot...
j'ai bien retrouvé quelques pages archivées, mais malheureusement celles que je cherche ne le sont.

Merci de me venir en aide, sinon, je reviendrais vous ennuyer avec mes question à propos de la POO smile

#8 Re : Forum Général PHP » Calculer age précis » 09-12-2009 16:27:54

Voilà comment je ferais. Il y a peut-être moins tordu...

Utiliser :
le modulo (%) pour récupérer le reste de la division.
floor() pour arrondir à l'entier inférieur.
{édit} date('t') pour le nombre de jours dans le mois

Principe :
Diviser le nombre de secondes (ton $diff) par 60 pour l'avoir en « xx minutes : xx secondes »
réserver les secondes dans $sec
Diviser le nombre de minutes par 60 pour avoir en « xx hour : xx minutes »
réserver les minutes dans $min
etc... jusqu'à diviser le nombre de mois par 12 pour avoir « xx ans : xx mois »
et écrire l'âge : $an ans $mois mois ... et $sec secondes

tu peux aussi utiliser microtime() si tu veux plus précis big_smile

#9 Re : MySQL, PostgreSQL, etc... » [Résolu] modifier valeur d'un champs par rapport à une autre table » 30-11-2009 16:16:12

hmmm je me doutais bien qu'il manquait un WHERE... mais WHERE quoi ? WHERE voilà ! smile

Merci beaucoup




PS : je ne sais toujours comment changer le titre de la discussion pour ajouter « Résolu » yikes

#10 MySQL, PostgreSQL, etc... » [Résolu] modifier valeur d'un champs par rapport à une autre table » 30-11-2009 16:16:12

cramj
Réponses : 7

Bonjour,

Pour migrer une BDD d'un site vers un autre site, j'ai besoin de changer la valeur du champ user_name de la table map
par la valeur correspondant à user_id de la table users.

Voici les tables

Table users :
user_id | user_name
1 | pierre
2 | paul
3 | jack


Table map :
map_id  | user_name
1 | pierre
2 | pierre
3 | paul

vous l'aurez compris, ce que je voudrais au final c'est que le contenu de la table map soit :

map_id  | user_name
1 | 1
2 | 1
3 | 2

Je voudrais écrire la requête directement dans phpMyAdmin, je suppose que c'est un truc de genre :

UPDATE map SET map.user_name=(SELECT users.user_id FROM users )

et forcément, l'erreur renvoyée est

MySQL a répondu:

#1242 - Subquery returns more than 1 row

Merci pour votre aide

#11 Re : Forum Général PHP » Récuperer le chemin pour accès à un fichier » 03-11-2009 01:20:17

Et mettre $path entre double quote, n'est pas très joli... si je puis me permettre wink

#12 Re : Forum Général PHP » [Résolu] Supprimer block dans fichier XML » 03-11-2009 01:15:03

À force d'y aller à tâtons et épluchant les explemples par ci par là, j'ai fini par trouver. Mais voilà le temps passé pour si peu sad

$get_fichier = preg_replace('#<row>
      <string>MQCD.1(.*)</row>#sUi'
, '', $get_fichier);


{édit} Je n'ai pas trouvé comment éditer le titre de ce fil afin d'ajouter « Résolu »

#13 Re : Forum Général PHP » [Résolu] Supprimer block dans fichier XML » 03-11-2009 01:15:03

Peut-être un début de piste avec simplexml_load_string

<?php
if (file_exists('./xml/2009-10-28.php')) {
  ob_start();
  //~ include('./xml/2009-10-28.php');
  $xml =  file_get_contents('./xml/2009-10-28.php');
  echo $xml ;
  $ob = ob_get_contents();

  ob_end_clean();

  $xml =  simplexml_load_string($ob);
  print_r($xml);
} else {
  exit('Echec lors de l\'ouverture du fichier test.xml.');
}
?>

mais je n'arrive pas stocker la bonne chaine dans $ob

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 28: parser error : Extra content at the end of the document in /home/***/charts2/test.php on line 11

Warning: simplexml_load_string() [function.simplexml-load-string]: <row> in /home/***/charts2/test.php on line 11

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /home/***/charts2/test.php on line 11

#14 Re : Forum Général PHP » [Résolu] Supprimer block dans fichier XML » 03-11-2009 01:15:03

Salut Maskime,
Le contenu du fichier XML est généré par moi même. C'est en fait un fichier .php généré par un autre fichier.
Je m'explique :
cron.php génère ./xml/2009-11-02.php qui au final contient :

<?php include 'haut.php' ?>
    <row>
      <string>MQCD.0</string>
...
...
      <number tooltip='0.42 joueur(s) sur MQCD.3 (23h)'>0.42</number>
    </row>
<?php include 'bas.php' ?>

et dans index.php, j'appelle le fichier ./xml/2009-11-02.php?paramOptionnel=val qui retourne du xml propre (j'utilise en fait ça → http://www.maani.us/xml_charts/ )

J'ai donc fait un test dans un fichier vierge :

<?php
if (file_exists('xml/2009-10-28.php')) {
    $xml = simplexml_load_file('xml/2009-10-28.php');
    print_r($xml);
} else {
    exit('Echec lors de l\'ouverture du fichier test.xml.');
}
?>

et l'erreur qui apparait :

Warning: simplexml_load_file() [function.simplexml-load-file]: xml/2009-10-28.php:28: parser error : Extra content at the end of the document in /home/*****/charts2/test.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: <row> in /home/****/charts2/test.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/****/charts2/test.php on line 3

et si je l'appelle avec le paramètre optionnel, il ne trouve pas le fichier hmm

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "xml/2009-10-28.php?titre=test" in /home/****/charts2/test.php on line 3

Voilà, ça fait beaucoup de fichier.php include les uns dans les autres... sans doute l'origine de l'erreur.

Pour en revenir à ta remarque « il est possible que ton MQCD soit changé pour autre chose... », je te répondrai qu'il y a de forte chances que non. Sinon, faudrait changer le nom de domaine, le nom du clan (FPS), les serveurs de jeux... autrement dit le clan serait dissout ! et le script ne servirait plus à rien.

Donc aujourd'hui, même si ce n'est pas très propre/sécurisé/pro, je pense rester sur ma première idée : utiliser cette regex, et j'en aurai quasiment fini avec ce script wink
Sauf si tu arrives à me convaincre de changer mon point de vue...

#15 Forum Général PHP » [Résolu] Supprimer block dans fichier XML » 03-11-2009 01:15:03

cramj
Réponses : 4

Bonjour,

j'ai un fichier XML (extrait):

...
    <row>
      <string>MQCD.0</string>
      <number tooltip='3.75 joueur(s) sur MQCD.0 (00h)'>3.75</number>
      <number tooltip='0 joueur(s) sur MQCD.0 (01h)'>0</number>
    </row>
    <row>
      <string>MQCD.1</string>
      <number tooltip='3.25 joueur(s) sur MQCD.1 (00h)'>3.25</number>
      <number tooltip='2.58 joueur(s) sur MQCD.1 (01h)'>2.58</number>
    </row>
    <row>
      <string>MQCD.2</string>
      <number tooltip='0 joueur(s) sur MQCD.2 (00h)'>0</number>
      <number tooltip='1.42 joueur(s) sur MQCD.2 (01h)'>1.42</number>
    </row>
    <row>
      <string>MQCD.3</string>
      <number tooltip='0.08 joueur(s) sur MQCD.3 (00h)'>0.08</number>
      <number tooltip='0.42 joueur(s) sur MQCD.3 (01h)'>0.42</number>
    </row>
    <row>
...

et un fichier .php qui devrait pouvoir supprimer le bloc <row><string>MQCD.1... </row>
avec une variante : supprimer  les blocs <row><string>MQCD.0... </row> et <row><string>MQCD.2... </row>
ou autres...

la regex utilisée : (un test pour commencer, devrait supprimer tous les blocs <row>)

$get_fichier = preg_replace('`\<row\>([^\</row\>]*)\</row\>`s' , '', $get_fichier);

Mais rien ne se passe, même pas une erreur (avec error_reporting(E_ALL); )
j'ai bien évidement essayé plusieurs pattern, mais celui ci-dessus me semble le plus proche du pattern final... celui qui va fonctionner ;)

un autre test consistait à faire :

$get_fichier = preg_replace('`MQCD\.1(.*)\</row\>`s' , '', $get_fichier);

et ici, il m'a bien supprimé de MQCD.1 à la dernière balise </row> du XML

Je suis complètement perdu avec les métacaractères, symboles, ancres, classes... plus je cherche, plus je m'y perds :(
Si quelqu'un pouvait me mettre sur la voie afin que je puisse comprendre le comportement de ce preg_replace et en particulier celui du patern, ce serait sympa.

PS : Un fichier xml complet : http://pastebin.com/m5e06c5bc

Pied de page des forums

Propulsé par FluxBB