Affichage d'une partie du texte récupéré sur un blog

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 : Affichage d'une partie du texte récupéré sur un blog

par Ariochs » 25 juin 2009, 15:43

Non marche pas.

Par contre je viens de voir qu'en faisant :
$sql = "SELECT post_content FROM wp_posts WHERE ID=LAST_INSERT_ID(ID)";
Ça fonctionne mais il prend toujours le 1er..

Ah non je suis bête j'ai rajouté "ORDER BY ID DESC" et maintenant sa fonctionne.

Merci beaucoup pour ton aide

par charabia » 25 juin 2009, 15:30

Heu non, genre
$sql = "SELECT post_content FROM wp_posts WHERE id=".mysql_insert_id(); 

par Ariochs » 25 juin 2009, 15:22

Tu as oublié la concaténation
Genre :
$sql = "SELECT post_content FROM wp_posts WHERE id='mysql_insert_id(id)'";
Si oui sa marche toujours pas.

par charabia » 25 juin 2009, 15:15

Tu as oublié la concaténation

par Ariochs » 25 juin 2009, 14:52

Voila le code qui marche si je choisi l'id=1
<?php

// Connexion au serveur
include 'admin/connectbddwp.php';

//Je sélectionne toutes les catégories de la table
$sql = "SELECT post_content FROM wp_posts WHERE id=1";
$enreg = mysql_query($sql) or die(mysql_error());
while ($rec = mysql_fetch_array($enreg)){
	$mots_complets = $rec['post_content'];	
	
//fonction limitation de mots
function debutchaine($chaine, $nbmots) { // 1er argument : chaîne - 2e argument : nombre de mots
	$max=40;
	if(strlen($chaine)>=$max){$chaine=substr($chaine,0,$max);
	$espace=strrpos($chaine," ");
	$chaine=substr($chaine,0,$espace).'... <a href="http://www.iltc.fr"><b>Lire la suite</b></a>'; }
//echo $chaine;
	$tab = explode(" ",$chaine);
		if (count($tab) <= $nbmots) {
			$affiche = $chaine;
		} 
		else {
			$affiche = "$tab[0]";
			for ($i=1; $i<$nbmots; $i++) {
				$affiche .= " $tab[$i]";
			}
		}
	return $affiche;
}

$nb_mots = 10;
$mot_courts = debutchaine($mots_complets, $nb_mots);
echo $mot_courts;
}

?>
quand je met
$sql = "SELECT post_content FROM wp_posts WHERE id='mysql_insert_id()'";
rien n'apparait (on peux en déduire qu'il ne trouve pas de post.

par charabia » 25 juin 2009, 14:45

redonne nous la portion de code que tu as fait pour ça.

Mais quand tu dis que ça ne marche pas, qu'est-ce que tu as comme résultat exactement ?

par Ariochs » 25 juin 2009, 14:42

Aucune des deux ne fonctionne..

Tu aurais une petite idée ? Stp

par charabia » 25 juin 2009, 14:37

mysql_insert_id() convertit le type de valeur retourné par la fonction C de MySQL C mysql_insert_id() en type PHP long (appelé int en PHP). Si votre colonne de type AUTO_INCREMENT est une colonne de type BIGINT, la valeur retournée par mysql_insert_id() sera incorrecte. À la place, utilisez la fonction interne MySQL LAST_INSERT_ID() dans une requête SQL.

par Ariochs » 25 juin 2009, 14:34

Oui j'ai vu après.. Avec la fatigue je m'embrouille..

Par contre pour récupérer le dernier ID toujours pas réussi.

Le "SELECT post_content FROM wp_posts WHERE id='mysql_insert_id() '" n'a pas l'air de marché.. Vais test d'autres ptits truc pour voir, mais je dois pas être loin. Peux être un LAST_INSERT_ID()..

par charabia » 25 juin 2009, 14:29

Tu n'as pas appliqué la fonction qui coupe ta chaîne dans ton code. Genre
debutchaine($mots_complets['post_content'], $nb_mots)

par Ariochs » 25 juin 2009, 14:25

Bon je reviens car j'arrive pas a faire ce que je veux..

Donc j'arrive pas a récupérer le dernier topic créé, et si je remplace par l'id=1 pour être sur d'avoir un message, le limite de caractère ne s'applique plus..

Qui peux m'aider ? svp

[EDIT] Trouvé la solution pour la limite de caractère en récupération de donnée, mais par contre pour avoir le dernier topic créé, toujours pas trouvé. J'edit le code qui est a la suite

Le code actuel :
<?php

	// Connexion au serveur
	include 'admin/connectbddwp.php';
//Je sélectionne toutes les catégories de la table
$sql = "SELECT post_content FROM wp_posts WHERE id=1";
$enreg = mysql_query($sql) or die(mysql_error());
while ($rec = mysql_fetch_array($enreg)){
	$mots_complets = $rec['post_content'];	
	
//fonction limitation de mots
function debutchaine($chaine, $nbmots) { // 1er argument : chaîne - 2e argument : nombre de mots
	$max=40;
	if(strlen($chaine)>=$max){$chaine=substr($chaine,0,$max);
	$espace=strrpos($chaine," ");
	$chaine=substr($chaine,0,$espace).'... <a href="http://www.iltc.fr"><b>Lire la suite</b></a>'; }
//echo $chaine;
	$tab = explode(" ",$chaine);
		if (count($tab) <= $nbmots) {
			$affiche = $chaine;
		} 
		else {
			$affiche = "$tab[0]";
			for ($i=1; $i<$nbmots; $i++) {
				$affiche .= " $tab[$i]";
			}
		}
	return $affiche;
}

$nb_mots = 10;
$mot_courts = debutchaine($mots_complets, $nb_mots);
echo $mot_courts;
}

?>

par charabia » 25 juin 2009, 11:39

Tu veux aussi utiliser le ORDER BY et LIMIT combinés

par Ariochs » 25 juin 2009, 11:26

Héhé merci, ça fonctionne parfaitement


Petite question en plus.

Je sais récupérer mes données dans une BDD, mais comment dire de récupérer la dernière information ajouté ?

[EDIT] : J'ai rien dit, je crois qu'il faut utiliser LAST_INSERT_ID(). Vais faire quelque essais ^^



Pour ceux qui serait interessé par le code, je le laisse ici :
<?php

//fonction limitation de mots
function debutchaine($chaine, $nbmots) { // 1er argument : chaîne - 2e argument : nombre de mots
	$max=50;
	if(strlen($chaine)>=$max){$chaine=substr($chaine,0,$max);
	$espace=strrpos($chaine," ");
	$chaine=substr($chaine,0,$espace).'... <a href="http://www.site.fr"><b>Lire la suite</b></a>'; }
//echo $chaine;
	$tab = explode(" ",$chaine);
		if (count($tab) <= $nbmots) {
			$affiche = $chaine;
		} 
		else {
			$affiche = "$tab[0]";
			for ($i=1; $i<$nbmots; $i++) {
				$affiche .= " $tab[$i]";
			}
		}
	return $affiche;
}

$mots_complets = 'salut sa va bien je suis un super pote a toi on rigole tou le temp c tro dorle comme on ce marre c bien le stage ouai sa va encore c pa mal mais bon c pa tt le temp marran oui mai comme dans la vrai vie tu sais on fai pa tout le temps ce quon veu sa serait telllement rigolo sinon ahahahahahahahahahaha bebebebebebebebeeb cececececececececececec'; //data événement
$nb_mots = 50;
$mot_courts = debutchaine($mots_complets, $nb_mots);
echo $mot_courts;


?>

par charabia » 25 juin 2009, 11:06

Ce regex d'expreg.com devrait t'aider :
$max=20;
if(strlen($chaine)>=$max){$chaine=substr($chaine,0,$max);
$espace=strrpos($chaine," ");
$chaine=substr($chaine,0,$espace)."..."; }
echo $chaine;
Aucun mot ne sera coupé au milieu et il y aura ... après 20 caractères.

par Ariochs » 25 juin 2009, 11:02

Oui. Car en fait c'est pour recuperer le dernier articles mis sur un blog.

Donc il y a un petit espace réservé pour un morceaux de cet article, une fois le nombre de caractères depassé, sa affiche "... Lire la suite" a la fin.