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 :

Problème SQL ou PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut Problème SQL ou PHP
    Bonjour, je ne comprend pas pourquoi ma fonction sql delete ne fonctionne pas sauf si je fais un F5 (refresh) peut être que quelqu'un sera m'aider cela fait plusieurs jours que je bloque. Merci par avance.
    c'est une gestion de timbre de france
    Voici mon code :
    ce code permet d'afficher ma liste avec un bouton supprimer:
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    <html>
    <head>
    <title>Consultation de timbre</title>
    </head>
    <body>
    <?
    $search = $_POST['annee'];// année à consulter
    $pays = "france";
    //paramêtre de connection provisoire
    mysql_connect("localhost", "root", "") or exit (mysql_error());//connection au serveur MYSQL
    //connection à la base de donnée continent pour trouver le continent auquel appartient le pays saisie
    mysql_select_db("pays") or exit (mysql_error());
    $sql  = mysql_query("SELECT Pays, continent FROM pays WHERE pays='$pays'")or exit (mysql_error());
    while ($donnee = mysql_fetch_array($sql))
    {
    	$continent = $donnee['continent'];
    	$pays = $donnee['Pays'];
    }
    mysql_close();
    mysql_connect("localhost", "root", "") or exit (mysql_error());//connection au serveur MYSQL
    mysql_select_db("$pays") or exit (mysql_error()); //recherche dans la base de donnée pays
    $sql = mysql_query("SELECT Num_Yvert_et_Tellier, Poste, Cote_Neuve, Cote_Charniere, Cote_Oblitere, pays FROM `$search`")or exit (mysql_error());//lecture de l'année sélectionner
    //requête pour afficher les images
    $affichage = mysql_query("SELECT Num_Yvert_et_Tellier, pays FROM `$search`") or exit (mysql_error());
    //ENREGISTREMENT DANS LA TABLE VARIABLE
    mysql_close();
    mysql_connect("localhost", "root", "") or exit (mysql_error());//connection au serveur MYSQL
    mysql_select_db("variablefrance") or exit (mysql_error()); //recherche dans la base de donnée variable
    mysql_query("INSERT INTO variablefrance (annee, pays) VALUES ('".$search."','".$pays."')") or exit (mysql_error());
    //echo "L insertion s est bien déroulée !";
     
    ?>
     
    <br>
    	<table border align=center>
     
    		<tr>
    			<th>N°Yvert & Tellier</th>
    			<th>Poste</th>
    			<th>Côte Neuve</th>
    			<th>Côte Charnière</th>
    			<th>Côte Oblitéré</th>
    			<th>pays</th>
    			<th>Aperçu</th>
    			<th>Modifier</th>
    			<th>Supprimer</th>
    		</tr>	
    <?
    while ($donnee = mysql_fetch_array($sql) and $result = mysql_fetch_assoc($affichage))
    	{
    	?>	
    		<tr>
    			<form method="post" action="modification.php">
    				<th><?echo $donnee['Num_Yvert_et_Tellier'];?></th>
    				<th><?echo $donnee['Poste'];?></th>
    				<th><?echo $donnee['Cote_Neuve'];?></th>
    				<th><?echo $donnee['Cote_Charniere'];?></th> 
    				<th><?echo $donnee['Cote_Oblitere'];?></th>
    				<th><?echo $donnee['pays'];?></th>
    				<th>
    					<a>
    						<?echo '<a href="apercufrance.php?Num_Yvert_et_Tellier='.$result[Num_Yvert_et_Tellier].'"><img src="apercufrance.php?Num_Yvert_et_Tellier='.$result[Num_Yvert_et_Tellier].'" alt="'.$result[nom].'" title="'.$result[nom].'" height=40 width=40"/></a>';?>
    					</a>
    				</th>
    				<th>
    			</form>
    					<!--PARTIE MODIFICATION D UN TIMBRE-->
    					<form action="modificationfrance.php">
    						<? echo '<a href="modificationfrance.php?modifier= ' .$donnee['Num_Yvert_et_Tellier'] .'">';?>Modifier</a>
    						<?	
    							if (isset($_GET['Num_Yvert_et_Tellier'] ))
    							{
    								echo "ce n'est pas une modification, erreur";
    							}
    						?>
    					</form>
    				</th>
    					<th>
    					<!--PARTIE SUPPRESSION D'UN TIMBRE-->	
    					<a href="confirmation_france.php?modifier=<?php echo $donnee['Num_Yvert_et_Tellier']; ?>"  onclick="return(confirm('Etes-vous sûr de vouloir supprimer cette entrée?'));">Supprimer</a>			
    					</th>
    		</tr>
    	<?
    	}
    	?>
    	</table>
    <p align=center><form action="accueil.html">
    	<input type="submit" value="Accueil"></P>
    </form>
    	<p align=center><form action="recherche.html">
    	<input type="submit" value="retour"></P>
    </form>
    et celui la de supprimer les données.
    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
    <?php
    // On protège la variable "modifier" pour éviter une faille SQL
     
    if (isset($_GET['modifier'])) // Si on demande de supprimer un timbre
    {
    	//connection
    	mysql_connect("localhost", "root", "") or exit (mysql_error()); 
    	mysql_select_db("variablefrance") or exit (mysql_error());
    	$sql  = mysql_query("SELECT max(id_var) FROM variablefrance")or exit (mysql_error());
    	WHILE($var1=mysql_fetch_array($sql))
    	{
    		$idvar_max = $var1[0];//idmax enregistrer dans la table variablefrance
    	}
     
    	$retour = mysql_query("SELECT annee, pays FROM variablefrance WHERE id_var='$idvar_max'") or exit (mysql_error());
    	WHILE($var2 = mysql_fetch_array($retour))
    	{
    		$annee = $var2[0];
    		$pays = $var2[1];
    	}
     
    	mysql_connect("localhost", "root", "") or exit (mysql_error());//connection au serveur MYSQL
    	mysql_select_db("$pays") or exit (mysql_error());//connection à la base de donnée du pays
     
    	$_GET['modifier'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier']));
    	$num_yt = $_GET['modifier'];
    	//$delette = mysql_query ("DELETE FROM $annee WHERE Num_Yvert_et_Tellier = $num_yt") or die(mysql_error());//probleme voir msg ie 
    	$delette = mysql_query ("DELETE FROM `1871` WHERE Num_Yvert_et_Tellier ='".$num_yt."'") or die(mysql_error());//probleme voir msg ie 
    	//$delette=mysql_query ("Delette from `1871`") or die(mysql_error());
    	if ($delette) echo "Sup effectué";
    	else echo "sup impossible";
    	require ("accueil.html");
    	//echo "Suppression effectué avec succès";
    }
    c'est ce code qui ne fonctionne pas.
    j'ai crée la même chose pour la gestion de timbre des pays étranger[ et tout fonctionne très bien la différence c'est le nom des tables dans ma base de données. Merci par avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ne fais pas ton affichage avant ton DELETE.

    Par ailleurs pour afficher le max id tu n'as pas besoin de 2 requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT annee, pays FROM variablefrance ORDER BY id DESC LIMIT 1
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut Problème SQL ou PHP re
    Bonjour sabotage,

    Merci pour ta réponse, je ne vois pas trop comment retrouver les variables $pays et $année sans faire un affichage.

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut

    Citation Envoyé par francois50 Voir le message
    je ne vois pas trop comment retrouver les variables $pays et $année sans faire un affichage.
    Tu mets la requêtes DELETE avant la requête SELECT. C'est à dire au début du bloc if (isset($_GET['modifier']).

    A+.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut re
    Salut,

    Merci pour ta réponse, avec ton idées le delete fonctionne que lorsque j'utilise
    un delete pour vider la table complètement comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $delette=mysql_query ("Delete from `1871`");
    mais moi il me faut une condition comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$delette = mysql_query ("DELETE FROM `1871` WHERE Num_Yvert_et_Tellier ='".$num_yt."'") or die(mysql_error());
    .
    Je suis pas sur de ma syntaxe pour le delete. Quant pense-tu ?

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re,

    1 - Ne commence pas un nom de table avec un chiffre.
    2 - Fait echo de le requête et lance le dans phpMyadmin si ça fonctionne.

    A+.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 5
    Par défaut Probleme SQL ou PHP
    Salut,

    Problème résolut sans doute un oublie de variable de ma part. Merci pour vos réponse.
    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
    // On protège la variable "modifier" pour éviter une faille SQL
    if (isset($_GET['modifier'])) // Si on demande de supprimer un timbre
    {
    	//connection
    	mysql_connect("localhost", "root", "") or exit (mysql_error());//connection au serveur MYSQL
    	//connection à la base de donnée pays pour trouver le continent auquel appartient le pays saisie
    	mysql_select_db("variable") or exit (mysql_error());
    	$sql  = mysql_query("SELECT max(id_var) FROM variable")or exit (mysql_error());
    	WHILE($var1=mysql_fetch_array($sql))
    		{
    			$idvar_max = $var1[0];//continent enregistrer dans la table variable
    		}
    		$sql2=mysql_query("SELECT continent FROM VARIABLE WHERE id_var='$idvar_max'")or exit (mysql_error());
    		WHILE($var1=mysql_fetch_array($sql2))
    		{
    			$continent = $var1[0];//continent enregistrer dans la table variable
    		}
     
    		$result = mysql_num_rows($sql);
    		IF($result == 1)
    		{
    			$sql2=mysql_query("SELECT pays FROM VARIABLE WHERE continent='$continent'")or exit (mysql_error());
    			WHILE($var1=mysql_fetch_array($sql2))
    			{
    				$pays = $var1[0];//pays enregistrer dans la table variable
    			}
    		}		
     
    	mysql_close();
    	mysql_connect("localhost", "root", "") or exit (mysql_error());//connection au serveur MYSQL
    	//connection à la base de donnée pays pour trouver le continent auquel appartient le pays saisie
    	mysql_select_db("$continent") or exit (mysql_error());
    	$_GET['modifier'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier']));
    	$id_timbre = $_GET['modifier'];
    	// On récupère les infos du timbre correspondant
    	$retour = mysql_query("SELECT id_timbre FROM `$pays` WHERE id_timbre=".$id_timbre."") or exit (mysql_error());
    	$donnees = mysql_fetch_array($retour);
    	// On place toutes les variables dans des variables simples
    	$id_timbre = stripslashes($donnees['id_timbre']);
    	$delete=mysql_query ("Delete from `$pays` where id_timbre='$id_timbre'") or die(mysql_error());
    	echo "Suppression effectuée avec succès";
    	require("recherche.php");
    Pour infos.

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

Discussions similaires

  1. [ODBC] PHP et access problème SQL
    Par dr_feelgood dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/10/2009, 17h45
  2. [SQL-Server] Problème d'accents sur requête SQL, de php à SQLServer
    Par pontos dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/04/2007, 14h58
  3. Problème de sessions PHP/SQL
    Par Mousk dans le forum Langage
    Réponses: 6
    Dernier message: 11/08/2006, 15h02
  4. [MySQL] Problème affichage tableau PHP avec données SQL
    Par akalaan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/04/2006, 14h34
  5. [MySQL] Problème requete SQL dans PHP
    Par dl_jarod dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/04/2006, 14h40

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