Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & SQL-Server
PHP & SQL-Server Forum d'entraide sur SQL-Server avec PHP. Avant de poster -> FAQ SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/12/2010, 15h32   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 19
Points : 3
Points : 3
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 :
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
dekker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h07   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
En gros la logique:

Code :
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
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h40   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 19
Points : 3
Points : 3
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 :
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 :
if($donnees->exist !=0){
Saurais tu d'ou ca vient ?

Merci
dekker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h48   #4
Membre chevronné
 
Inscription : juillet 2003
Messages : 625
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 625
Points : 600
Points : 600
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))
syl2095 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h53   #5
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Code :
if($donnees['exist'] !=0)
comme ca
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2010, 16h55   #6
Invité de passage
 
Inscription : décembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 19
Points : 3
Points : 3
Le else ne sert à rien ..

Merci à vous tous, ca marche !
dekker est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h13.


 
 
 
 
Partenaires

Hébergement Web