Page 1 sur 3

explode

Posté : 12 mai 2005, 13:32
par renatane
salut,

voilà, je veut récupérer les données d'une chaine de caractères:

Code : Tout sélectionner

$date=$list['type']." du ".$list['jour']." ".$list['mois']." ".$list['annee'];]
Pour ca j'utilise explode:

Code : Tout sélectionner

$pieces = explode(" ", $date); $a = $pieces[0]; // $list['type']." $b = $pieces[1]; //du $c = $pieces[2]; //".$list['jour']." $d = $pieces[3]; //".$list['mois']." $e = $pieces[4]; //".$list['annee']
puis je réalise une requete avec ses nouvelles variables

Code : Tout sélectionner

$sql ="DELETE FROM instance WHERE instance.type = ". $a ." and instance.jour = ".$c." and instance.mois = ".$d." and instance.annee = ".$e; $query = mysql_query($sql);
Le problème, c'est que ca ne fonctione pas. Je me pose donc la question: "est-ce que ca ne serait pas a cause de explode.
est-ce que explode prend les valeurs avec les . et les ", a ce moment là, c sur que ca ne marchera pas! Si c ca, comment puis-faire?

Posté : 12 mai 2005, 13:42
par rami
Fais un print_r $pieces. Tu verras ce qu'il y a dans ton tableau. Car d'apres ta variable $date, je pense que $pieces doit contenir:
$pieces[0]=$list['type']
$pieces[1]='du'
$pieces[2]=$list['jour']... ;)

Posté : 12 mai 2005, 13:57
par Invité
voici le résultat:
Array ( [0] => bureau [1] => du [2] => 7 [3] => octobre [4] => 5 )

Donc le problème ne vient pas de là! pfffff, mais de où?

Posté : 12 mai 2005, 14:00
par rami
Essaies d'afficher ta requete avant de l'executer pour voir si elle est correcte. Puis teste la ds phpmyadmin par exemple. ;)

Posté : 12 mai 2005, 14:11
par Invité
voici dans phpmyadmin

Erreur

requête SQL:

DELETE FROM instance WHERE instance.type = bureau AND instance.jour =7 AND instance.mois = octobre AND instance.annee =5

MySQL a répondu:Documentation
#1054 - Unknown column 'bureau' in 'where clause'

là, comprend pas?

Posté : 12 mai 2005, 14:14
par Invité
Mon champs type est de type enum('conseil communautaire', 'bureau').

Posté : 12 mai 2005, 14:31
par rami
$sql ="DELETE FROM instance
WHERE  instance.type =' ". $a ."'
and instance.jour = ".$c."
and instance.mois =' ".$d."'
and instance.annee = ".$e;

$query = mysql_query($sql); 
Essaie ca. Il manquait des simples quote pour tes champs type et mois ;)

Posté : 12 mai 2005, 14:41
par Invité
ca marche pas non plus!

Mais j'ai pas compris pourquoi c'est une erreur. J'en ai pas non plus pour jour et année...

Posté : 14 mai 2005, 11:04
par rami
Parce que les valeurs deschamps enum et varchar doivent etre "entouré" de smple quote dans tes requetes ;)
Ca te met toujours la meme erreur?

Posté : 14 mai 2005, 11:37
par pjl
Il y a quelques trucs que je ne comprends pas dans tout ca :

1. pourquoi utiliser 3 champs pour stocker une date dans ta base ?
2. pourquoi faire un explode pour récupérer la date à partir $date alors que tu as déjà les élèments dans ton tableau $list ?
3. pourquoi stocker un mois sous forme de chaine de caractères ?
4. pourquoi ne récupères tu pas dans ton code les erreurs de la base de données quand tu fais une opération dessus ?

Posté : 17 mai 2005, 10:14
par renatane
1)3 champs pour la date car les dates sont choisies via 3 menus deroulants par l'utilisateur.
2)j'utilise explode parce que c une fonction que je ne conait pas et que je veux apprendre.
3)depuismes champs jour mois et année sont des char (a cause de pb d'affcichage des zero)

Posté : 17 mai 2005, 10:36
par ZeRo[^L^]CoOOL
Bonjour
1)3 champs pour la date car les dates sont choisies via 3 menus deroulants par l'utilisateur.
voici un exemple comment stocker la date en utilisant ses menues déroulants:
supposons qu'ont 3 select à savoir jours, mois et annee:
$date=$_POST["jours"]."-".$_POST["mois"]."-".$_POST["annee"];
//si tu veut insérer
mysql_query("INSERT INTO DATE(date) VALUES('$date')");
//si tu veut supprimer
mysql_query("DELETE FROM DATE WHERE date='$date' ");
3)depuismes champs jour mois et année sont des char (a cause de pb d'affcichage des zero)
http://www.php.net/manual/fr/function.date.php
ca sera encore mieux si tu travaille avec le timestamp
Bonne chance :)

Posté : 17 mai 2005, 10:49
par renatane
comprend pas!

Dans ma table piur ma date j'ai 3 champs. donc qd j'ajoute ou supprime, je doit le faire dans les 3 champs? j'ai pas de champs date!

Posté : 17 mai 2005, 10:59
par ZeRo[^L^]CoOOL
non tu n'efface pas 3 champs !!!
tu va concaténer les 3 valeur de la SELECT ds une mm variable ($date) ty va l'insérer ds la collonne date

Posté : 17 mai 2005, 11:00
par renatane
la colonne date de où?
J'ai pas de champs date dans ma table!

est ce que ca:
mysql_query("INSERT INTO DATE(date) VALUES('$date')");
c'est la même chose que ca:
mysql_query("INSERT INTO instance jours, mois, annee VALUES ('$jour','$mois','$annee')";
et ce grace a ca:
$date=$_POST["jours"]."-".$_POST["mois"]."-".$_POST["annee"]; 
?????????????????????????????????????????????????????????????????