afficher toute les valeur sauf la dernière

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : afficher toute les valeur sauf la dernière

Re: afficher toute les valeur sauf la dernière

par jissey » 01 sept. 2012, 11:21

Bon, j'ai corrigé le stripslashes. C'est bizarre, hier, j'avais fait la même chose, et ils était restés. J'avais peut-être pas fait bien comme il faut.
Aujourd'hui, tout marche bien.
Du coup, j'ai mis l'adresse de mon site dans mon profil. Vous pourrez voir ce que ça donne. :D

Re: afficher toute les valeur sauf la dernière

par sam12 » 01 sept. 2012, 02:50

Le stripslashes, c'est sur ta variable $donnees_select['texte'] qu'il faut l'appliquer.
T'as un exemple de paragraphe que je regarde?

Re: afficher toute les valeur sauf la dernière

par jissey » 01 sept. 2012, 00:57

Voilà où j'en suis.
Ce qui marche :
<?php
$position=strpos($donnees_select['texte'], " ", 80);
echo substr($donnees_select['texte'], 0, $position);
?> ...
j'ai un bout du paragraphe affiché, et les points de suspension pour indique que ce n'est pas tout. ligne suivante un lien avec lire la suite qui envoie à la page des news. La prochaine étape sera de cibler le texte, mais je ne me suis pas encore penché sur ce problème.

Ensuite, je découvre les soucis au fur et à mesure de leurs arrivées : maintenant, j'ai des slashes sur ma page. Pas celle utilisée par le serveur local, mais la page affiché sur le site véritable. Après recherche, j'ai vu qu'il fallait un stripslashes, mais là, j'ai pas du comprendre l'utilisation.
J'ai écrie ça dans mon code :
echo stripslashes(substr($donnees_select['texte'], 0, $position));
mais les slashes restent. y a t-il quelque chose d'autre à faire?

Re: afficher toute les valeur sauf la dernière

par sam12 » 31 août 2012, 18:35

Pour l'explode
$chaine='Ma chaine. Deuxième phrase.';
$explode = explode(".", $chaine);
echo $explode[0].".".$explode[1].".";
Et c'est torché ;)

Du coup ça donne quoi ton code?

Re: afficher toute les valeur sauf la dernière

par jissey » 31 août 2012, 18:28

merci, sam12. Le explode, je l'ai pas encore bien compris. Faudra que je penche plus sur la question.
Bon, pour le var_dump, j'ai compris l'erreur sans vraiment cherché. Je l'ai supprimé, et j'ai compris qu'il agissait un peu comme un echo. (promis, je regarde la doc aprés.) j'ai édité le message, croyant que personne n'était dessus.
Pour le fait que "ça marche pas", en lisant ta réponse moogli, j'ai compris juste en voyant "caractère". Pas encore l'habitude de compter en caractère, et j'avais interprété inconsciemment mot. c'est sur que cela ne fonctionnerait pas. Et tu as tout a fait raison, ce que j'avais programmé fonctionnait, mais pas c'est pas ce que je voulais.
Bon, pour le moment je crois que j'ai ma solution. le $position a marché tout compte fait.

Merci a tout les 2.

Re: afficher toute les valeur sauf la dernière

par sam12 » 31 août 2012, 18:16

Oui au fait je n'avais pas pris en compte les 2 phrases, je m’étais occupé seulement d’éviter la coupure du dernier mot.
Le int vient du var_dump :)

Après franchement un explode sur le point c'est moche mais ça a le mérite de marcher.

Edit: grilled par moogli ^^
L’idée du token est intéressante (un peu comme Wordpress), mais autant explode autant le faire sur le point :D

Re: afficher toute les valeur sauf la dernière

par moogli » 31 août 2012, 18:12

$position=var_dump(strpos($donnees_select['texte'], " ", 2));
echo substr($donnees_select['texte'], 0, $position);

Mais, ca marche pas. :non:
je pense que tu devrais regarder la documentatio de la fonction var_dump tu comprendrais ton erreur


ça marche pas pas constructif, ça fonctionne, pas comme tu le veux, mais comme tu la programmé :mrgreen:

donc
$position=strpos($donnees_select['texte'], " ", 2);
echo substr($donnees_select['texte'], 0, $position);
va afficher la chaine contenu avant le 1er blanc qui se trouve après le second caractère. donc en gros seulement le 1er mot :mrgreen:

je te suggère d'augmenter le nombre de caractère avant la recherche (genre 50 ou 100).
$position=strpos($donnees_select['texte'], " ", 100);
echo substr($donnees_select['texte'], 0, $position);
tu auras ainsi les 100 1er caractères et quelque uns de plus pour finir le dernier mot.

une autre solution est de mettre un "token" (désolé je trouve que jeton ne correspond pas trop ^^) dans ton texte pour indiquer la séparation entre le début (description / entête de la news) et le reste.

tu récupère ce qu'il y a avant en SQL et le tour est jouer :)

les fonctions de chaines de caractères en SQL (l'équivalent de ce que je te propose en php peux être fait en SQL;) )



@+

@+

Re: afficher toute les valeur sauf la dernière

par jissey » 31 août 2012, 17:47

bon, j'arrive à utiliser le substr, mais pas le strpos. (oui, j'ai utilisé strpos plutot que strrpos car je ne sais pas à l'avance, la longueur de chaque new. c'est donc plus facile de compter disons 15 blanc (" ") depuis le début du texte.
Alors, le soucis, c'est que j'ai marqué :
var_dump(strpos($donnees_select['texte'], " ", 2));

mais que le chiffre 2 (l'offset si j'ai bien compris) n'est pas pris en compte. j'ai vérifié dans le texte, le premier blanc arrive en position 12, mais quelque soit l'offset, j'ai toujours 12.


Merci d'avance.

Re: afficher toute les valeur sauf la dernière

par sam12 » 29 août 2012, 20:01

Si tu veux récupérer les 2 lignes premières phrases, tu peux tenter l'explode sur le point ça pourrait le faire (à tester).

Edit: Si tu tiens absolument au substr, il faudrait regarder strrpos ;)
Donc un coup de substr, tu passes un strrpos (en visant le dernier espace) et tu peux repasses 1 coup de substr pour récupérer la nouvelle valeur.

Re: afficher toute les valeur sauf la dernière

par jissey » 29 août 2012, 19:48

merci Sam12 pour le lien, mais je ne voudrais pas couper de mots. Si j'ai bien compris, ta fonction substr, elle permet de n'afficher qu'une parti des caractères, par exemple les 50 premières lettres, mais elle ne tiens pas compte de mots entiers. Je ne sais d’ailleurs même pas si ce que je veux faire est réalisable. Est-il possible de ne cibler que les blancs entre les mots? par exemple couper au dixième blanc. Pour le moment, je contourne le problème en utilisant une autre variable dans la base de donnée qui m'affichera un bout de phrase. Une façon comme une autre d'arriver à ses fins.

Mais je cherche toujours pour n'afficher que les deux première lignes.
Bon, comme je l'ai déja dit, je pioche dans les bouquins et le net, je ne sais même pas encore tout ce qu'on peut (ou ne peu pas )faire en php.

Re: afficher toute les valeur sauf la dernière

par sam12 » 29 août 2012, 18:12

bon, par contre comment faire pour n'afficher que les deux première ligne du texte contenu dans la bdd??? Apparement, le texte arrive dans la div et pousse le fond du bloc. Encore un autre casse tête. si quelqu'un à une idée...je suis preneur
http://www.php.net/manual/fr/function.substr.php ?

Re: afficher toute les valeur sauf la dernière

par jissey » 29 août 2012, 17:32

bon, je crois que j'ai résolu mon problème avec cette discussion :http://www.phpcs.com/forum/sujet-AVANT- ... 76936.aspx.

J'ai adapté à mon cas, et pour l'instant, j'ai mis dans ma première colonne d'index (une bonne vielle div) le code que je viens de montrer, n'affichant donc que la dernière news, et dans ma deuxième colonne le même code, en remplaçant" ORDER BY id DESC LIMIT $liste,1" par "ORDER BY id DESC LIMIT 1,3" pour ne pas afficher la dernière mais les 3 avant.


bon, par contre comment faire pour n'afficher que les deux première ligne du texte contenu dans la bdd??? Apparement, le texte arrive dans la div et pousse le fond du bloc. Encore un autre casse tête. si quelqu'un à une idée...je suis preneur

Re: afficher toute les valeur sauf la dernière

par jissey » 29 août 2012, 17:10

mes news ne sont pas affichées dans un tableau :oops: c'est peut-être une mauvaise façon de faire?
voilà le code que j'ai employé :

`
<?php
include('bdd.php');
$nombre=$bdd->query("SELECT * FROM news ORDER BY id DESC"); //pour compter le nombre d'image
$total=$nombre->rowCount(); //rowcount sert à donner le nombre d'entrée
$nb_page=$total/4;
if(!isset($_GET['page'])){$page_actuelle=1;}else{$page_actuelle=$_GET['page'];}
$liste=4*$page_actuelle-4;
$req=$bdd->query("SELECT * FROM news ORDER BY id DESC LIMIT $liste,1");
while($donnees_select=$req->fetch())
{
?>

<div class="titrenews"> <?php echo $donnees_select['titre']; ?> </div>

<div> <?php echo $donnees_select['chapeau']; ?> </div>
<div> <?php echo $donnees_select['texte']; ?> </div>
<?php
}
?>

Bon, je me suis servi d'un tuto qui expliquait comment faire une galerie d'image dynamique, et je l'ai modifié pour arriver à mes fin.
Ça me permet de gérer le nombre de news par pages.
pour ta mise en page par tableau, j'ai jamais fait.
là, si j'ai bien compris, ce qui correspond à mes affichages titre, chapeau texte ( oui j'ai pas mis de date), c'est
foreach($resultat as $row){ -> pour chaque résultats, affiche-les en tableau...
tab[$i]=array ($row['id'],$row['article'],$row['date']);} -> dont chaque colonne est id, article, date.

Les requêtes s'affiche donc dans l'ordre ascendant puisque ton i s'incrémente, ou alors je comprends plus.

Re: afficher toute les valeur sauf la dernière

par schim59 » 29 août 2012, 16:25

$resultat=$tarequete->fetchAll(PDO::FETCH_ASSOC);
$i=0;
foreach($resultat as $row){
$i++;
tab[$i]=array ($row['id'],$row['article'],$row['date']);} 
//etc...


A partir de là tu gères ta mise en page avec le tableau TAB[$i][]ou $i est le numéro de l'ID et le 2nd [] la 2nd dimension du tableau.

Bon codage

Re: afficher toute les valeur sauf la dernière

par jissey » 29 août 2012, 16:17

dans ma bdd, j'ai mon id (unique), le titre, un chapeau et le texte. L'ordre ou la numérotation si c'est ce que tu me demande se fait par l'id.