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 » affichage dynamique conditionnel d'une image » 31-12-2010 11:26:34

Moi je ferais ça en utilisant l'opérateur ternaire,  savoir :

(condition) ? instruction si vrai : instruction si faux


Alors en admettant que je récupère de la base de donnée l'info concernant la donnée 'A' dans une boucle (p.ex.  $_result['A']), il me
suffit de tester sa valeur avec l'opérateur ternaire et, comme suggéré par Pierrot, d'assigner un style en fonction du résultat :

$coche = ( $_result['A'] == 0) ? ' class="non_coche" ' : ' class="coche" ';

Puis de se servir de ce résultat pour afficher dans ton code html le style adéquat :

<div <?php print  $coche; ?> > le résultat de <?php print $_result['A'] ;?> </div>

Ceci te donnera soit :
<div class="coche" > le résultat de 1 </div>

Soit :
<div class="non_coche"> le résultat de 0 </div>

#2 Re : Javascript » includes PHP et Ajax » 06-10-2010 18:54:45

Merci pour la proposition avec du PDO, cependant ça ne m'éclaire pas plus sur le où mettre quoi sad
A+

#3 Re : Javascript » includes PHP et Ajax » 06-10-2010 18:54:45

Tout à fait d'accord,
mais justement comme tous mes scripts sont appelés depuis une page cadre, l'index.php, je n'ai jamais une page php isolée.
D'où le problème. Est-ce qu'une url absolue vers un script qui n'est pas appelé par inclusion pourrait faire l'affaire?

#4 Javascript » includes PHP et Ajax » 06-10-2010 18:54:45

Yannick
Réponses : 5

Bonjour à tous,
J'ai une question concernant Ajax (avec jQuery).

Je souhaite faire un paginateur comme proposé ici :
tutoriel pagination ajax/php
et l'ennui c'est que je ne vois pas comment intégrer l'ensemble.

J'ai pour habitude d'appeler des sections de page – comme tout le monde – via
[code php ] $_GET['page'] [/code], dans le cas qui m'intéresse aujourd'hui la valeur de 'page' est 'news'.

Maintenant, la fonction jQuery qui va se charger de mettre à jour le div qui contient mes données a besoin de ceci comme paramètre
[code]$("#content").load("?page=news&id=" + this.id, hideLoader);[/code]
,
je me retrouve ainsi avec une div qui contient l'ensemble du site et non pas le contenu demandé.

Comment se débarrasser de cet enchâssement?
Merci pour vos lumières!

Yannick

#5 Re : Forum Général PHP » La logique d'un bouton 'langue' » 14-09-2010 10:24:56

Ok!

<script type="text/javascript">
  function submitform()
  {
      document.forms["the_form"].submit();
  }
  </script>
<form action="" id="the_form"  method="post" accept-charset="utf-8">
    <input type="hidden" name="language_id" value="3" id="">
       
  </form>
  <a href="javascript: submitform()" <?php print $active_fr ;?> >FRANÇAIS</a>

Et merci!

#6 Re : Forum Général PHP » La logique d'un bouton 'langue' » 14-09-2010 10:24:56

C'est pas tout à fait ma question: comment est-ce que tu mets en place un formulaire POST sans avoir un bouton submit, mais plutôt un simple lien comme on peut en avoir avec GET? Je sais qu'on peut soumettre un form avec du javascript sur un lien, mais je n'aime pas trop cette solution...

#7 Re : Forum Général PHP » La logique d'un bouton 'langue' » 14-09-2010 10:24:56

Merci pour cette idée facile à mettre en place.
Maintenant si tu dois avoir un lien plutôt qu'un bouton de formulaire submit, comment est-ce que tu peux te passer de $_GET?

#8 Forum Général PHP » La logique d'un bouton 'langue' » 14-09-2010 10:24:56

Yannick
Réponses : 5

Salut à tous,

Je vous écris pour connaître votre démarche à l'heure de gérer le passage d'une langue à l'autre sur un site.

Jusqu'ici j'initialisais une variable de session à la un valeur 1 ( qui signifiait 'FR') et je la mettais à jour avec un bouton 'ENG' ( dont la valeur est '2' ) par exemple.

Rien de bien extraordinaire. Le gros problème que je rencontre maintenant c'est que cette démarche à la fâcheuse tendance à engendrer une suite de variables GET des plus pénibles dans la barre URL :

index.php?langue=1&langue=2&langue=1&langue=1

Etc. (Ad libitum)

Depuis que j'ai décidé de me mettre à l'URL Rewriting c'est encore pire vu qu'il faudrait créer des règles bien longues avec l'idée de couvrir tous ces clics intempestifs sur les boutons langue. Absurde!

Ma question, vous l'aurez déduit, est de savoir comment gérer le passage d'une langue à l'autre. J'ai bien sûr tenté de récupérer l'URI et toutes autres sortes de manipulations des variables du type $_SERVER mais sans grande réussite...

Merci déjà pour vos lumières!

Yannick

#9 Re : Forum Général PHP » Compter le nombre d'éléments d'un tableau qui sont plus petit que... » 01-09-2010 22:23:53

Merci pour le coup de pouce.
J'ai bossé encore un peu le truc et je crois avoir trouvé une solution correcte :



[code php]$tab1 = array(9,10, 14, 17, 40, 200, 240, 300, 340, 600);
$tab2 = array(1, 11, 12, 230, 240, 450);

$sum = 1;
$j = 0;       
$k = 0;

        foreach ($tab1 as $key1) {
           
            foreach ($tab2 as $key2) {
               
                print $key1 . ' > ' .$tab2[$j++]  ;
               
                if ( $key1 > $tab2[$k++] ) {
                   
                    $sum_array = array($sum++);
                    print ' TRUE';
                }
               
                print '<br/><br/>';
               
            }
            print 'Number of added true: ' . max($sum_array) .'<br/><br/>';
           
            $sum_array = array();
            $j = 0;
            $k = 0;

        }[/code]
Ce qui donne :

[code]9 > 1 TRUE

9 > 11

9 > 12

9 > 230

9 > 240

9 > 450

Number of added true: 1

10 > 1 TRUE

10 > 11

10 > 12

10 > 230

10 > 240

10 > 450

Number of added true: 2

14 > 1 TRUE

14 > 11 TRUE

14 > 12 TRUE

14 > 230

14 > 240

14 > 450

Number of added true: 5[/code]
...... etc. Bien sûr je n'ai pas ici l'intervalle, mais ce serait très facile de l'ajouter comme ceci au début de la 2ème boucle foreach:


[code php]
$key1 > $tab2[$j++]  && $key1 < $tab2[$j];
[/code]

Merci!

#10 Forum Général PHP » Compter le nombre d'éléments d'un tableau qui sont plus petit que... » 01-09-2010 22:23:53

Yannick
Réponses : 2

Bonsoir à tous,
J'ai une demande à vous faire: je dois comparer les valeurs d'un tableau et je ne sais pas trop comment prendre le problème que voici.

J'ai d'un côté un tableau qui contient (p.ex.) 5 chiffres => 10, 20, 40 ,80, 100
J'ai de l'autre un tableau qui contient (p.ex.) 3 chiffres => 5, 50, 90

J'aimerais connaître le nombre d'éléments du premier tableau qui sont plus petits que 5, entre 5 et 50, entre 50 et 90.

En gros j'aimerais comparer les valeurs de deux tableaux avec un opérateur mathématique, le tout en me déplaçant entre deux valeurs qui font office de limite.

J'ai essayé de composer un fonction maison sur la proposition du manuel PHP, à savoir ceci :

$array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'apple',
    'fruit5' => 'apple');

// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {
    if ($fruit_name == 'apple') {
        echo key($array).'<br />';
    }
    next($array);
}

, mais je dois faire fausse route.
Cela fait plusieurs jours que je tourne le problème dans ma caboche, mais je ne vois tjrs pas quelle démarche entamer.
Vos lumières sont les bienvenues!

Merci et belle soirée à tous.

#12 Forum Général PHP » Ecrire au milieu d'un fichier .txt » 16-08-2010 19:40:51

Yannick
Réponses : 3

Bonjour à vous tous,

Je voudrais écrire quelque part au milieu d'un très long fichier txt et je ne sais pas trop quelle démarche adopter...
Je sais lire un fichier, déplacer le curseur à l'endroit voulu, puis écrire qc.

Ceci a pour résultat d'écraser la section du texte précédent par l'actuel, et non pas d'insérer.

Je sais également qu'il faut garder en mémoire le texte ancien à partir du pointeur où l'on commence à écrire, puis
ajouter cette section au reste du texte nouvellement mis à jour. C'est justement cette étape qui me pose problème.

Faut-il? :

1) lire le tout

$file = file_get_contents ( 'abc.txt' );

2) se déplacer (de 1000 caractères p.ex) et insérer le texte

fseek($file, 1000);
fwrite($file, 'salut');

3) relire le tout à partir du pointeur (et jusqu'à la fin, admettons au caractère 2000)

$file_2 = file_get_contents ( $file, NULL, NULL,  1000, 2000);

4) finir d'écrire l'ensemble

fseek($file, 1000); fwrite($file, $file_2);

Cela me semble bien pénible lorsque, comme pour mon cas, le fichier est très long (400ko) et possède de très nombreuses transformations.
Quelqu'un aurait-il une façon plus appropriée de gérer ce genre de cas?

#13 Re : Forum Général PHP » PDO, mysql_real_escape_string et boucle sur les champs de formulaire » 27-05-2010 16:01:29

Eurêka, il fallait attacher une valeur (bindValue) et pas un paramètre bien sûr (bindParam).

( J'en ai profité pour réécrire un petit peu la façon de transformer mon tableau $fields en une chaîne ).

Voici :

  public function insert( $tbl , array $fields )
    {
           
      $keys = array_keys($fields);
      $keys = implode(",", $keys);  // on récupère les champs
     
      $placeholders = substr( str_repeat( '?,' , sizeof($fields) ), 0 , -1 );  // on crée autant de placeholders ? qu'il y a de champs
     
        $query = "INSERT INTO $tbl ($keys) VALUES ($placeholders)";
      $stmt  = $this->_dbc->prepare($query);
     
      $i = 1;
      foreach ($fields as $k => $v) {
          $stmt->bindValue($i++,$v); // on attache aux placeholders créés une valeur
      }
     
      if ( !$stmt->execute() ) {
            return false;
        }
      else {
        return true;
      }
       
    }

Plus besoin de stripslashes, quote ou mysql_real_escape!

#14 Re : Forum Général PHP » PDO, mysql_real_escape_string et boucle sur les champs de formulaire » 27-05-2010 16:01:29

Pas mieux...

J'essaie maintenant de faire une boucle sur bindParam, mais il n'insert qu'une seule et même valeur pour tous les champs.

De retour à la mine.

#15 Re : Forum Général PHP » PDO, mysql_real_escape_string et boucle sur les champs de formulaire » 27-05-2010 16:01:29

Oui, j'y ai pensé d'emblée, mais ceci ne permet pas de profiter de la sécurité apportée par PDO + tu te retrouves avec des antislashes un peu partout dans ta dB et ensuite tu dois les stripslasher...

Raaaahh, le web c'est quand même un métier!

#16 Forum Général PHP » PDO, mysql_real_escape_string et boucle sur les champs de formulaire » 27-05-2010 16:01:29

Yannick
Réponses : 5

Bonjour à tous,
Juste une question en passant concernant PDO.

Pour me faciliter la vie avec l'insertion de données de formulaire dans la dB, j'ai décidé d'utiliser
le truc suivant qui consiste à :

1) lire le champs d'une table ($tbl)
2) comparer ces champs avec les champs du formulaire ($_POST)
3) insérer dans la dB la valeur des champs communs avec PDO

function getMatchingFields( $tbl ) {
        $fields = getFieldsName( $tbl );            
            foreach( $_POST as $k => $v ) {            
                if (in_array( $k , $fields ) && isset ( $v ) ) {            
                    $matchingFields[$k] = $v;            
                }        
            }        
            return $matchingFields;        
        }

puis

public function insert( $tbl , array $matchingFields ) {      
    foreach ( $fields as $k => $v ) {            
            $key      .=  $k.',';
              $value  .=   "'".$v."',";
    }
    $keys    =  substr($key,0,-1);
    $values    =  substr($value,0,-1);
    $query = "INSERT INTO $tbl ( $keys ) VALUES ( $values )";
      if ( !$stmt->execute() ) {return false;}
         else {return true;}      
}

Maintenant le bénéfice n'en est plus un à l'heure d'échapper les caractères comme apostrophe par exemple.
En effet, je ne sais plus où mettre les paramètres attachés ( bound parameters)...

$stmt->bindParam(1, $keys);
$stmt->bindParam(2, $values);

Avez-vous une idée de comment conserver les bénéfices de  la boucle sur les champs et de la sécurisation des données
offerte par PDO et les paramètres attachés?

merci pour vos lumières et à bientôt.

Yannick

#17 Re : Forum Général PHP » Comparaison / édition de textes via PHP » 26-05-2010 13:37:15

Très bien, merci pour ton aide.
Je crois que je partage ton opinion sur tous les points, ce qui est donc bon signe quant à la 'sanité' de l'approche!
Belle journée à toi.

#18 Re : Forum Général PHP » Comparaison / édition de textes via PHP » 26-05-2010 13:37:15

Le fichier HTML n'est qu'une vue, rien d'autre. Il y a donc un fichier qui (re)présente les modifications et un autre les suppressions.

Pour répondre à ta question, le fichier HTML ne présente donc que le dernier fichier XML et il n'y a pas d'historique (il y a autant de fichiers de sortie que de strates).

Je n'en ai pas parlé, mais le fichier à produire est un document de travail pour les étudiants en génétique linguistique. Ils doivent pouvoir comparer les diverses strates qui mène vers un texte définitif, mais ils ne sont pas les auteurs desdites comparaisons. C'est pour cela que je parlais de read-only plus haut.

Merci déjà d'avoir pris du temps pour me répondre jusqu'ici!

#19 Re : Forum Général PHP » Comparaison / édition de textes via PHP » 26-05-2010 13:37:15

Hé bien le projet se présente comme suit :

Un logiciel Java lit deux fichiers textes (.doc ou .txt) et produit un fichier XML où les modifications / suppressions sont renseignée selon un code (ex. 1 pour modif, 2 pour suppression, etc) et une paire de coordonnées (le no. de caractère où commence / le no. où finit la modification). Il ne génère rien d'autre que ce fichier.

Mon boulot consiste à baliser le même texte (celui de destination), en HTML cette fois, et en dur pour le rendre accessible en mode read-only aux gens qui ne possèdent pas le logiciel. Pas de base de données, pas d'XML.

En gros, il me faut baliser le fichier grâce à une fonction PHP qui passerait en revue le XML en ma possession – en récupérant donc le code et les coordonnées - et qui produirait un fichier HTML balisé.

Maintenant comment faire pour bien faire?

#20 Re : Forum Général PHP » L'inclusion de fichier » 19-05-2010 07:36:12

Je ne sais pas si j'ai bien compris ta démarche mais j'imagine qu'autoriser des pages de la sorte ne sert pas à grand-chose.
Moi aussi je fais des includes de page, mais je procède de la sorte:

1) si je n'ai pas de paramètre passé en URL (par les boutons de navigation), alors je décide de créer ce paramètre en lui attribuant la valeur de page d'accueil :

=> if (!isset($_GET['page']) { $_GET['page'] = 'accueil' ;}

2) ensuite je fais des includes grâce à la valeur de $_GET['page'] à laquelle j'appends le .php

=> include '$_GET['page']' . '.php';

Voilà c'est tout. Maintenant, comme je te l'ai dis plus haut, peut-être que tu as besoin d'avoir un accès plus sécurisé à tes pages et
c'est pourquoi tu vérifies les autorisations. En général ça se fait plutôt en passant par un système de session plutôt qu'en récupérant des valeurs d'un tableau.

Bonne soirée à toi.

#21 Forum Général PHP » Comparaison / édition de textes via PHP » 26-05-2010 13:37:15

Yannick
Réponses : 6

Bonjour à tous,

J'aurais juste voulu connaître votre avis concernant la manipulation des textes grâce à PHP.

Je dois en effet faire des outputs de textes (longs, 150 pages) avec un surlignage des blocs modifiés ou supprimés
et je ne sais pas franchement quel chemin prendre.

Serait-il judicieux d'utiliser du XML avec XSLT (auquel je ne connais pas grand-chose) ? Peut-on imaginer de compter
les caractères et d'insérer des <span> de stylisation avec les divers fonction ad hoc ? Y a-t-il un livre / manuel sur la
question?

Bref je n'en suis qu'au tout début du projet et j'aimerais me documenter avant d'attaquer sur la mauvaise piste.

Merci pour vos lumières!

Bonne soirée à tous.

Yannick

#22 Re : Forum Général PHP » Remplacer un morceau dans une url » 08-05-2010 10:39:50

Super, merci pour l'idée.
Pourquoi faire simple quand on peut faire compliqué!
Belle journée à toi

#23 Forum Général PHP » Remplacer un morceau dans une url » 08-05-2010 10:39:50

Yannick
Réponses : 3

Bonjour à vous tous,

J'ai deux paginateurs sur ma page et je termine par avoir une url du style:

index.php?page=home&paginateur_1=11&paginateur_2=3

Ma question est la suivante : comment faire en sorte de lire l'url et de remplacer
simplement la valeur 11 ou la valeur 3 selon le paginateur activé?

J'ai passé en revue des tutoriels sur les regex et les diverses fonctions preg de php,
mais je ne vois pas le bout du tunnel.

Merci pour vos lumières!

Yannick

#24 Re : MySQL, PostgreSQL, etc... » PDO et insertion d'HTML » 28-02-2010 21:54:08

Je voulais plutôt parler des best practices à mettre en place pour permettre à un utilisateur de créer
et sauvegarder aisément une newsletter en html.

À un moment ou à un autre il faudra de toute façon coder en dur la balise d'appel de l'image. Et ceci
dans un fichier texte, dans une db, dans un cookie même stuveux...

Sinon, il est bien clair que la db est utilisée surtout et presque exclusivement pour conserver du texte et
pas la mise en forme de la newsletter.

#25 Re : MySQL, PostgreSQL, etc... » PDO et insertion d'HTML » 28-02-2010 21:54:08

Ouais, j'avais mis un addslashes mais ça n'avait rien donné.
Je sais pas si je m'étais planté...
@ Kris => pour mon édification tu ferais ça comment?

Pied de page des forums

Propulsé par FluxBB