Affichage dernière entrée du table et le reste en archive

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 dernière entrée du table et le reste en archive

par Truc » 27 mars 2006, 14:43

avec mysql_fetch_array tu peut utiliser le retour de deux manières, par exemple:
$donnee = mysql_fetch_array($requet);
echo $donnee[0]; //tableau indexé
echo $donnee['id']; //tableau associatif 
revient donc au meme affichage, alors que mysql_fetch_assoc ne retourne qu'un tableau associatif donc:
$donnee = mysql_fetch_assoc($requet);
echo $donnee['id'];

par Ziwa » 27 mars 2006, 14:35

Impeccable, merci pour ton aide.

J'suis bête, je passe a coté de pleins de choses à force d'utiliser toujours les même choses, j'suis désolé si mes question sont bête parfois

J'aimerais une petite précision avant de pouvoir mettre ce sujet en resolu


Pour ceci
while ($donnee = mysql_fetch_assoc($requet))
J'avais pour habitude d'utiliser un mysql_fetch_array et un $row['texte'] pour récupéré les valeurs, qu'es qu'apporte en plus le mysql_fetch_assoc?

mysql_fetch_assoc() retourne un tableau associatif qui contient la ligne lue dans le résultat result et déplace le pointeur interne de données. mysql_fetch_assoc() revient à appeler la fonction mysql_fetch_array() avec MYSQL_ASSOC en tant que second paramètre. Cette fonction retourne uniquement un tableau associatif.
Pour moi c'est du chinois

par Truc » 27 mars 2006, 12:35

Salut,

Tu peux simplifier le code en ne séléctionnant que ce qui est important dans la page.
Page de news:
$req="select * from actu ORDER BY id DESC LIMIT 1";
$requet=mysql_query($req);      

$titre = mysql_result($requet,0,"titre");
$texte = mysql_result($requet,0,"texte");
$photo = mysql_result($requet,0,"photo");  
Page d'archive:
$req="select * from actu ORDER BY id DESC ";
$requet=mysql_query($req);

$donnee = mysql_fetch_array($requet); // pour ne pas prendre la dernière news, lecture de l'enregistrement

while ($donnee = mysql_fetch_assoc($requet))
{
   $id=$donnee['id'];
   $titre=$donnee['titre'];
   $photo=$donnee['photo'];
   $texte=$donnee['texte'];

   //reste du code
   // ....
}

Affichage dernière entrée du table et le reste en archive

par Ziwa » 27 mars 2006, 11:23

J'ai un problème ( et oui encore un!)

J'ai une partie new sur mon site, et donc lorsque je complète mon formulaire coté admin, c'est censé mettre en ligne page actu cette nouvelle new enregistré, et mettre l'ancienne avec les autres dans archives

sauf que


ça ne fonctionne pas =), la dernière news entrée se met en archive directe, et celle en page de new ne bouge pas


En fait dans ma bdd, les id s'incrémente automatiquement, donc en fait il est censé prendre l'id le plus important (donc le dernier entré pour le mettre en news) mais en fait quand on regarde ma bdd,l'id s'incrémente correctement mais cette dernière ligne entrée ne se met pas en bas de ma bdd mais en avant dernière place (je sais pas si cela a son importance donc je le dis quand même, même si mes id sont correctent) et la derniere ligne de ma table c'est la new qui est donc statique (sur ma page de news)


je vous montre mon code

Page de news
 <?
	  $req="select * from actu";
	  $requet=mysql_query($req);
	  
	  $i=0;
		while($i<mysql_num_rows($requet))
		{
				$i++;
		}
		$titre = mysql_result($requet,$i-1,"titre");
		$texte = mysql_result($requet,$i-1,"texte");
		$photo = mysql_result($requet,$i-1,"photo");
		
		
		echo"<font color='#B9D041' ><b>".$titre."</b></font>";
		echo"<br><br>";
		
		echo "<table background-position: center widht='100%'><tr>";
		echo "<td widht='70%' align='justify' valign='top'>".$texte."<br></td>";
		echo "<td valign='middle'><img src='Images/".$photo."' width='220' height='220'></td>";
		echo "</tr></table>";
	  
	  ?>

Page d'archive
<?
		$req="select * from actu";
		$requet=mysql_query($req);
		$nb = mysql_num_rows($requet);
		
		
		$longeur_max=330;
		
		//fonction pour tronquer du texte
					function Tronquer_Texte($txt, $longeur_max)
				{
					if (strlen($txt) > $longeur_max)
					{
					$txt = substr($txt, 0, $longeur_max);
					//strrpos($ch1,$ch2) recherche le caractère $ch2 dans la chaine $ch1 en partant de la fin de la chaîne.
					$dernier_espace = strrpos($txt, " ");
					$txt = substr($txt, 0, $dernier_espace)."...";
					}
				
					return $txt;
				}
				
		$i=0;
		
		while ($i<$nb-1)
		{
				$id=mysql_result($requet,$i,'id');
				$titre=mysql_result($requet,$i,'titre');
				$photo=mysql_result($requet,$i,'photo');
				$texte=mysql_result($requet,$i,'texte');
				
				
				// style='border-collapse: collapse;  = permet de fusionner les bordures
				echo "<table  border='1' bordercolor='#CCCCCC' style='border-collapse: collapse;' widht='100%'><tr>";
				echo "<td><img src='Images/".$photo."' height='100' width='100'></td>";
				
				echo "<td widht='100%'><font color='#B9D041'><b>".$titre."</b></font><br><br>";
				echo Tronquer_Texte($texte, $longeur_max);
				echo "<br><br><div align='right'><a href='sujet_archive.php?id=".$id."'> En savoir plus?</a></div></td>";
				
				echo "</tr></table><br>";
				$i++;
		}

?>
C'est mon mysql_num_rows ?