Page 1 sur 1

masquer le contenu d'une table avec php

Posté : 03 mai 2010, 12:55
par melodide
J'ai un petit souci avec mon code php. Je vous explique ce que je veux.
J'ai une table qui ressemble à ça :

LIB----------------------MADATE-------------------CODE------(+)
connect----------26/01/10 02:05:04--------------1---------détail
connect----------26/01/10 06:08:24--------------1---------détail
connect----------30/04/10 10:15:48--------------2---------détail
connect----------30/04/10 15:32:56--------------2---------détail

et j'aimerais ça :
LIB----------------------MADATE-------------------CODE------(+)
connect----------26/01/10 02:05:04--------------1---------détail
connect----------30/04/10 10:15:48--------------2---------détail

détail est un lien hypertexte quand on clique dessus en face de la première ligne j'aimerais voir :
LIB----------------------MADATE-------------------CODE------(+)
connect----------26/01/10 02:05:04--------------1---------détail
connect----------26/01/10 06:08:24--------------1---------détail

Avec sql j'ai essayé de faire un select distinct mais ça me donne pas ce que je veux je sais pourquoi mais sa serait trop long à expliquer. On m'a dit que je pouvais trouver une solution en php.

voici des extraits de mon code :
<?php 

	$sql = 'SELECT MADATE,LIB,CODE FROM HISTO WHERE CODE IS NOT NULL ORDER BY CODE,MADATE DESC LIMIT 200';  
	$act = select_list($db,$sql);
	
	print '<tr><td>HISTO</td></tr>';	
	print '<tr>';					
	print '<td>LIB </td>';	
	print '<td>MADATE</td>';		
	print '<td>CODE</td>';
	print '<td>+</td>';			
	print '</tr>';
	
	foreach ($act as $val) 
	{	
		$laDate=$val["MADATE "];
		$leCode=$val["CODE "];
		$leJour=substr(MADATE,1,2);
		for($i=0;$i<=50;$i++)
		{
			If ($aCT[$i][MADATE][$leJour]==$actions[$i+1][MADATE][$leJour])
			{	
			print '<tr>';						
				print '<td>'.$actions[$i][LIB].'</td>';	
				print '<td>'.$actions[$i][MADATE].'</td>';			
				print '<td>'.$actions[$i][CODE].'</td>';		
				print '<td>'.'<a href="./detail.php?date=' . $laDate . '&code=' . $leCode .'">Détail</a>'.'</td>';
			print '</tr>';
			}
			else
			{
			print '<tr>';						
				print '<td>'.$val["LIB "].'</td>';	
				print '<td>'.$val["DATE "].'</td>';			
				print '<td>'.$val["CODE "].'</td>';		
				print '<td>'.'<a href="./detail.php?date=' . $laDate . '&code=' . $leCode .'">Détail</a>'.'</td>';
			print '</tr>';
			}
		}	

		
	}		
	
	print '</table>';
?>
Comme vous pouvez le voir j'ai essayé de faire le code en php pour n'afficher qu'une seule ligne correspondant à une seule date mais sa ne fonctionne pas du tout.

S'il vous plait aidez moi la je sèche vraiment quelqu'un aurait il une solution??!

Re: masquer le contenu d'une table avec php

Posté : 03 mai 2010, 13:36
par macgawel
Avec sql j'ai essayé de faire un select distinct mais ça me donne pas ce que je veux je sais pourquoi mais sa serait trop long à expliquer. On m'a dit que je pouvais trouver une solution en php.
(...)

S'il vous plait aidez moi la je sèche vraiment quelqu'un aurait il une solution??!
J'ai une solution, mais ça serait trop long à expliquer :mrgreen:



Sérieusement, en SQL ça devrait le faire...
Voir du côté de CAST(`madate` as date).

Re: masquer le contenu d'une table avec php

Posté : 03 mai 2010, 13:55
par melodide
En faite c'est pas une solution le sql. J'ai fait le select distinct mon problème c'est la date j'ai fait comme t'a dit sauf que quand je cliquait sur détail sa me renvoyait ça :
LIB----------------------MADATE-------------------CODE------(+)

voila et c'était tout je me suis renseigné et le truc c'est que au lieu de recherché tous les LIB éxistant à MADATE ça recherchait MADATE 00:00:00.

Par exemple : MADATE=22/08/09 12:42:12
une fois la date extraite j'ai : 22/08/09
mais détail.php recherche 22/08/09 00:00:00
en gros il recherche tous les LIB existant le 22/08/09 à minuit pile.

Donc tu vois avec sql sa le fait pas du tout

Re: masquer le contenu d'une table avec php

Posté : 03 mai 2010, 14:11
par macgawel
Comme tu ne dis pas où est le problème (sa ne fonctionne pas du tout c'est vague), on en est réduit à des suppositions...

Là, à vue de nez le problème vient de ta page detail.php
Et même, je dirais que ça vient de la requête que tu passes... Et là encore, un CAST('madate' as date) bien placé devrait faire l'affaire.

Re: masquer le contenu d'une table avec php

Posté : 03 mai 2010, 14:38
par Invité
et bien sa ne me renvoie pas ce que j'attend : au lieu d'avoir
LIB----------------------MADATE-------------------CODE------(+)
connect----------26/01/10 02:05:04--------------1---------détail
connect----------30/04/10 10:15:48--------------2---------détail

j'ai
LIB----------------------MADATE-------------------CODE------(+)
connect----------26/01/10 02:05:04--------------1---------détail
connect----------26/01/10 10:15:48--------------1---------détail
...

ma page détail.php n'a pas de problème j'ai fait des test 'en dur' donc par exemple j'ai fait :
$sql='SELECT * FROM HISTO WHERE MADATE>='20/02/10 00:00:00' AND MADATE<='20/02/10 23:59:59" AND CODE=1;

et sa me renvoie tous les LIB pour la journée du 20/02/10

Mon problème c'est que sans être en dur ma requête c'est :
$sql='SELECT * FROM HISTO WHERE MADATE=\'' . $laDate. '\' AND CODE=' . $leCode;

et la ça ne fonctionne pas car quand je fait le CAST ma requête en dur correspond à
$sql='SELECT * FROM HISTO WHERE MADATE='20/02/10 00:00:00' AND CODE=1;

en faite ça recherche à minuit pile et pas le jour demandé

l'idéal pour moi sa serait qu'il soit possible de faire :
$sql='SELECT * FROM HISTO WHERE MADATE>=\'' . $laDate. '\' AND MADATE<='\'' . $laDate. '\' +1 AND CODE=' . $leCode;

Mais bon sa je ne sais pas comment le faire

Re: masquer le contenu d'une table avec php

Posté : 03 mai 2010, 15:29
par AB
l'idéal pour moi sa serait qu'il soit possible de faire :
$sql='SELECT * FROM HISTO WHERE MADATE>=\'' . $laDate. '\' AND MADATE<='\'' . $laDate. '\' +1 AND CODE=' . $leCode;

Mais bon sa je ne sais pas comment le faire
Ah bon parce qu'en lisant ton topic depuis le début, ce que tu demandais n'étais pas clair.
Regardes par exemple au chapitre "DATE_ADD(date,INTERVAL expr type), DATE_SUB(date,INTERVAL expr type)" de cette page

Re: masquer le contenu d'une table avec php

Posté : 03 mai 2010, 15:52
par melodide
Désolé de ne pas etre claire mais on est pas tous des pros en la matière sinon je ne serais pas sur ce forum.

Euh c'est cool ton lien pas mal la fonction je pense que sa peu m'aider mes dans mon codes je met sa ou car j'ai essayé
$sql='SELECT * FROM HISTO WHERE MADATE>=\'' . $laDate. '\' AND MADATE<='\'' . $laDate. '\+ INTERVAL 1 DAY' +1 AND CODE=' . $leCode;

Mais bon sa ne fonctionne pas. Vu que ma variable c'est $laDate et que les \'' . sont important pour que ça fonctionne je ne sais pas comment faire et ou mettre la fonction

Re: masquer le contenu d'une table avec php

Posté : 03 mai 2010, 16:17
par AB
Désolé de ne pas etre claire mais on est pas tous des pros en la matière sinon je ne serais pas sur ce forum.
Tu y es bien arrivé à la fin, à être clair... Bien cerner le problème est essentiel (aussi bien pour le pro, que pour l'amateur qui veut avancer un peu ) et de plus ça nous permet de donner des réponses appropriées. Une question bien formulée et c'est déjà les trois quarts du problème qui est résolu :wink:

Euh sinon ce serait peut-être un truc du genre (pas testé)

Code : Tout sélectionner

$sql = "SELECT * FROM HISTO WHERE MADATE >= '".$laDate."' AND MADATE <= DATE_ADD('".$laDate."',INTERVAL 1 DAY) AND CODE = '".$leCode."'";

Re: masquer le contenu d'une table avec php

Posté : 03 mai 2010, 17:22
par melodide
Merci beaucoup pour ton aide mais sa ne fonctionne pas :cry:

Re: masquer le contenu d'une table avec php

Posté : 03 mai 2010, 23:48
par AB
Ben alors faut trouver l'erreur...

Fais afficher ta requête pour vérifier la bonne syntaxe, si la chaine n'est pas coupée etc.

Code : Tout sélectionner

echo $sql;
Et quand tu fais une requête fais afficher les erreurs en phase de développement

Code : Tout sélectionner

$result = mysql_query($sql) or die (mysql_error());
Voir ce lien

Sinon ce n'est peut-être pas la bonne syntaxe (j'ai fait ça en première idée et j'ai pas de tables pour tester la requête), ou tes dates ne sont peut-être pas au bon format... ou encore les données de ta bdd sont incomplètes et la requête ne retourne rien parce qu'il n'y a rien à retourner en fonction de la sélection...