récupération de date mysql avec php

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 : récupération de date mysql avec php

par Invité » 03 nov. 2005, 18:20

c bon laissez tomber
:!: :?: :idea: :arrow:
g résolu mon probleme ...
:D :) :( :o
:shock: :? 8) :lol:
:x :P :oops: :cry:
:evil: :twisted: :roll: :wink:

le meme probleme enfin presque

par momo » 03 nov. 2005, 15:50

Moi j'implémente un moteur de recherche avec :
- choix du type d'annonce
- choix du sous type
- choix de la période
- choix de la zone géographique

Je rencontre le meme probleme vus que l'on a droit qu'a 1 seul WHERE par requete, il faudrait que j'en utilise 4
ou bien que je fasse 4 requetes en passant à chaque fois les parametres de la requete précédente ? (c'est l'enfer)
A L'AIDE ... MERCI

par Invité » 05 oct. 2005, 10:34

Voilà, tout fonctionne. Merci de ton aide. J'enverrai le code complet un peu plus tard, au cas où ça puisse servir à d'autres.

par Invité » 04 oct. 2005, 10:27

Merci mille fois. Je vais essayer tout ça.

par Cyrano » 04 oct. 2005, 10:15

Ha ben là, c'est nettement plus clair. mais effectivement, il y aura deux requêtes: la première va créer la nouvelle ligne, la seconde va mettre l'ancienne à jour. En fait, trois requêtes puisqu'il y en aura une première avant ça qui vérifiera le contenu d'une ligne pour savoir si on la change ou non.

Le schéma sommaire sera alors le suivant :
// On se connecte et on consulte la table pour trouver l'id correspondant à l'internaute et récupérer la date du champ fin (et l'id de la ligne);
$sql1 = "SELECT `id`, `debut`, `fin`, `quantite`, `statut` FROM `cycle` WHERE condition de selection..";
// On récupère et on met les valeurs en variables ré-utilisables
if("Si la date de fin" > "aujourd'hui")
{
    // Création d'une nouvelle ligne avec une partie des données de l'ancienne:
    $debut = date("Y-m-d");
    $fin   = "Calcul pour mettre $debut + 21 jours";
    $sql2 = "INSERT INTO `cycle` (`debut`, `fin`, `quantite`, `statut`) VALUES('". $debut ."', '". fin ."', ". quantite .", 'On')";
    // Après exécution de $sql2, on fait la mise à jour de l'autre ligne
    $sql3 = "UPDATE `cycle` SET statut = 'Off' WHERE id = ". $id_sauvegarde .";";
    // Exécution et on a terminé.
}
else
{
   // rien
}

par Invité » 04 oct. 2005, 09:54

Pardon, j'ai oublié: le champs debut et fin sont du type datetime.

par Invité » 04 oct. 2005, 00:25

J'ai une table, appelée "cycle".
Cette table est composée de 5 champs: id, debut, fin, quantite, statut.

Quand l'utilisateur se connecte, on vérifie si la date de "fin" n'est pas dépassée. Si c'est le cas, on recrée une nouvelle ligne, avec statut = "On", et on change le statut de l'ancienne ligne en "Off".

Bon, après cela (et c'est là que tu interviens) je veux récupérer la date 'fin' de l'ancienne ligne et l'insérer dans la nouvelle en tant que 'debut'.
Et enfin, ajouter 21 jours à cette date 'debut' pour obtenir la nouvelle date 'fin'.

Merci beaucoup de ton aide.

par Cyrano » 03 oct. 2005, 22:38

Bon, dis mois donc quelle est la structure de la table (nom des champs et types), quel champ tu veux récupérer et quel champ tu veux mettre à jour.

Dans l'idée, tu auras une première requête SELECT champ_a_recuperer etc.. et on conserve cette valeur dans une variable;
Deuxième requête, UPDATE table SET champ_a_mettre_a_jour = $valeur_sauvegardee;

Je ne vois là pas de difficulté particulière, mais j'ai peut-être loupé un chapitre...? :-k

par Invité » 03 oct. 2005, 22:33

Je suis désolé, mais je crois que je vais te demander de m'aider encore un peu pour en finir avec ça, pcq les solutions que j'imagine pour mettre en oeuvre la mise à jour en deux fois sont ni plus ni moins la même chose que ce que je faisais, mais en deux parties... Je tourne en rond.

par Cyrano » 03 oct. 2005, 21:10

En une seule requête, je ne crois pas effectivement, il va te falloir dnas un premier temps récupérer la valeur à mettre à jour sur une ligne et dans un second temps faire ton UPDATE avec cette valeur sur l'autre ligne

par alcofribas » 03 oct. 2005, 19:13

Le problème est que je dois mettre à jour une donnée sur une ligne avec une donnée qui appartient à une autre ligne !!! Donc, je dois utiliser deux WHERE, et apparemment ce n'est pas possible.

par Cyrano » 03 oct. 2005, 18:52

La syntaxe d'un update est la suivante::

Code : Tout sélectionner

UPDATE table SET champ_1 = 'nouvelle valeur 1', champ_2 = 'nouvelle valeur 2', .... champ_n = 'nouvelle valeur n', WHERE champ_repere = "Off";
Là sinon, j'ai du mal à visualiser ce que tu veux mettre à jour sur quelle(s?) table(s?) :-k

par alcofribas » 03 oct. 2005, 18:16

Alors, que dois-faire?

par Cyrano » 03 oct. 2005, 18:08

Oui, absolument, mais la syntaxe suggérée précédemment était erronée :

Code : Tout sélectionner

UPDATE cycle SET (comm WHERE statut = "On") = (fin WHERE statut = "Off")
Ça n'existe pas à ma connaissance en SQL. Ou alors il faudrait aller plus loin et faire des requêtes imbriquées, pour MySQL, ce n'est pas possible avant la version 4.1.xx

par alcofribas » 03 oct. 2005, 17:04

Je ne comprends pas :(
Après ton SET, il faut bien que tu définisse la donnée que tu veux rentrer, non?

Tu veux dire une syntaxe de ce style?

UPDATE cycle SET WHERE statut = "On" comm = fin WHERE = "Off"?