explode dans SQL ?

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 : explode dans SQL ?

par VaN » 06 sept. 2005, 09:42

je n'ai toujours pas reussi a regler ce probleme de positionnement de curseur dans mes deux mysql_fetch_array() :/

par Invité » 05 sept. 2005, 11:52

c'est au niveau de
while ($result_sort = mysql_fetch_array($query_sort)) { 
          
        $result_def = mysql_fetch_array($query_def);  
pour résumer le probleme, c'est comme si il y'avait une ligne d'écart entre le tableau $result_def et le tableau $result_sort.

Comment résoudre ça ?

par VaN » 02 sept. 2005, 17:47

array(2) { [0]=> string(6) "August" [1]=> string(4) "2004" }

August 2004 correspond à la derniere ligne générée.

par mere-teresa » 02 sept. 2005, 17:45

de $explode pardon...enfin de toutes tes variables en fait :)

par VaN » 02 sept. 2005, 17:35

string(4) "2004"
ça sert a quoi ?

par mere-teresa » 02 sept. 2005, 17:32

Oserai-je te conseiller un var_dump($annee_exp ) ?

par VaN » 02 sept. 2005, 17:30

Les tableaux sont indexés avec 0 comme première valeur : $explode[1]
oui mais nan, parce que dans $date, il y'a par exemple January 2005, February 2004, et moi la je veux recuperer l'année.

d'ou :
$date = $result_sort['date2'];
$explode = explode(" ",$date);
$annee_exp = $explode[1];
J'ai fait plusieurs edit a la fin de mon post précédent pour mieux expliquer.

par mere-teresa » 02 sept. 2005, 17:27

Les tableaux sont indexés avec 0 comme première valeur : $explode[1]

par VaN » 02 sept. 2005, 17:25

Bah en fait nan :lol:

au niveau de mon select, impec, c'est trié comme il faut. mais lorsque le clique pour choisir une date, au lieu de me prendre cette date la en compte, il me prend celle juste en dessous. Il me semble que j'ai deja été confronté a ce probleme, comme quoi un musql_fetch_array crée un tableau, et se positionne a la premiere ligne, et ça causait un probleme de ce genre .

le code pour mieux y voir (ou pas :D )
<form action="index.php" name="sort" method="get">
      	<?php 
	  	if (isset($_GET['cat'])) 
		{
	  	?>
        <input type="hidden" name="cat" value="<?php echo ($_GET['cat']); ?>" />
        <?php
		}
		?>
        <select name="date" onchange="submit()" style="margin:0px; ">
        <option value="no">Choose a date</option>
        <?php
		if(isset($_GET['cat']) && $_GET['cat']=='2')
		{
		$sql_def = "SELECT DISTINCT date FROM media_articles";
		$sql_sort = "SELECT DISTINCT DATE_FORMAT(date,'%M %Y') AS date2 FROM media_articles ORDER BY date DESC";
		}
		else
		{
		$sql_def = "SELECT DISTINCT date FROM articles";
		$sql_sort = "SELECT DISTINCT DATE_FORMAT(date,'%M %Y') AS date2 FROM articles ORDER BY date DESC";
		}
		$query_def = mysql_query($sql_def);
		$query_sort = mysql_query($sql_sort) OR die ("Erreur : ".mysql_error());
		while ($result_sort = mysql_fetch_array($query_sort)) {
		
		$result_def = mysql_fetch_array($query_def);
		
		$date = $result_sort['date2'];
		$explode = explode(" ",$date);
		$annee_exp = $explode[1];

		
		//$sql = "SELECT mois FROM mois WHERE id_mois='$mois_exp'";
		//$query = mysql_query($sql);
		//$result = mysql_fetch_array($query);
		?>
            <option value="<?php echo $result_def['date']; ?>"
		<?php
		if (isset($_GET['date'])) 
		{
			if ($_GET['date']==$result_sort['date2']) 
			{
				echo "selected";
			}
		}
		?>
		><?php echo $date ?></option>
        <?php
		}
		?>
        </select>
&nbsp;&nbsp;&nbsp;
        </form>
c'est au niveau de
while ($result_sort = mysql_fetch_array($query_sort)) { 
         
        $result_def = mysql_fetch_array($query_def); 
et

Code : Tout sélectionner

<option value="<?php echo $result_def['date']; ?>" <?php if (isset($_GET['date'])) { if ($_GET['date']==$result_sort['date2']) { echo "selected"; } } ?> ><?php echo $date ?></option>
que cela doit genérer le probleme j'imagine

pour résumer le probleme, c'est comme si il y'a vait une ligne d'écart entre le tableau $result_def et le tableau $result_sort

par mere-teresa » 02 sept. 2005, 17:22

C'est résolu ?

par VaN » 02 sept. 2005, 17:16

Bien joué, c'etait effectivement du au conflit on dirait. avec date2, ça marche

par mere-teresa » 02 sept. 2005, 17:16

quel est le format de ton champ "date" ? (nom très mal choisi...mets date_fin ou date_inscription...etc..)

par Truc » 02 sept. 2005, 17:07

comme ceci:

SELECT DATE_FORMAT(date,'%m-%Y') AS date2 FROM articles ORDER BY date DESC

remarque: j'ai mis "date2" pour eviter les éventuel conflits

par VaN » 02 sept. 2005, 17:02

c'est bon cette fois :
SELECT DISTINCT DATE_FORMAT(date,'%M %Y') AS date FROM articles DESC  
par contre je n'arrive pas à ordonner les dates comme je voudrais, le ORDER BY ne marche pas. je voudrais les trier de la plus recente a la plus vieille.
En fait la elles sont à peu près triées, sauf la plus récente qui se met tout en bas de la liste :

date
May 2005
April 2005
March 2005
February 2005
January 2005
November 2004
October 2004
August 2004
August 2005

par Truc » 02 sept. 2005, 16:59

le bout de code donné précédemment marche chez moi dc pkoi il ne marcherai pas avec toi ??
la requete me sort ça :
date
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
ta table contient bien des dates ?