Page 1 sur 2
Formulaire mise à jour et suppression
Posté : 24 mars 2007, 21:14
par arbagon
J'ai fait deux script en php, mais il ne fonctinne pas. J'aurais besoin d'un oeil expert pour repérer l'erreur.
Mise à jour:
<?php
$base = mysql_connect("serveur","utilisateur","mot de passe");
mysql_select_db("guildejoueur",$base);
// --- récupération des données du formulaire de mise à jour
$photo = $_POST['photo'];
$identifiant = $_POST['identifiant'];
$nom = $_POST['nom'];
$prix = $_POST['prix'];
// --- définition de la demande d'ajout du numéro de fiche et du courriel pour les noms entrées dans le formulaire
$requete= "UPDATE inventaire SET photo='.$photo.', nom='.$nom.', prix='.$prix.' WHERE identifiant='.$identifiant.'";
// --- exécution de la demande d'ajout
mysql_query($requete);
// --- affichage du rapport précisant le travail effectué
echo "La fiche de ".$identifiant." ".$nom." a été mise à jour.";
?>
Suppression:
<?php
$base = mysql_connect("serveur","utilisateur","mot de passe");
mysql_select_db("guildejoueur",$base);
$photo = $_POST['photo'];
$identifiant = $_POST['identifiant'];
$nom = $_POST['nom'];
$prix = $_POST['prix'];
$requete="DELETE FROM inventaire WHERE $identifiant='identifiant'";
mysql_query($requete);
echo "Les données de la fiche d'inscription de ".$identifiant." ".$nom." ont été effacer de la base de données.";
?>
Posté : 25 mars 2007, 02:33
par Tazzie
$requete= "UPDATE inventaire SET photo='.$photo.', nom='.$nom.', prix='.$prix.' WHERE identifiant='.$identifiant.'";
$requete= 'UPDATE inventaire SET photo="'.$photo.'", nom="'.$nom.'", prix="'.$prix.'" WHERE identifiant="'.$identifiant.'"';
Tu confonds tes guillements
Et tu doit mettre des guillemets pour le sql, example :
$sql = 'INSERT INTO `table` VALUES('.$nom.')';
Si la table pour le nom c'est pas en int tu auras le droit a une erreur, il faut juste que tu rajoutes des " "
$sql = 'INSERT INTO `table` VALUES("'.$nom.'")';
$requete="DELETE FROM inventaire WHERE $identifiant='identifiant'";
Qu'est-ce il fou la le $ ?

suppression
Posté : 26 mars 2007, 15:40
par Arbagon
Ma requête mise à jour fonctionne, mais j'ai modifier celle de suppression qui ne marche toujours pas. Voici la nouvelle version:
$requete='DELETE FROM inventaire WHERE identifiant="'.$identifiant.'", nom="'.$nom.'"';
Re: suppression
Posté : 26 mars 2007, 16:00
par Megadeth
Salut,
Ma requête ... WHERE identifiant="'.$identifiant.'", nom="'.$nom.'"';
A la place d'une virgule, essaies un AND nom='".$nom."'
Mega

Posté : 04 avr. 2007, 01:38
par Invité
merci des réponses, mais j'ai un autre problème. Je veut que l'utilisateur puisse se connecter, alors j'ai fais une table avec les nom, prénom et mot de passe de chaqu'un. L'utilisateur entre ses données dans une page web relier au script. Le script devrait afficher "Accès autoriser" si c'est les trois données concorde et "Le mot de passe ne correspond pas" si inverse, mais il ne marche pas. Merci d'avance.
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$password = $_POST['password'];
$requete = mysql_query("SELECT nom,prenom,password FROM mdp WHERE prénom=$prénom")or die(mysql_error());
$resultat = mysql_fetch_array($requete);
if ( $mdp == $resultat[mdp] ) {
echo "Acces autorisé";
} else {
echo "Le mot de passe ne correspond pas";
Posté : 04 avr. 2007, 08:47
par Ryle
Modération :
arbagon, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).
Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.
Quant à ton problème, il faut savoir que $pr
enom et $pr
énom ne sont pas les mêmes variables et qu'il est fortement déconseillé d'utiliser des accents dans le nom de ses champs ou variables.
Par ailleurs, une chaine en SQL (varhcar, date, text, ...) doit être entourée d'apostrophes pour être considérée comme tel :
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$password = $_POST['password'];
$sql = "SELECT nom, prenom, password FROM mdp
WHERE prenom='" . $prenom . "'"; // pas d'accent et des apostrophes autour des chaines
$requete = mysql_query($sql) or die(mysql_error());
$resultat = mysql_fetch_array($requete);
if ( $mdp == $resultat[mdp] ) // [mdp] est un index, il lui faut des apostrophes ou des guillemets : $resultat['mdp']
// ceci dit, puisque tu ne ramenes pas de champ nommé 'mdp' dans ton SELECT, celui-ci génerera une alerte et ne contiendra pas de résultat
// $resultat['password'] semble plus approprié au vu de ton select
{
echo "Acces autorisé";
}
else {
echo "Le mot de passe ne correspond pas";
}
Question bête... que se passe-t-il si deux personnes ont le même prénom et que tu ne testes à chaque fois que le premier mot de passe retourné ? Il serait à mon avis plus sage de regarder en base si tu trouves l'utilisateur dont le login et le mot de passe correspondent et vérifier s'il y a des résultats

Posté : 06 avr. 2007, 14:25
par Invité
je voudrais que le contenue qui s'affiche de mon php soit en fond noir et écriture blanche. Je me demandais aussi comment faire la fonction précédant à un bouton.
Posté : 06 avr. 2007, 14:34
par Ryle
hmm... va falloir commencer par avoir quelques bases en html (voire en css) pour tes couleurs et les actions des boutons avant de te lancer à corps et à cri dans le php mon jeune padawan..

Posté : 06 avr. 2007, 14:50
par Invité
J'ai de bonne base en html, j'ai fait plusieurs site web fonctionnel, mais je voudrais savoir comment l'incorporer dans mon php. Le code pour se connecter ne marche pas non plus, à la fin il me dit "Unknow colum 'passeword' in 'field list'". Voici le code :
$login = $_POST['login'];
$password = $_POST['password'];
$sql = "SELECT password FROM mdp
WHERE login='" . $login . "'"; // pas d'accent et des apostrophes autour des chaines
$requete = mysql_query($sql) or die(mysql_error());
$resultat = mysql_fetch_array($requete);
if ( $passeword == $resultat['passeword'] ) // [mdp] est un index, il lui faut des apostrophes ou des guillemets : $resultat['mdp']
// ceci dit, puisque tu ne ramenes pas de champ nommé 'mdp' dans ton SELECT, celui-ci génerera une alerte et ne contiendra pas de résultat
// $resultat['password'] semble plus approprié au vu de ton select
{
echo "Acces autorisé";
}
else {
echo "Le mot de passe ne correspond pas";
}
et j'ai un autre code qui devrait envoyer un mail, tout se passe correctement et fonctionne, mais quand je vais voir mes courriels, je ne l'ai pas reçu. Encore du code

:
session_start();
$couriel=$_POST['couriel'];
$_session['$message']=$message;
$_session['couriel']=$couriel;
if (ereg('^.+@.+\\..+$', $couriel)) {
echo 'Votre commande à été envoyer';
} else {
echo 'Email invalide !';
}
$destinataire = "[email protected]";
$expediteur = "$couriel";
$objet = "commande";
$contenu = "$couriel à commander
$message";
//on envoie le mail
mail($destinataire, $objet, $contenu, "From: $expediteur\r\nReply-To:
$expediteur\r\nContent-Type: text/html;charset=\"iso-8859-1\"\r\n");
Posté : 06 avr. 2007, 14:57
par Ryle
Un peu d'attention et de rigueur dans ce que tu fais te permettrais sans doute de venir à bout de ce genre chose sans difficulté :
$password = $_POST['password'];
$sql = "SELECT password FROM mdp
...
if ( $passeword == $resultat['passeword'] )
Et vérifie dans ta base si jamais tu n'as pas non plus un "passeoueurde"

Posté : 06 avr. 2007, 15:13
par Invité
Je commence et j'ai beaucoup de difficulter avec ceci, mais c'est que je travaille la dessus pour un contrat, alors sa met pression et je déteste la pression. J'ai corriger et tout fonctionne, maintenant je voudrais faire un lien hypertext sur les mots 'Accès autoriser' et je n'ai pas encore compris comment inclure le html dans le php. J'ai tenter ceci, surement une erreur d'apsotrophe et de guillemet, et sa marche pas.
J'aimerais aussi si on pouvais m'aider avec le mail et comment faire des fonds noir avec écriture blanche.
Merci
Posté : 06 avr. 2007, 16:20
par Ryle
On inclue pas de html dans du php, on inclue du php dans du html, et on génère du html avec du php. Il te suffit donc de partir du code html que tu souhaites obtenir, et tu y insères les éléments php que tu veux y coller
En HTML :
En PHP :
<?php
echo '<a target="_self" href="inv.htm">Acces autorisé</a>';
?>
(dans ce cas, ca ne sert à rien)
éventuellement ...
<?php
echo '<a target="_self" href="'.$variable.'">Acces autorisé</a>';
?>
Mais dans ce cas, il vaut mieux n'insérer que la variable que de tout faire en php :
<a target="_self" href="<?php echo $variable; ?>">Acces autorisé</a>
Et pour les couleurs, regarde du côté des styles css les attributs color et background-color
(Quant à la pression, si elle est bien fraiche, ça désalterre toujours
)
Posté : 06 avr. 2007, 17:05
par Invité
Je connais pas le css, mais je vais garder les couleurs tel quel, car elles sont plus facilement lisible. J'ai parler plutot de mon code pour les mails. Je ne comprend pas pourquoi sa ne marche pas car il me dit que tout est beau, mais il envoie pas le mail. Je l'ai fait avec un de mes proffesseur, alors sa m'étonne encore plus qu'il ne marche pas. C'est le troisième script php d'une chaîne avec une session, d'où le sesion start et les variable de session. Voici le code à nouveau :
session_start();
$couriel=$_POST['couriel'];
$_session['$message']=$message;
$_session['couriel']=$couriel;
if (ereg('^.+@.+\\..+$', $couriel)) {
echo 'Votre commande à été envoyer';
} else {
echo 'Email invalide !';
}
$destinataire = "[email protected]";
$expediteur = "$couriel";
$objet = "commande";
$contenu = "$couriel à commander
$message";
//on envoie le mail
mail($destinataire, $objet, $contenu, "From: $expediteur\r\nReply-To:
$expediteur\r\nContent-Type: text/html;charset=\"iso-8859-1\"\r\n");
Posté : 06 avr. 2007, 17:13
par Ryle
En vrac...
- $_SESSION et pas $_session
- $_SESSION['message'] ou $_SESSION[$message] mais pas $_session['$message']
- Je ne comprend pas le \\. de ton expression '^.+@.+\\..+$' : à mon avis il ne devrait y en avoir qu'un pour protéger le "." de l'email et pas deux ce qui protège l'antislash
- $expediteur = $couriel; et pas $expediteur = "$couriel";
- $contenu = $couriel ." à commander ". $message;
Posté : 06 avr. 2007, 18:07
par Expreg
if (ereg('^.+@.+\\..+$', $couriel)) {
echo 'Votre commande à été envoyer';
} else {
echo 'Email invalide !';
}
Ouille ouille ouille...

Les POSIX (ereg et Cie) sont d'une lenteur extrême par rapport aux PCRE (preg_* et Cie)
De plus, à la lecture, ton masque est tellement permissif que l'usage d'une regex est quasi dénuée de sens.
Si tu cherches juste à savoir s'il y a un @ et un point après, strpos() fera cela 100 fois plus vite que n'importe quelle regex même optimisée.
Si par contre tu veux une regex ayant une certaine rigueur, il faut alors en définir les termes de manières optimisée.
