PB smarty et msql

Répondre
nlefebvre
le 07/05/2010 à 13:35
nlefebvre
SLT
je cherche a afficher un seul texte, le plus réssant, mais le problème c'est qu'il me sort tous la table du 1 id au dernier. voici mon code php
<?php 
$smarty->compile_check = true;
$smarty->debugging = false;
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}


mysql_select_db($dbname, $link);
$query_Recordset1 = "SELECT acceuilID, Titre1, article1, titre2, article2 FROM table_motiv_acceuil ORDER BY acceuilID DESC";
$Recordset1 = mysql_query($query_Recordset1, $link) or die(mysql_error());

$totalRows_Recordset1 = mysql_num_rows($Recordset1);
#...your mysql connection & smarty initialization goes here
while ($row = mysql_fetch_assoc($Recordset1))
{
$id[] = $row['acceuilID'];
$titles[] = $row['Titre1'];
$article[] = $row['article1'];


}
$smarty = new Smarty();
$smarty->assign ('ids',$id);
$smarty->assign ('titles',$titles);
$smarty->assign ("articlesdroite",$article);


// Affichage du template après compilation
$smarty->cache_lifetime = 24 * 60 * 60;
$smarty->display('test.tpl');
?>


Voici le code TPL
{section name=id loop=$titles} 
{$articlesdroite[id]}

{/section}

Merci pour votre aide
LupusMic
le 07/05/2010 à 14:10
LupusMic
Tu devrais installer un correcteur orthographique. Merci pour nos yeux.

Et aussi lire les conditions d'utilisation des forum, même raison (parce que La Globule ne s'est pas décarcassé pour rien).

Ceci dit, c'est normal que ton code affiche tout. C'est ce que tu lui demande. Il n'y a de notion de pagination nulle part. Ni dans la requête SQL, ni dans le template Smarty. Essaye de chercher avec ce mot-clé, « pagination », qui te permettra de trouver ce que tu souhaite.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
dark_nemo
le 07/05/2010 à 20:47
dark_nemo
Pour afficher le dernier, il te faut utiliser LIMIT 1 dans ta requêtte MySQL.
C'est aussi bête que ça.
LupusMic
le 08/05/2010 à 00:58
LupusMic
(dark_nemo) Ben non, ça affiche le premier, 'fin, ça dépend ce que tu appelle le dernier et le premier.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
dark_nemo
le 08/05/2010 à 14:55
dark_nemo
Bah il écrit :

ORDER BY acceuilID DESC

Donc j'ai supposé que accueilID était sa clé primaire en auto-inscrémente. Et comme il DESC (décrémente) il part du dernier. Donc avec un LIMIT 1 logiquement il doit prendre le dernier.
Bon j'avoue que j'aurais pas fait comme ça car c'est un peu "barbare" comme méthode. Prendre l'ensemble des résultats pour n'en sortir qu'un c'est une perte énorme de perf.
Il aurait pu prendre uniquement la dernière valeur de l'auto-encremente avec LAST_INSERT_ID() et retourner cette dernière ligne.
nlefebvre
le 11/05/2010 à 15:34
nlefebvre
slt merci pour vos réponse et votre indulgence sur l'orthographe. en faite j'aimerai convertie le code qui suit en sarmty:

<?php require_once('Connections/dbc.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

mysql_select_db($dbname, $link);
$query_Recordset1 = "SELECT acceuilID, Titre1, article1, titre2, article2 FROM table_motiv_acceuil ORDER BY acceuilID DESC";
$Recordset1 = mysql_query($query_Recordset1, $link) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<?php require_once('header.php'); ?>
<div id="conteneur">
<?php require_once('block.php'); ?>


<div id="block4"><div id="block3"></div><div id="left_content">
<div class="h2"><?php echo $row_Recordset1['Titre1']; ?></div>

<div class="content"><?php echo $row_Recordset1['article1']; ?><br />
</div>
</div>



<div id="content">
<div class="h1"><?php echo $row_Recordset1['titre2']; ?></div>
<div class="content"><?php echo $row_Recordset1['article2']; ?><br />
</div>
<br />
<div class="h1"><br />
</div></div>
</div></td><div id="block5"></div>

<div id="bloc_du_bas"></div></div>
</div><div id="bloc_du_bas2"></div></div>
</html>
<?php
mysql_free_result($Recordset1);
?>
dark_nemo
le 11/05/2010 à 16:23
dark_nemo
LIMIT 1 fonctionne, c'est une instruction de la grammaire SQL.
Il faudrait en dire plus car nous ne sommes pas devin. "ça ne marche pas" c'est vague et pas constructif.
Qu'elle est la structure de ta base de données?
As-tu un champ en auto-incrémente?
Si cela n'est pas le cas en effet ça fonctionne pas car sans rien pour déterminer qu'elle est la dernière entrée dans la base (pas de date, pas d'identifiant incrémenté) c'est impossible.
Ensuite et là c'est un petit coup de gueule.
Lisez les docs. Un forum d'aide est là pour aider pas pour faire le boulot à votre place.
Un informatique, il faut un minimum chercher et un minimum de courage pour lire les docs.
Si tu veux utiliser smarty, va lire la doc smarty.
Si tu butes sur un problème précis, là nous pouvons t'aider mais en aucun cas faire le boulot pour toi.
nlefebvre
le 12/05/2010 à 16:02
nlefebvre
slt limit 1 ne marche pas plus
struture mysql


$dbname = 'motivation';
$link = mysql_connect("localhost","root","") or die("Couldn't make connection.");
$db = mysql_select_db($dbname, $link) or die("Couldn't select database");
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours