Requêtes SQL qui ne marche que partiellement

Fermé
Nicobas - 9 oct. 2011 à 17:37
 hamtotoro - 10 oct. 2011 à 03:02
Salut à tous,
Voici une page d'un site que je suis en train de faire :

<?php

if (isset($_POST['identifiant_connect'])) //On verifie si le formulaire a déja ete envoyé
	{	
	$_POST['identifiant_connect'] = htmlspecialchars($_POST['identifiant_connect']);
	$_POST['mot_de_passe_connect'] = htmlspecialchars($_POST['mot_de_passe_connect']);
	$_POST['serveur_connect'] = htmlspecialchars($_POST['serveur_connect']);

	$result = $bdd->prepare('SELECT COUNT(*) AS nbr FROM compte WHERE identifiant = :identifiant AND mot_de_passe = :mot_de_passe');
	$result->execute(array(
		'identifiant' => $_POST['identifiant_connect'], 
		'mot_de_passe' => $_POST['mot_de_passe_connect']
		));
	$result = $result->fetch();
	
	echo $result['nbr'] ;
	if ($result['nbr'] != 0) // On vérifi si l'identifiant et le mot de passe sont bon
	{
		$result = $bdd->prepare('SELECT * FROM compte WHERE identifiant = :identifiant ');
		$result->execute(array(
			'identifiant' => $_POST['identifiant_connect']
			));
		$result = $result->fetch();
				
		if ($result['valide']) //Si le compte a été activé
		{
				
			//Déclaration des variables
			$id = $result['id'];
			$identifiant = $result['identifiant'];
			$mot_de_passe = $result['mot_de_passe'];
			$mail = $result['mail'];
			$serveur_nom = $_POST['serveur_connect'];
			$ip_creat = $result['ip_creat'];
			$timestamp_creat = $result['timestamp_creat'];
			$ip_der_connect = $result['ip_der_connect'];
			$timestamp_der_connect = $result['timestamp_der_connect'];
			$droit = $result['droit'];
			
			//Actualisation des données de dernière connexion pour le serveur d'acceuil
			$mysql = $bdd->prepare('UPDATE compte SET ip_der_connect = :ip, timestamp_der_connect = :time WHERE id = :id');
			$mysql->execute(array(
				'ip' => $ip,
				'time' => $time,
				'id' => $result['id']
				));
								
			//CONNEXION AU SERVEUR DE JEU
			
			$result = $bdd->prepare('SELECT * FROM serv_corres WHERE nom = :nom ');
			$result->execute(array(
				'nom' => $_POST['serveur_connect']
				));
			$result = $result->fetch();
			
			//Déclaration de variables d'info serveur
			$serveur_num = $result['num_serv'];
			$serveur_url = $result['url'];
			$serveur_hote_mysql = $result['hote_mysql'];
					
			try
			{
				$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
				$bdd = new PDO('mysql:host=' . $serveur_hote_mysql . ';dbname=' . $base_mysql_jeu, $loging_mysql, $password_mysql);
			}
			catch (Exception $e)
			{
				   die('Erreur : ' . $e->getMessage());
			}
			
			$result = $bdd->prepare('SELECT COUNT(*) AS nbr FROM compte WHERE id_compte = :id ');
			$result->execute(array(
				'id' => $id
				));
			$result = $result->fetch();
				
			//Déclaration de variables
			$ip_der_connect_serv = 0;
			$timestamp_der_connect_serv = 0;
				
			//Code connexion aléatoire				

			$characts = 'abcdefghijklmnopqrstuvwxyz';
			$characts .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';	
			$characts .= '1234567890'; 
			$code_co = NULL; 

			for($i=0;$i < 20;$i++)
			{ 
				$code_co .= substr($characts,rand()%(strlen($characts)),1); 
			} 
		
			if ($result['nbr'] != 0) //On vérifi si le compte est deja sur le serveur
			{
				//Actualisation du code de connexion aléatoire
				$mysql = $bdd->prepare('UPDATE compte SET code_co = :code_co, timestamp_co = :time_co WHERE id_compte = :id');
				$mysql->execute(array(
					'code_co' => $code_co,
					'time_co' => $time,
					'id' => $result['id']
					));
				
			    header('Location: ' . $serveur_url . 'index.php?id_co=' . $id . '&code_co=' . $code_co . '&timestamp_co=' . $time );//Redirection vers la page de jeu apres connexion
			}
			else
			{
				//Copie des informations du compte vers le serveur
				$mysql = $bdd->prepare('INSERT INTO compte VALUES 
				( :id, :identifiant, :mdp, :mail, :ip_creat, :time_creat, :ip_der_connect, :time_der_connect, :ip_der_connect_serv, :time_der_connect_serv, :droits, :code_co, :time_co )');
				$mysql->execute(array(
					'id' => $id,
					'identifiant' => $identifiant,
					'mdp' => $mot_de_passe,
					'mail' => $mail,
					'ip_creat' => $ip_creat,
					'time_creat' => $timestamp_creat,
					'ip_der_connect' => $ip_der_connect,
					'time_der_connect' => $timestamp_der_connect,
					'ip_der_connect_serv' => $ip_der_connect_serv,
					'time_der_connect_serv' => $timestamp_der_connect_serv,
					'droits' => $droit,
					'code_co' => $code_co,
					'time_co' => $time
					));
										
				//Création d'une entrée dans la table des info/ressources
				$mysql = $bdd->prepare('INSERT INTO jeu_info_perso VALUES
				( :id, :sy_exp, :argent, :revenu, :pp, :pt, :ph, :pd, :mlibre )');
				$mysql->execute(array(
					'id' => $id,
					'argent' => 0,
                    'sy_exp' => NULL,
					'revenu' => 0,
					'pp' => 0,
					'pt' => 0,
					'ph' => 0,
					'pd' => 0,
					'mlibre' => 0
					));
					
				//Création d'une entrée dans la table des composants
				$mysql = $bdd->prepare('INSERT INTO jeu_up VALUES
					( :id, :modif, 
					:niv_h_cmere, :time_h_cmere, :trep_h_cmere, 
					:niv_h_ddure, :time_h_ddure, :trep_h_ddure, 
					:niv_h_processeur, :time_h_processeur, :trep_h_processeur, 
					:niv_h_mvive, :time_h_mvive, :trep_h_mvive, 
					:niv_h_cgraph, :time_h_cgraph, :trep_h_cgraph, 
					:niv_h_creseau, :time_h_creseau, :trep_h_creseau, 
					:niv_s_anti, :time_s_anti, :trep_s_anti,  
					:niv_s_prog, :time_s_prog, :trep_s_prog,  
					:niv_s_travail, :time_s_travail, :trep_s_travail,  
					:niv_s_hack, :time_s_hack, :trep_s_hack,  
					:niv_s_internet, :time_s_internet, :trep_s_internet, 
					:niv_m_travail, :time_m_travail,  
					:niv_m_hack, :time_m_hack,
					:niv_m_rep, :time_m_rep,
					)');
				$mysql->execute(array(
					'id' => $id,
					'modif' => 0,
					'niv_h_cmere' => 0,
					'time_h_cmere' => 0,
					'trep_h_cmere' => 0,
					'niv_h_ddure' => 0,
					'time_h_ddure' => 0,
					'trep_h_ddure' => 0,
					'niv_h_processeur' => 0,
					'time_h_processeur' => 0,
					'trep_h_processeur' => 0,
					'niv_h_mvive' => 0,
					'time_h_mvive' => 0,
					'trep_h_mvive' => 0,
					'niv_h_cgraph' => 0,
					'time_h_cgraph' => 0,
					'trep_h_cgraph' => 0,
					'niv_h_creseau' => 0,
					'time_h_creseau' => 0,
					'trep_h_creseau' => 0,
					'niv_s_anti' => 0,
					'time_s_anti' => 0,
					'trep_s_anti' => 0,
					'niv_s_prog' => 0,
					'time_s_prog' => 0,
					'trep_s_prog' => 0,
					'niv_s_travail' => 0,
					'time_s_travail' => 0,
					'trep_s_travail' => 0,
					'niv_s_hack' => 0,
					'time_s_hack' => 0,
					'trep_s_hack' => 0,
					'niv_s_internet' => 0,
					'time_s_internet' => 0,
					'trep_s_internet' => 0,
					'niv_m_travail' => 0,
					'time_m_travail' => 0,
					'niv_m_hack' => 0,
					'time_m_hack' => 0,
					'niv_m_rep' => 0,
					'time_m_rep' => 0,
					));
				header('Location: ' . $serveur_url . 'index.php?id_co=' . $id . '&code_co=' . $code_co . '&timestamp_co=' . $time );//Redirection vers la page de jeu apres connexion
			}
				
		}
		else
		{
			?>
			<p>Le compte n'a pas encore été activé.<br /><br />
			<a href="index.php">Retour à la page d'acceuil</a></p>
			<?php
		}
	}
	else
	{
		?>
		<p class="text_pb_champ">L'identifiant et/ou le mot de passe est faux.<br /><br />
		<a href="index.php">Retour à la page d'acceuil</a></p>
		<?php
	}
		
}
else
{
	?>
	<form class="connexion" method="post" action="index.php" >
	   <p>
		<label for="identifiant_connect">Identifiant :</label> <input type="text" name="identifiant_connect" id="identifiant_connect" /><br />
		<label for="mot_de_passe_connect">Mot de passe :</label> <input type="password" name="mot_de_passe_connect" id="mot_de_passe_connect" /><br />
           <label for="serveur_connect">Serveur : </label>
           <select name="serveur_connect" id="serveur_connect" >
             <option value="Serveur Beta" <?php echo choix_deroul('Serveur Beta', $post_choix); ?> >Serveur Beta-test</option>			
           </select> <br /><br />
		   
		<input type="submit" value="Connexion !!!" />
	   </p>
	</form>
       
	</body>
	</html>

	<?php
}

?>


Mon problème c'est que quand le code s'exécute,il créé une entrée dans la table "compte" avec les bonnes infos mai il ne met rien dans les tables "jeu_info_perso" et "jeu_up"

Je ne comprend pas.
Merci d'avance

A voir également:

1 réponse

Pour ajouter une nouvelle donnée dans une table: INSERT, pour modifier une ligne ou donnée sur la ligne de données UPDATE.
J'ai l'impression que vous confondez SQL et PHP. PHP c'est la passerelle entre la base de données et l'utilisateur et SQL ce sont les modifications de la table.

S'il s'agit d'un problème SQL indiquez essayez vos requêtes sur la table directement (avec mysqlmyAdmin par exemple), si c'est un problème qui vient du PHP il vous faut regarder du côté de votre logique algorithmique.
0