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

PHP & Base de données Discussion :

Existence d'un champ dans une base sqlserver [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Points : 16
    Points
    16
    Par défaut Existence d'un champ dans une base sqlserver
    Bonjour,
    malgré les nombreux tutos et pages de forum traitant de mon pb, je n'arrive pas à le résoudre.

    Je cherche simplement à vérifier qu'une entrée existe dans une base sqlserver 2005, si elle n'existe pas, je la crée, si elle existe je la modifie.

    Alors voila j'ai beau essayer dans tous les sens mais a chaque fois, soit il m'en crée une nouvelle tout le temps, soit il ne fait rien.

    La en l'occurence il m'en crée une nouvelle tout le temps.
    Voici mon code :
    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
    44
    45
    46
    47
    48
    49
     
    //Partie Instant_Table: 
            // On verifie si le serveur existe deja 
            $return1= NULL; 
     
            $query = "    SELECT COUNT(*) FROM Instant_Table WHERE (server_id = '$server')"; 
     
            if(isset($query)){ 
                try { 
                    $return1 = $bdd->query($query); 
                } catch(PDOException $pdoE) { 
                    echo '<br>ERREUR PDO:<br>'.$pdoE -> getMessage(); 
                } catch(Exception $e) { 
                    echo '<br>AUTRE ERREUR:<br>'.$e -> getMessage(); 
                } 
            }else{}; 
     
                while ($donnees = $return1->fetch()) {         
                    echo 'la valeur de return1 est :'.mssql_num_rows($return1).'!</br>'; 
                }; 
     
     
     
            if(mssql_num_rows($return1) > 0){ 
    //si le serveur y est. 
            // On modifie seulement les champs Status, cat, comingback et type de pause.     
                $req = $bdd->prepare("UPDATE Instant_Table SET server_id = :server_id, cat = :cat, status = :status, paused_time =   aused_time WHERE server_id = '$server'")or die(print_r($req->errorInfo())); 
                $req->execute(array( 
                    'server_id' => $server, 
                    'cat' => $cat, 
                    'status' => $statut, 
                    'paused_time' => $duree, 
                    // 'coming_back' => $back, 
                ))or die(print_r($req->errorInfo())); 
                echo "le serveur est dans la liste : on a modifié un champ"; 
            } 
     
            else{         
            // Si le server n'est pas dans la liste, On ajoute une entrée dans la table Instant_Table 
                $req = $bdd->prepare('INSERT INTO Instant_Table(server_id, cat, status, paused_time) VALUES(:server_id, :cat, :status,   aused_time)')or die(print_r($req->errorInfo())); 
                $req->execute(array( 
                    'server_id' => $server, 
                    'cat' => $cat, 
                    'status' => $statut, 
                    'paused_time' => $duree, 
                    //'coming_back' => $back, 
                ))or die(print_r($req->errorInfo())); 
                echo "le serveur n'est pas dans la liste : on a crée une nouveau champ </br>";             
            };
    Merci de prendre la peine de m'aider smile

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    En gros la logique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            $query = "    SELECT COUNT(*) as exist FROM Instant_Table WHERE (server_id = '$server')"; 
            $return1 = $bdd->query($query); 
    		$donnees = $return1->fetch()  ;    
    		if($donnees->exist !=0){
    		// tu modifies
             }
             else {
             //tu inseres
    	}
    Stay in Bed .. Save Energy

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Voici ce que me renvoi mon navigateur :

    PHP Parse error: syntax error, unexpected T_IF in C:\www\Unmanage\unmanageFct.php on line 158

    Je te renvoi le code modifié selon tes conseils :

    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
    44
    //Partie Instant_Table:
    		// On verifie si le serveur existe deja
    		$return1= NULL;
     
    		$query = "	SELECT COUNT(*) as exist FROM Instant_Table WHERE (server_id = '$server')";
     
    		if(isset($query)){
    			try {
    				$return1 = $bdd->query($query);
    			} catch(PDOException $pdoE) {
    				echo '<br>ERREUR PDO:<br>'.$pdoE -> getMessage();
    			} catch(Exception $e) {
    				echo '<br>AUTRE ERREUR:<br>'.$e -> getMessage();
    			}
    		}else{};
     
    		$donnees = $return1->fetch()
     
    		if($donnees->exist !=0){
    		//si le serveur y est.
    		// On modifie seulement les champs Status, cat, comingback et type de pause.
    			$req = $bdd->prepare("UPDATE Instant_Table SET server_id = :server_id, cat = :cat, status = :status, paused_time = :paused_time WHERE server_id = '$server'")or die(print_r($req->errorInfo()));
    			$req->execute(array(
    				'server_id' => $server,
    				'cat' => $cat,
    				'status' => $statut,
    				'paused_time' => $duree,
    				// 'coming_back' => $back,
    			))or die(print_r($req->errorInfo()));
    			echo "le serveur est dans la liste : on a modifié un champ";
    		}
     
    		else{		
    		// Si le server n'est pas dans la liste, On ajoute une entrée dans la table Instant_Table
    			$req = $bdd->prepare('INSERT INTO Instant_Table(server_id, cat, status, paused_time) VALUES(:server_id, :cat, :status, :paused_time)')or die(print_r($req->errorInfo()));
    			$req->execute(array(
    				'server_id' => $server,
    				'cat' => $cat,
    				'status' => $statut,
    				'paused_time' => $duree,
    				//'coming_back' => $back,
    			))or die(print_r($req->errorInfo()));
    			echo "le serveur n'est pas dans la liste : on a crée une nouveau champ </br>";			
    		};
    La ligne 158 est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($donnees->exist !=0){
    Saurais tu d'ou ca vient ?

    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    il te manque un ;

    $donnees = $return1->fetch() ici

    et le else{}; sert à quoi ?
    Le savoir est utile que s'il est partagé par tous.
    /(bb|[^b]{2})/
    !sleep() ? array((string))

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($donnees['exist'] !=0)
    comme ca
    Stay in Bed .. Save Energy

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Le else ne sert à rien ..

    Merci à vous tous, ca marche !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche d'un champ dans une base
    Par vanou dans le forum ASP
    Réponses: 3
    Dernier message: 24/05/2006, 10h31
  2. Tester l'existence d'un champ dans une requête
    Par Reidid dans le forum Access
    Réponses: 3
    Dernier message: 23/01/2006, 22h02
  3. Tester l'existence d'un champ dans une table
    Par Oluha dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/09/2005, 11h19
  4. position du champs dans une base de donnée
    Par eric205 dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/04/2005, 09h22
  5. ASp - recherche d'un champs dans une base.
    Par kmayoyota dans le forum ASP
    Réponses: 5
    Dernier message: 03/12/2004, 15h03

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