explode

renatane
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 13:32

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?

Mammouth du PHP | 983 Messages

12 mai 2005, 13:42

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']... ;)

Invité
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 13:57

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ù?

Mammouth du PHP | 983 Messages

12 mai 2005, 14:00

Essaies d'afficher ta requete avant de l'executer pour voir si elle est correcte. Puis teste la ds phpmyadmin par exemple. ;)

Invité
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 14:11

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?

Invité
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 14:14

Mon champs type est de type enum('conseil communautaire', 'bureau').

Mammouth du PHP | 983 Messages

12 mai 2005, 14:31

$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 ;)

Invité
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 14:41

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...

Mammouth du PHP | 983 Messages

14 mai 2005, 11:04

Parce que les valeurs deschamps enum et varchar doivent etre "entouré" de smple quote dans tes requetes ;)
Ca te met toujours la meme erreur?

ViPHP
pjl
ViPHP | 2119 Messages

14 mai 2005, 11:37

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 ?

Eléphant du PHP | 155 Messages

17 mai 2005, 10:14

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)

Eléphanteau du PHP | 46 Messages

17 mai 2005, 10:36

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 :)
L'informatique c'est ma vie

Eléphant du PHP | 155 Messages

17 mai 2005, 10:49

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!

Eléphanteau du PHP | 46 Messages

17 mai 2005, 10:59

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
L'informatique c'est ma vie

Eléphant du PHP | 155 Messages

17 mai 2005, 11:00

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"]; 
?????????????????????????????????????????????????????????????????