Formulaire mise à jour et suppression

arbagon
Invité n'ayant pas de compte PHPfrance

24 mars 2007, 21:14

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.";
?>

Petit nouveau ! | 6 Messages

25 mars 2007, 02:33

$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 $ ? :)

Arbagon
Invité n'ayant pas de compte PHPfrance

26 mars 2007, 15:40

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.'"';

Mammouth du PHP | 737 Messages

26 mars 2007, 16:00

Salut,
Ma requête ... WHERE identifiant="'.$identifiant.'", nom="'.$nom.'"';
A la place d'une virgule, essaies un AND nom='".$nom."' ;)

Mega
:)

Invité
Invité n'ayant pas de compte PHPfrance

04 avr. 2007, 01:38

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";

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 avr. 2007, 08:47

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 $prenom 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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

06 avr. 2007, 14:25

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 avr. 2007, 14:34

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.. :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

06 avr. 2007, 14:50

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 :roll: :
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");

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 avr. 2007, 14:57

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" ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

06 avr. 2007, 15:13

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.

Code : Tout sélectionner

<a target="'_self'" href="'inv.htm'">Acces autorisé</a>
J'aimerais aussi si on pouvais m'aider avec le mail et comment faire des fonds noir avec écriture blanche.

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 avr. 2007, 16:20

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 :

Code : Tout sélectionner

<a target="_self" href="inv.htm">Acces autorisé</a>
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 ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

06 avr. 2007, 17:05

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");

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 avr. 2007, 17:13

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;
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 170 Messages

06 avr. 2007, 18:07

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. :wink:

Si par contre tu veux une regex ayant une certaine rigueur, il faut alors en définir les termes de manières optimisée. :wink:
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends