IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Verification d'entrée dans la base


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut Verification d'entrée dans la base
    Bonjour, j'ai un script qui verifie les dates entrées par un client. Je voudrais controler si le client a deja choisie cette date et donc dans ce cas la, simplement faire un UPDATE ou si la date n'est pas entrée, faire un INSERT mais cela ne fonctionne pas. Je ne sais pas si mon dernier test est juste, vous avez une idée ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <?php
      include ("conf.php");
      $jourf = $_SESSION['jour'];
      $ReqJour = "UPDATE annonce SET jour='$jourf' WHERE idannonce ='".$annonce."'";
      $Resjour = mysql_query($ReqJour) or die(mysql_error());
     
      $libre = $_POST['etat'];
      $value = array();
      $i = 0;
      foreach ($libre as $cle => $valeur)
      {
        if($libre[$cle] == 0 || $libre[$cle] == 1)
        {
          $etat = $libre[$cle];
          $prix = $_POST['prix'][$cle];
    	  $datej = date('Y-m-d');
          $dateDeb = date('Y-m-d', $cle);
          $dateFin = date('Y-m-d', strtotime('+7 days', $cle));
          $value[] = '(\'' .$annonce . '\', ' . $etat . ', \'' . $dateDeb . '\', \'' . $dateFin . '\', \'' .$datej. '\', \'' . $prix . '\')';
          $i ++;
        }
      }
      $valeurSql = implode(', ', $value);
      $req = mysql_query("SELECT * from reserv WHERE idannonce='$annonce' AND ('$dateDeb' = datedeb OR '$dateFin' = datefin)") or die ("erreur requete liste enregistrements");
        $contenu = mysql_fetch_array ($req);
     
    	if ($contenu["datedeb"] == $dateDeb && $contenu["datefin"] == $dateFin) 
    { 
    	$update="UPDATE reserv set prix='$prix' WHERE idannonce='$annonce' AND datedeb='$dateDeb' AND datefin='$dateFin'";
     
    	$Result1 = mysql_query($update) or die(mysql_error());
    } else {
    	$sql = 'INSERT INTO reserv (idannonce, etat, datedeb, datefin, date_enreg, prix) VALUES ' . $valeurSql;
     
      	$Result2 = mysql_query($sql) or die(mysql_error());
    	}
     
     
      mysql_query("UPDATE resum SET periode='1' WHERE idannonce ='". $_SESSION['id_annonce'] ."'");
     
      //header ("Location: listeresa.php");
    ?>

  2. #2
    Membre expérimenté Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Par défaut
    Bonjour,

    Ta requete SQL cherche les valeurs dont la date de debut et de fin sont egale a tes variables, donc ton test seras toujour juste (a condition qu'il y ai un resultat).

    Je pencherais plutôt pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
      include ("conf.php");
      $jourf = $_SESSION['jour'];
      $ReqJour = "UPDATE annonce SET jour='$jourf' WHERE idannonce ='".$annonce."'";
      $Resjour = mysql_query($ReqJour) or die(mysql_error());
     
      $libre = $_POST['etat'];
      $value = array();
      $i = 0;
      foreach ($libre as $cle => $valeur)
      {
        if($libre[$cle] == 0 || $libre[$cle] == 1)
        {
          $etat = $libre[$cle];
          $prix = $_POST['prix'][$cle];
    	  $datej = date('Y-m-d');
          $dateDeb = date('Y-m-d', $cle);
          $dateFin = date('Y-m-d', strtotime('+7 days', $cle));
          $value[] = '(\'' .$annonce . '\', ' . $etat . ', \'' . $dateDeb . '\', \'' . $dateFin . '\', \'' .$datej. '\', \'' . $prix . '\')';
          $i ++;
        }
      }
      $valeurSql = implode(', ', $value);
      $req = mysql_query("SELECT * from reserv WHERE idannonce='$annonce' AND ('$dateDeb' = datedeb OR '$dateFin' = datefin)") or die ("erreur requete liste enregistrements");
     
    	if (mysql_num_rows($req)>=1) //On verifit si il y a eu un résultat.
    { 
    	$update="UPDATE reserv set prix='$prix' WHERE idannonce='$annonce' AND datedeb='$dateDeb' AND datefin='$dateFin'";
     
    	$Result1 = mysql_query($update) or die(mysql_error());
    } else {
    	$sql = 'INSERT INTO reserv (idannonce, etat, datedeb, datefin, date_enreg, prix) VALUES ' . $valeurSql;
     
      	$Result2 = mysql_query($sql) or die(mysql_error());
    	}
     
     
      mysql_query("UPDATE resum SET periode='1' WHERE idannonce ='". $_SESSION['id_annonce'] ."'");
     
      //header ("Location: listeresa.php");
    ?>
    Voila, comme ça ça devrais marcher.

    Bonne continuation à toi !

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Par défaut
    Oui mais le truc c'est que le client peut mettre plusieurs dates a la fois donc il se peut que dans sa requete il y ait une partie des dates deja insérée (donc la je lancerais un UPDATE) et une partie de date non insérée (donc la ==> Insert).
    Cela ne doit pas etre TEST ou TEST , cela doit etre TEST ET TEST

  4. #4
    Membre expérimenté Avatar de Korri
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 158
    Par défaut
    Plusieurs dates à la fois ?

    Explique concrètement par rapport au nom des champs please.

    Bonne journée.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 37
    Par défaut
    Si je lis bien ton code, la cle de ta table c'est idannonce?

    Deja de base, a quoi sert le SELECT? tu fais un SELECT et s'il te ramene qqchose, tu fais un UPDATE sinon un INSERT...
    Donc tu fais toujours 2 acces a la base.
    Moi je ferais un INSERT ou un UPDATE et en fonction du resultat (ca s'est bien passe ou pas) je fais l'autre ordre...
    Ca ca marche sous n'importe quel Base de donnees. Et des fois du coup tu n'auras qu'un seul ordre de fait.

    Et sur MySQL tu as un petit ordre tres sympa qui s'appel REPLACE... Qui fait que tu fais qu'un seul acces...

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/05/2008, 16h54
  2. Réponses: 4
    Dernier message: 14/09/2006, 17h36
  3. Dernière entrée dans une base de données
    Par ploxien dans le forum JDBC
    Réponses: 1
    Dernier message: 10/05/2006, 14h30
  4. [MySQL] Suppresion d'une entrée dans une base de donnée.
    Par bullrot dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/03/2006, 19h33
  5. Réponses: 4
    Dernier message: 17/01/2006, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo