Se connecter avec
S'enregistrer | Connectez-vous

Besoin d'aide pour une requete MySQL sous PHP

Dernière réponse : dans Programmation

Bonjour à tous,

Ce que je souhaite, c'est que sur une premiere page (formulaire), on me demande d'entrer un nom.
Puis à partir de ce nom, il m'affiche toutes les informations.
Donc g fait mon formulaire : <input name="nom" type="text">

Voilà, ma requête : $query = "select * from where Salarie NomS like '%".$nom."%'";
Mais il m'affiche les informations que g demandé mais de tout le monde (tous ceux de ma table) au lieu de m'afficher les infos de celui que g demandé.

Donc si quelqu'un pourrait me débloquer!
Merci

Autres pages sur : besoin aide requete mysql php

Lassé par la pub ? Créez un compte

Rebonjour,

Ce que je souhaite maintenant, c'est pouvoir ajouter de nouvelle personne dans ma base de données, mais à partir de php.
- Donc g créé un nouveau fichier "ajout.php".
Dans ce fichier, je fais des cadres pour pouvoir renseigner tous les champs. Question: faut-il renseigner le Numéro de la personne (c'est la clé elle est en auto_increment en MySQL)?
- g créé un fichier "ajout_user".
ma requête : $query = "insert into Salarie values
('".$NS."', '%".$Nom."%', '%".$Prenom."%', '%".$Adresse."%', '".$Age."')";


et g mis ensuite, if ($result)
echo mysql_affected_rows()." personne ajoutée dans la base de données.";


Donc mon problème est que lorsque je rajoute une personne, il me met bien 1 personne ajoutée mais il ne me l'ajoute pas à ma base de données car après je fais ma recherche, et il me mettra O personne trouvée avec ce nom.

Donc si quelqu'un pourrait me trouver mon erreur!

Merci

  1. $query = "insert into Salarie set (colonne_nom, colonne_prenom, colonne_adresse, colonne_age) values ('$Nom', '$Prenom', '$Adresse', '$Age')";


comme ça marchera mieux... il ne faut pas mettre les % : les % représentent tous les caractères : quand tu fais une recherche sur %bra% (dans un SELECT), tu cherches tous les noms qui ont "bra" dedans : ça peut être brafond, fabrace, tebra etc...
dans le INSERT, il ne faut pas mettre de %.
ne met pas non plus l'id... mysql s'en charge très bien

Zut, sa marche pas.
Quand je rentre toutes les données, sa ne m'affiche pas 1 personne ajoutée.
voilà, ce que g mis:
$query = "insert into Salarie set(Nom, Prenom, Adresse, Age) values ('$Nom', '$Prenom', '$Adresse', '$Age');
c'est bien sa qui faut mettre?

autant pour moi :
  1. $query = "insert into Salarie (colonne_nom, colonne_prenom, colonne_adresse, colonne_age) values ('$Nom', '$Prenom', '$Adresse', '$Age')";

faut enlever le set... oups :( 
sinon as-tu bien récupéré les variables $Nom et autres par un $Nom=$_POST etc... ??

J'ai refait la requete sans le set, ouais les variables sont bonnes($nom=$_POST['nom']).
ça me met bien 1 personne insérée mais ça me l'ajoute pas à ma base de données, ça m'ajoute une ligne vide!
je sais pas koi faire!!

pamic a écritJ'ai refait la requete sans le set, ouais les variables sont bonnes($nom=$_POST['nom']).
ça me met bien 1 personne insérée mais ça me l'ajoute pas à ma base de données, ça m'ajoute une ligne vide!
je sais pas koi faire!!
Fais un "echo $query" de ta requête avant de l'exécuter. Une erreur peut être compliquée à voir dans le code, mais évidente quand on voit la requête tele qu'elle est construite :) 

Bonjour à tous,

Ce sera plus simple comme sa, je vous donne mes progs et vous pourrez me corriger plus facilement et voir ce que j'ai fait ou justement ce que je n'ai pas fait!
Dans mes prog, je ne mets pas le numéro quie est en auto_increment.

- voici "ajout.php"


<html>
<head>
<title>Ajout d'une nouvelle personne</title>
</head>

<body>

<h1>FORMULAIRE</h1>

<form action="ajout_user.php" method="post">
<table border=0>
<tr>
<td>Nom</td>
<td><input type=text name=NomS maxlength=25 size=25><br></td>
</tr>
<tr>
<td>Prénom</td>
<td><input type=text name=PrenomS maxlength=25 size=25><br></td>
</tr>
<tr>
<td>Fonction</td>
<td><input type=text name=Fonction maxlength=25 size=25><br></td>
</tr>
<tr>
<td>Adresse</td>
<td><input type=text name=AdresseS maxlength=25 size=25><br></td>
</tr>
<tr>
<td>Age</td>
<td><input type=text name=AgeS maxlength=25 size=25><br></td>
</tr>
</table>
</form>

<a href="http://127.0.0.1/formulaire.php">Recherche d'une personne</a>

</body>
</html>


- "ajout_user.php"

<html>
<head>
<title>Ajout d'une nouvelle personne</title>
</head>

<body>
<h1>AJOUT</h1>

<?
$NomS = $_POST['NomS'];
$PrenomS = $_POST['PrenomS'];
$Fonction = $_POST['Fonction'];
$AdresseS = $_POST['AdresseS'];
$AgeS = $_POST['AgeS'];

@ $db = mysql_pconnect("localhost", "mon_nom", "password");

mysql_select_db("nom_de_la_table");
$query = "insert into Salarie (NomS, PrenomS, Fonction, AdresseS, AgeS) values ('".$NomS."', '".$PrenomS."', '".$Fonction."', '".$AdresseS."', '".$AgeS."'')";
$result = mysql_query($query);

if ($result)
echo mysql_affected_rows()." personne insérée dans la base de données.";
?>

<br>
<a href="http://127.0.0.1/ajout.php">Nouvel ajout d'une personne</a>

</body>
</html>


Bon j'espere k'avec tout ça, vous voyez mieux, et que vous pourrez me résoudre le problème!
Mon problème est que cela m'insère une ligne vide dans ma base de données, il me donne que le numéro qui est en auto_increment.

Merci d'avance.

  1. @ $db = mysql_connect("localhost", "mon_nom", "password");

tu avais mis mysql_pconnect..

et en plus si tu mets tout avec des @ devant forcément c plus dur pour savoir ce qui marche pas !!!

essaie de mettre aussi les valeurs des attributs des balises html avec des "" ! ce sera w3c-compliant comme ça

Premièrement pour ta page ajout.php tes inputs sont organisés comme cela : <input type=text name=NomS maxlength=25 size=25>.

Pense à toujours mettre les double quillemets comme cela : <input type="text" name="NomS" maxlength="25" size="25">

Deuxièmement j'ai corrigé un peu ton programme :
pamic a écrit- "ajout_user.php"

<html>
<head>
<title>Ajout d'une nouvelle personne</title>
</head>

<body>
<h1>AJOUT</h1>

<?
$NomS = $_POST['NomS'];
$PrenomS = $_POST['PrenomS'];
$Fonction = $_POST['Fonction'];
$AdresseS = $_POST['AdresseS'];
$AgeS = $_POST['AgeS'];

@ $db = mysql_connect("localhost", "mon_nom", "password");

mysql_select_db("ici sa devrait être le nom de la base de données");
$query = "insert into Salaire (NomS, PrenomS, Fonction, AdresseS, AgeS) values ('".$NomS."', '".$PrenomS."', '".$Fonction."', '".$AdresseS."', '".$AgeS."')";
$result = mysql_query($query);

if ($result)
echo mysql_affected_rows()." personne insérée dans la base de données.";
?>

<br>
<a href="http://127.0.0.1/ajout.php">Nouvel ajout d'une personne</a>

</body>
</html>


Modifications que j'ai fait :
- mysql_connect au lieu de mysql_pconnect
- nom de la base de donnée au lieu du nom de la table dans mysql_select_db
- Insert into Salaire (tu avais mis insert into Salarie)
- J'ai enlevé une apostrophe de trop à la fin de ta requête

euh je pense que ct bien Salarie... (ça me parait normal de mettre des personnes dans une table Salarie... alors que dans une table Salaire, je vois pas trop...)
bien vu pour la database... j'avais pas vu ça !

sniff!!!
j'ai fait les modifications, sa marche tjrs pas.
au faite, ctè bien Salarie pour salarié !!

En enlevant le @, il me met aucun message d'erreur! il me met bien une personne insérée. il sert à koi le @ ??
je sais plus koi faire!

maintenant, il fo ke je fasse pareil pour supprimer des personnes.
pouvez-vous me dire koment on fait pour sauvegarder une base de données? merci
histoire de ne pas tout perdre en faisant une fosse manip !!

Dac avec joce sur 2 points:
- le sprintf ne devrait pas etre nécessaire, il y surement un pb dans l'ancienne syntaxe
- le pconnect crée une connexion "persistante" contrairement au connetc, ça marche très bien également, je n'utilise que ça...

- Dac avec ThripS, les guillemets sont très imporatnt dans tes balises HTML

Je me permettrait juste un petit conseil de plus, dans ta série de <tr> et <td>, tu devrais utiliser des tabulations dans ta syntaxe pour la rendre plus lisible, ce sera encore plus vrai si tu utilise des boucles dans d'autres boucle en PHP,
Plus un code est lisible, mieux il marche, vu que les bugs tu les vois dès que tu les écris :lol: 

pamic a écrit
En enlevant le @, il me met aucun message d'erreur! il me met bien une personne insérée. il sert à koi le @ ?


Bah faut se renseigner un peu par soi-même parfois ;)  Ca sert à ne pas afficher les messages d'erreur de la fonction. Mais en phase de développement, c'est un peu ridicule. Même plus tard en fait.

Ca peut éventuellement servir pour ne pas afficher le pass dans le message d'erreur de la connexion à la bdd, mais il y a une autre méthode plus inteligente pour ça.
Lassé par la pub ? Créez un compte