Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 14/07/2006, 12h34   #1
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
Par défaut [SQL] Problème requêtes SQL

j'essaye de réaliser une requête update sur deux tables: en faite j ai deux tables: une bien et une type qui contiennent chacun le champ bientype:
j'aimerai pouvoir supprimer dans la table bien tout les champs qui contiennent le bientype proposés et dans la table bientype le champ bientype et typedescription, je suis peut etre pas clair, je vous montre les deux tables:

table bien: bienid biennom bientype biendescription bienprix bienimage bienvideo bienville biendatecrea

table type: bientype typedescription


Code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
$typedescription=$_POST['typedescription'];
$bientype=$_POST['bientype'];
include("misc.inc");
$connection = mysql_connect($host,$user,$password) or die ("connexion au serveur impossible");
$db = mysql_select_db($database,$connection) or die ("sélection de la base de donnée impossible");
$sql = "UPDATE type SET bientype='".$bientype."',typedescription='".$typedescription."' WHERE  bientype='".$_POST['bientype']."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$sql2 = "UPDATE bien SET bientype='".$bientype."' WHERE bientype='".$_POST['bientype']."'";
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
?>
<div align="center"><br>
<br><br><br><br><br><br>
<strong><font face="Arial, Helvetica, sans-serif">Modification de <em><? echo $bientype; ?></em>
effectuée.</font></strong><br /><a href="index.html">retour menu </a><br /><a href="mise.php">modifier une autre catégorie </a>
 
</body>
</html>
mais le résultat n'est pas celui escompté car le champ typedescription se met bien a jour quand je touche pas a bientype mais dès que je modifie le champ bientype, la requête me met pas de message d erreur mais elle ne fait pas le changement sur bientype.
voyez vous de quoi cela pourrait venir ?
merci d'avance
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2006, 16h33   #2
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Je comprends pas bien parce que au début tu fais:

Code :
$bientype=$_POST['bientype'];
Ensuite dans ta requête update:
Code :
$sql2 = "UPDATE bien SET bientype='".$bientype."' WHERE bientype='".$_POST['bientype']."'";
En gros tu modifies par la même valeur ?
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2006, 17h55   #3
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
en faite,
Code :
$bientype=$_POST['bientype'];
correspond à la valeur qui est modifié dans le formulaire et qui envoye sur cette page.
c est alors que par la suite j'aimerai changer l'ancienne valeur par la nouvelle qui doit etre contenue dans $bientype.
mais ca ne fonctionne.
je pense qu en faite t as compris mon erreur, je dois surement remettre la même valeur dans ma requête.
mais j ai essayé plusieurs essaies sans succès!! je m emmele complètement entre l'ancienne valeur et la nouvelle.
en gros je dois dire de remplacer l'ancienne valeur par la valeur $_POST['bientype'].
si je fais ca
Code :
$sql2 = "UPDATE bien SET bientype='".$_POST['bientype']."'";
il va écraser tout les autres bientype autres que celui d avant??
c est quand même balaise comment je m embrouille
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2006, 19h53   #4
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
A un moment précédent (à l'affichage du formulaire par exemple), tu récupères l'ancien nom que tu mets dans un champs hidden.

Ensuite dans la requête, tu fais:
Code :
$sql2 = "UPDATE bien SET bientype='".$_POST['bientype']."' WHERE bientype='".$_POST['le_champ_hidden']."'";
(Soit dit en passant, il faudrait sécuriser tes updates (addslashes(), mysql_real_escape())...)
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2006, 20h38   #5
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
merci beaucoup !!
c est résolu !!
ca marche super bien!!!
un grand merci !!!!!!!!!!!!!!!!!!!!!!!!!
je suis super content ma gestion immobilière avance, merci anduriel
ca fais bien deux jours que je trifouillai sans grand succès!!
j'avais une dernière question qui me travaille aussi j'ai fais une pagination du catalogue en utilisant un tutoriel.
quand je choisie ma catégorie sur ma première page mes enregistrements s'affichent mais sur la deuxième j ai pas la suite, j ai essayé de passer en get la valeur echo $ choix; mais ca me fais une page blanche dans les pages suivantes.
en faite je pense avoir cerner le problème, c est que la base doit pas savoir ou elle en est dans les enregistrements, il doit falloir que je lui envoye dans la deuxieme page la requete qui lui dit par exemple de commencer a partir du troisième enregistrements?
je me trompe ??
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
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>catalogue des biens</title>
</head>

<body>
<? include("misc.inc");


$choix=$_GET['interet'];// valeur recupere du formulaire
$connection = mysql_connect($host,$user,$password) or die ("connexion au serveur impossible");
$db = mysql_select_db($database,$connection) or die ("sélection de la base de donnée impossible");
$query = "select * from bien WHERE bientype='".$choix."'";
$result = mysql_query($query) or die ("exécution de la sélection impossible");
$Nmax = 2; // nombre par page
$Ncur = 0; // n° de la fiche courante
$Ndeb=@$_GET["num"];

//afficher les résultats dans un tableau
echo "<table cellspacing='10' border='0' cellpadding='0' width='100%'>";
echo "<tr><td colspan='5' align='right'>
<i>cliquez sur une image pour l'afficher en grand</i><br><hr></td></tr>\n";
while (($ligne = mysql_fetch_array($result,MYSQL_ASSOC) ) &&($Ncur<$Nmax))
{    if($Ncur>=$Ndeb) {
$f_prix =  number_format($ligne['bienprix'],2);

// affiche une ligne pour chaque bien
echo "<tr>\n";
echo "<td>{$ligne['bienid']}</td>\n";
$nombien = stripslashes($ligne['biennom']);
echo "<td><font size='+1'><b>$nombien</b></font></td>\n";
echo "<td>{$ligne['biendescription']}</td>\n";
echo "<td><a href='image/{$ligne['bienimage']}' border='0'>
<img src='image/{$ligne['bienimage']}' border='0' width='100' height='80'></a></td>\n";
echo "<td><a href='video/{$ligne['bienvideo']}' border='0'>
vidéo</a></td>\n";

echo "<td>{$ligne['bienville']}</td>\n";
echo "<td>{$ligne['biendatecrea']}</td>\n";
echo "<td align='center'>$f_prix €</td>\n</tr>\n";
echo "<tr><td colspan='5'><hr></td></tr>\n";
}

$Ncur++;}
echo "</table>\n";
echo "<div align='center'><a href='catalogue.php'><b>Pour en voir d'autres</b></a></div>";
?>
<table cellpadding=3><tr>
<? // Navigation
// Des fiches avant ?
if($Ndeb > 0) { ?>
   <td valign=top>
      <A href="?num=<? echo $Ndeb-$Nmax; ?>&interet=<? echo $choix; ?>">
         Retour</A>
   </td>
<? } ?>
   <td>   
<? // N° des pages
$Npag = ceil(mysql_numrows($result)/$Nmax);
for($i = 1;$i<=$Npag;$i++) {
   // Page courante ?
   if($Ndeb == ($i-1)*$Nmax) { ?>
      Page <? echo $i; ?>
   <? } else { ?>
      <A href="?num=<? echo ($i-1)*$Nmax; ?>&interet=<? echo $choix; ?>"
      >&nbsp;<? echo $i; ?>&nbsp;</A>
   <? }
} ?>
   </td>   
<? // Des fiches après ?
if($ligne) { ?>
   <td valign=top>
      <A href="?num=<? echo $Ncur;?>&interet=<? echo $choix; ?>">Suite</A>
   </td>
<? } ?>
</tr></table>

</BODY></HTML>
<? mysql_close(); ?>
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2006, 21h31   #6
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Citation:
il doit falloir que je lui envoye dans la deuxieme page la requete qui lui dit par exemple de commencer a partir du troisième enregistrements?
Oui c'est exactement çà... d'ailleurs c'est assez énervant à faire étant donné que le listage dans la base commence a 0 et non à 1... (enfin pour moi )
Anduriel 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 11h07.


 
 
 
 
Partenaires

Hébergement Web