Problème de récupération de variable pour une condition WHERE
thx06
Messages postés
7
Statut
Membre
-
thx06 Messages postés 7 Statut Membre -
thx06 Messages postés 7 Statut Membre -
Bonjour à tous et à toute.
Je vous contacte car je suis vraiment désespéré et j'ai besoins d'aide car il s'agit d'un projet pour le bac et la je sèche totalement je l'avoue.
Pour commencer il faut savoir que je suis pas très fort en Php/MySQL mais j'essaie de me débrouiller.
Le projet est simple mon équipe fait un intranet pour une entreprise pour facilité le travail des agents afin qu'ils puissent gérer leur abonné avec leur carte d'abonné et les abonnements d'abonné j'espère que je suis claire jusque la.
Il est certain que j'ai donc fait une base de donné qui comporte tous cela ainsi que des requêtes.
Je vous explique la situation: je souhaite que l'agent puisse modifier les informations d'un abonné (on va prendre en exemple le nom) que l'on a récupéré dans des formulaires (donc le nom de l'abonné et dans un champ dans lequel je vais inscrire le nouveau nom et cliquer sur un submit). La récupération des informations ce fait à l'aide d'un moteur de recherche ou l'agent rentre seulement le Num_Abonné qui est une clé primaire et clique sur valider et qui les affiches dans les champs de modification. Une fois que je clique sur modifier (qui est un submit de mon formulaire pour le changement du nom) j'effectue une requête sql qui est un UPDATE.
Voici le code du moteur de recherche:
Je vous met également la page function.php qui va avec:
Et maintenant je vous met la page pour modifier juste le nom de l'abonné (donc la page modif1.php):
Or le problème est le suivant: la condition WHERE ne me récupère pas le contenu de la variable $search qui est le champ de ma recherche et de ce fait ma requête ne marche pas alors que si j'écris dans la condition WHERE directement Num_Abonne=1 alors la il me changera le nom de l'abonné 1.
Donc pour récapituler le tous il faut que j'arrive a récupérer le Num_Abonné que je rentre dans mon champ recherche afin que l'UPDATE modifie le nom de l'abonné qui aura pour clé primaire le Num_Abonné que j'aurais rentré pour l'afficher.
Soyer indulgent s'il vous plait car il est compliqué d'expliquer ce problème quand on ne fait pas partit du projet, cependant j'espère que vous aviez eu le courage de me lire jusqu'à la fin et de pouvoir être en mesure de me répondre merci d'avance...
Je vous contacte car je suis vraiment désespéré et j'ai besoins d'aide car il s'agit d'un projet pour le bac et la je sèche totalement je l'avoue.
Pour commencer il faut savoir que je suis pas très fort en Php/MySQL mais j'essaie de me débrouiller.
Le projet est simple mon équipe fait un intranet pour une entreprise pour facilité le travail des agents afin qu'ils puissent gérer leur abonné avec leur carte d'abonné et les abonnements d'abonné j'espère que je suis claire jusque la.
Il est certain que j'ai donc fait une base de donné qui comporte tous cela ainsi que des requêtes.
Je vous explique la situation: je souhaite que l'agent puisse modifier les informations d'un abonné (on va prendre en exemple le nom) que l'on a récupéré dans des formulaires (donc le nom de l'abonné et dans un champ dans lequel je vais inscrire le nouveau nom et cliquer sur un submit). La récupération des informations ce fait à l'aide d'un moteur de recherche ou l'agent rentre seulement le Num_Abonné qui est une clé primaire et clique sur valider et qui les affiches dans les champs de modification. Une fois que je clique sur modifier (qui est un submit de mon formulaire pour le changement du nom) j'effectue une requête sql qui est un UPDATE.
Voici le code du moteur de recherche:
<!DOCTYPE html> <meta charset="utf-8" >
<?php
include("function.php");
?>
<html>
<body>
<br>
<form method="post">
<input type="text" name="search" placeholder= Recherche...>
<input type="submit" name="submit" value="Valider">
</form>
<?php
if(isset($_POST['submit']))
{
$search= mysql_real_escape_string(htmlspecialchars(trim($_POST['search'])));
if(empty($search))
{
echo "Veuillez remplir ce champs";
}
else
{
results($search);
}
}
?>
</body>
</html>
Je vous met également la page function.php qui va avec:
<!DOCTYPE html> <meta charset="utf-8" >
<?php
include("connexionMySQLabonne.php");
function results($search)
{
$sql= mysql_query("SELECT * FROM abonne INNER JOIN carte ON
(Num_Abonne = Abonne_Num ) INNER JOIN abonnement ON
( Num_Abonnement = Abonnement_Num )WHERE Num_Abonne='$search' ");
if($sql)
{
$data = mysql_fetch_assoc($sql)
?>
<html>
<body>
</br></br></br>
<center><table width="1325px" border="8" cellspacing="6" ></center>
<tr>
<th>Numéro d'Abonné</th>
<th>Nom d'Abonné</th>
<th>Prénom d'Abonné</th>
<th>Utilisateur d'Abonné</th>
<th>Civilité de l'Abonné</th>
<th>Numéro de carte de l'Abonné</th>
<th>Type de l'Abonnement</th>
</tr>
<tr>
<form method="post" action="modif.php">
<td><center><input type="text" name="Num_Abonne"
value=<?php echo $data['Num_Abonne']?> />
<input type="submit" name="modif"value="Modifie/</center> </td>
</form>
<form method="post" action="modif1.php">
<td><center><input type="text" name="nom"
value= <?php echo $data['nom']?> />
<input type="submit" name="modif1" value="Modifier" /></center></td>
</form>
<form method="post" action="modif2.php">
<td><center><input type="text" name="prenom"
value= <?php echo $data['prenom']?> />
<input type="submit" value="Modifier" /></center></td>
</form>
<form method="post" action="modif3.php">
<td><center><input type="text" name="utilisateur"
value= <?php echo $data['utilisateur']?> />
<input type="submit" value="Modifier" /></center></td>
</form>
<form method="post" action="modif4.php">
<td><center><input type="text" name="civilite"
value= <?php echo $data['civilite']?> />
<input type="submit" value="Modifier" /></center></td>
</form>
<form method="post" action="modif5.php">
<td><center><input type="text" name="civilite"
value= <?php echo $data['Num_Carte']?> />
<input type="submit" value="Modifier" /></center></td>
</form>
<form method="post" action="modif6.php">
<td><center><input type="text" name="Abonnement_Num"
value= <?php echo $data['Abonnement_Num']?> />
<input type="submit" value="Modifier" /></center>
</form>
</tr>
</table>
<?php
}
else
{
echo "Pas de résultat trouvé...";
}
}
?>
</body>
</html>
Et maintenant je vous met la page pour modifier juste le nom de l'abonné (donc la page modif1.php):
<!DOCTYPE html> <meta charset="utf-8" >
<?php session_start();
include("connexionMySQLabonne.php");
$nom = $_POST['nom'];
$search = $_POST['search'];
$sql = mysql_query("UPDATE abonne SET nom = '$nom'
WHERE Num_Abonne= '$search'");
header('Location: Recherche.php');?>
Or le problème est le suivant: la condition WHERE ne me récupère pas le contenu de la variable $search qui est le champ de ma recherche et de ce fait ma requête ne marche pas alors que si j'écris dans la condition WHERE directement Num_Abonne=1 alors la il me changera le nom de l'abonné 1.
Donc pour récapituler le tous il faut que j'arrive a récupérer le Num_Abonné que je rentre dans mon champ recherche afin que l'UPDATE modifie le nom de l'abonné qui aura pour clé primaire le Num_Abonné que j'aurais rentré pour l'afficher.
Soyer indulgent s'il vous plait car il est compliqué d'expliquer ce problème quand on ne fait pas partit du projet, cependant j'espère que vous aviez eu le courage de me lire jusqu'à la fin et de pouvoir être en mesure de me répondre merci d'avance...
A voir également:
- Problème de récupération de variable pour une condition WHERE
- Récupération de déchets - Guide
- Excel cellule couleur si condition texte - Guide
- Convertisseur récupération de texte - Guide
- Where is it - Télécharger - Gestion de fichiers
- Comment recuperer une video sur youtube - Guide
13 réponses
Bonjour
Cette ligne :
Il y a plusieurs manières de s'en sortir, par exemple :
- tu ajoutes un champ 'hidden' qui contient 'search' dans chacun de tes formulaires
- ou, beaucoup mieux selon moi : tu enregistres la valeur de search dans une variable de session, et tu la récupères ensuite avec $_SESSION['search'] et non plus $_POST['search']
Cette ligne :
$search = $_POST['search'];ne peut pas marcher car il n'y a pas de champ qui s'appelle 'search' dans ton formulaire : il n'y a que 'nom' et 'modif1'.
Il y a plusieurs manières de s'en sortir, par exemple :
- tu ajoutes un champ 'hidden' qui contient 'search' dans chacun de tes formulaires
- ou, beaucoup mieux selon moi : tu enregistres la valeur de search dans une variable de session, et tu la récupères ensuite avec $_SESSION['search'] et non plus $_POST['search']
Bonsoir merci de m'avoir répondu je me permets d'insister que si le champ search existe. Il est au tout début du script
<input type="text" name="search" placeholder= Recherche...>
<input type="text" name="search" placeholder= Recherche...>
Comment fait-on alors pour récupérer l'information de ce champ afin de pouvoir le mettre dans ma condition WHERE ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui je t'en remercie beaucoup d'ailleurs seulement j'ai testé avec $_SESSION['search'] et ça ne donne rien
Oui comme tu peux le constater j'en est ouvert une justement dans mon scripte de la page modif1.php pour justement essayer de récupérer l'info par les sessions..
j'ai testé cela
j'ai testé cela
<!DOCTYPE html> <meta charset="utf-8" >
<?php session_start();
include("connexionMySQLabonne.php");
$nom = $_POST['nom'];
$search = $_SESSION['search'];
$sql = mysql_query("UPDATE abonne SET nom = '$nom'
WHERE Num_Abonne= '$search'");
header('Location: Recherche.php');?>
Oui comme tu peux le constate
Je voulais dire : les as-tu déjà utilisées avec succès. Car tel que c'est écrit ici, c'est mal parti.
D'abord, session_start() doit obligatoirement être AVANT le <!doctype, et même avant tout envoi de données au client. Donc avant même une ligne vide s'il y en a.
Ensuite, ça ne va te permettre de récupérer quelque chose que si dans ton fichier où la variable est initialement définie, il y a aussi un session_start(); et que tu enregistres la variable dans $_SESSION['search'] grâce à
Remarque au passage : ton fichier function.php est inclus dans un autre, il ne doit pas comporter de <!doctype> alors qu'il y en a déjà un dans la page qui l'inclut. Et il faut respecter l'emboîtement correct des balise, le head et le body à l'intérieur du html : actuellement, tel que tu le fais, c'est un grand mélange.
Je voulais dire : les as-tu déjà utilisées avec succès. Car tel que c'est écrit ici, c'est mal parti.
D'abord, session_start() doit obligatoirement être AVANT le <!doctype, et même avant tout envoi de données au client. Donc avant même une ligne vide s'il y en a.
Ensuite, ça ne va te permettre de récupérer quelque chose que si dans ton fichier où la variable est initialement définie, il y a aussi un session_start(); et que tu enregistres la variable dans $_SESSION['search'] grâce à
$_SESSION['search']=$search,
Remarque au passage : ton fichier function.php est inclus dans un autre, il ne doit pas comporter de <!doctype> alors qu'il y en a déjà un dans la page qui l'inclut. Et il faut respecter l'emboîtement correct des balise, le head et le body à l'intérieur du html : actuellement, tel que tu le fais, c'est un grand mélange.
J'ai donc supprimé les <!doctype>et j'ai également replacer le session_start() au tout debut.
Ensuite il faut savoir que la page serach.php est également inclu dans un autre page qui est celle ci:
Ensuite il faut savoir que la page serach.php est également inclu dans un autre page qui est celle ci:
<!DOCTYPE html> <meta charset="utf-8" >
<?php session_start();
//Page seulement pour les utilisateurs.
if (!isset ($_SESSION['co']))
{
echo "Vous devez être connecté pour pouvoir accéder à cette page ! ";
}
else
{
if($_SESSION ['co']==0)
{
echo "Impossible d'accéder à cette page, veuillez-vous inscrire ! ";
}
else
{
?>
<html>
<head>
<meta charset="ISO-8859-1"> <!-- Cela permet d'afficher les caractères spéciaux-->
<title>Intranet - EFFIA</title>
<meta name="description" content="description here">
<meta name="author" content="content here">
<link rel="stylesheet" href="css/5css_recherche.css">
<link rel="shortcut icon" href="icone1.ico" /> <!-- Favicon-->
<link rel="icon" type="image/x-icon" href="icone.ico" /> <!-- Favicon-->
<link rel="icon" type="image/png" href="icone1.png" /> <!-- Favicon-->
<style type="text/css">
</style>
</head>
<body>
<!-- Début - En-Tête-->
<div id="header-container">
<header class="wrapper">
<div id="logo"> <!-- Logo EFFIA-->
<div id="title">Intranet</div> <!-- Titre -->
</div>
<!-- Début - Onglets -->
<nav>
<div class="onglets"><a href="aide_membre.php">Aide</a></div>
<div class="onglets"><a href="Recherche.php">Recherche</a></div>
<div class="onglets"><a href="Accueil_membre.php">Accueil</a></div>
</nav>
<!-- Fin - Onglets-->
</header>
</div>
<!-- Fin - En-Tête -->
<!-- Bouton - Déconnexion-->
<div class="deconnexion_recherche">
<a href="deconnexion.php">Déconnexion</a>
</div>
<!-- Bouton - Nouveau Abonne-->
<center>
<div class="nouveau_abonne">
<a href="Nouveau_Abonne.php"> Nouveau Abonné </a>
</div>
</center>
</br>
<?php include ("search.php") ?>
<center><table width="1000px" border="8" cellspacing="6" ></center><!--Taille et disposition du tableau ainsi que des
bordures-->
<tr><!--Titre de chaque colonne-->
<th>Numéro d'Abonné</th>
<th>Nom d'Abonné</th>
<th>Prénom d'Abonné</th>
<th>Utilisateur d'Abonné</th>
<th>Civilité de l'Abonné</th>
<th>Numéro de carte de l'Abonné</th>
<th>Type de l'Abonnement</th>
<th>Le Prix de l'Abonnement</th>
</tr>
<?php
}
}
?>
</br></br></br>
<?php
include ("connexionMySQLabonne.php");
$sql = mysql_query("SELECT * FROM abonne INNER JOIN carte ON ( Num_Abonne = Abonne_Num )
INNER JOIN abonnement ON ( Num_Abonnement = Abonnement_Num )
ORDER BY Num_Abonne ASC ");
while($data = mysql_fetch_array($sql))
{?>
<tr><!--Contenant de chaque colonne-->
<td><center><?php echo$data['Num_Abonne']?></center></td>
<td><?php echo$data['nom']?></td>
<td><?php echo$data['prenom']?></td>
<td><center><?php echo$data['utilisateur']?><center</td>
<td><center><?php echo$data['civilite']?></center></td>
<td><center><?php echo$data['Num_Carte']?></center></td>
<td><?php echo$data['type_abonnement']?></td>
<td><center><?php echo$data['prix']?></center></td>
</tr>
<?php
}
?>
</table>
<!-- Début - Pied de Page -->
<div id="footer-container">
<footer class="wrapper">
</br> <!-- Sauter une ligne -->
<div class="copy">Site développé par Nicolas Tiré, Driss Shaïek et Nicolas Da Graça Ferreira © Bac STMG - Option SIG</div>
</div>
</footer>
<!-- Fin - Pied de Page -->
</body>
</html>
J'ai écrit :
D'abord, session_start() doit obligatoirement être AVANT le <!doctype
Ton code commence par :
<!DOCTYPE html> <meta charset="utf-8" >
<?php session_start();
Je ne regarde même pas la suite.
Commence par étudier les sessions dans le manuel PHP
D'abord, session_start() doit obligatoirement être AVANT le <!doctype
Ton code commence par :
<!DOCTYPE html> <meta charset="utf-8" >
<?php session_start();
Je ne regarde même pas la suite.
Commence par étudier les sessions dans le manuel PHP
<?php session_start();
<!DOCTYPE html> <meta charset="utf-8" >
C'est la que session_start se met.... Avant comme le père te l'a écrit plus haut
<!DOCTYPE html> <meta charset="utf-8" >
C'est la que session_start se met.... Avant comme le père te l'a écrit plus haut
D'accord mais cette syntaxe n'influe pas sur mon problème puisque j'ai déjà une session d'ouverte puisque pour pouvoir être sur la dernière page que j'ai mis en script il faut être connecter avec un identifiant et un mot de passe donc merci pour la syntaxe je vais arranger cela mais mon problème persiste encore et toujours