pb d'insertion dans une table

ricardo
Invité n'ayant pas de compte PHPfrance

11 mai 2005, 19:14

Voila mon pb est que je peux inserer un seul enregistrement dans ma table annonce, ensuite j'ai mon message de test "Impossible d'insérer le résultat de l'annonce".
Voila mon code :
<?php 
/* On vérifie si le bouton d'envoi du formulaire a été cliqué */ 
if(isset($_POST['publier'])) 
{ 
	// on récupère les données POST 
    $nomutilisateur = $_POST['nomutilisateur']; 
    $motpasse  = $_POST['motpasse']; 
    $email = $_POST['email'];
	$choix  = $_POST['rubrique']; 
	$annonce  = $_POST['annonce'];
	$lieu  = $_POST['lieu'];
	$telephone  = $_POST['telephone'];
	
	$nomutilisateur_ok = trim($nomutilisateur); // trim() supprime les espaces éventuels
	// vérifie si le nom d'utilisateur existe déjà dans la base
	$reponse="SELECT nomutilisateur FROM login WHERE nomutilisateur = '$nomutilisateur_ok'";
	$result=mysql_query($reponse);
	$total_nomutilisateur=mysql_num_rows($result);
	
	$motpasse_ok = trim($motpasse); // trim() supprime les espaces éventuels
	// vérifie si l'adresse mail existe déjà dans la base
	$reponse="SELECT motpasse FROM login WHERE motpasse = '$motpasse_ok'";
	$result=mysql_query($reponse);
	$total_motpasse=mysql_num_rows($result);
	
	if ($total_nomutilisateur == 1 && $total_motpasse == 1)
	{
		// Action à adopter 
        mysql_query("INSERT INTO annonce (choix, annonce, lieu, telephone)". 
        " VALUES ('$choix', '$annonce', '$lieu', '$telephone') ") 
        or die("Impossible d'insérer le résultat de l'annonce");
	}
	}
	?>
Merci

ViPHP
pjl
ViPHP | 2119 Messages

11 mai 2005, 21:02

1. ce code est prévu pour ne faire qu'une et une seule insertion, combien veux-tu en faire ?
2. tu écrit que tu vérifies le mot de passe alors que c'est le mot de passe que tu vérifies.
3. pourquoi ne controles-tu pas en même temps le nom d'utilisateur et le mot de passe ?

ricardo
Invité n'ayant pas de compte PHPfrance

11 mai 2005, 21:39

Ok comment faire pour ajouter une infinité d'enregistrement, comment faire pour tester les deux champs en meme temps ?

Merci

ricardo
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 18:52

Bonsoir a tous,

Est-ce que quelqu'un peut m'aider ?


Merci

Eléphant du PHP | 78 Messages

12 mai 2005, 20:35

Salut,
Pour tester les 2 champs en meme temps, tu fais une unique requete avec dans le where tes 2 params (login et password).

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 mai 2005, 20:47

pour tester deux champs en même temps :
// te renverra le nombre de lignes qui correspondent aux critères
$reponse="SELECT COUNT(*) FROM login WHERE nomutilisateur = '$nomutilisateur_ok' AND motpasse = '$motpasse_ok' ";

list($nbreTrouve) = mysql_fetch_row($reponse);
pour insérer plusieurs enregistrement il faudrait faire une boucle mais je ne vois ce que tu veux insérer plusieurs fois dans ce cas précis[/php]

ViPHP
fab
ViPHP | 2657 Messages

12 mai 2005, 20:50

quand on utilise COUNT(*) pour se simplifier apres on utilise AS
exemple :
COUNT(*) AS total
et si tu fais un mysql_fetch_array dessus ça sera $array['total'] :p

ricardo
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 21:09

C'est pas que je veux insérer plusieurs choses, mais actuellement je peux insérer qu'un ensemble d'enregistrement dans ma bdd.
Quand je veux en insérer un autre via mon formulaire j'ai mon message de test :

or die("Impossible d'insérer le résultat de l'annonce");

Ensuite si j'efface mon enregistrement via PhpMyAdmin je peux a nouveau en enregistrer qu'un seul.

Merci

ViPHP
pjl
ViPHP | 2119 Messages

12 mai 2005, 21:32

question comme ca, combien d'enregistrements as tu actuellement dans ta table "annonce " ?

ricardo
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 22:12

Un seul impossible d'en ajouter des autres, pourquoi ?

ViPHP
pjl
ViPHP | 2119 Messages

12 mai 2005, 22:35

peut-être un PB dans la structure de la table.

ricardo
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 17:21

C'est bon j'ai trouver, j'avais pas d'auto-incrémentation sur un champs.

Maintenant j'ai un problème avec les case à cocher, quand je selectionne une case pas de problème. Mais si l'utilisateur ne sélectionne aucune case voila le message d'erreur :

Notice: Undefined index: choix in d:\easyphp1-8\www\pages seules\annonceajouter.php on line 38

Voila une partie de mon code :


$choix  = $_POST['choix'];

<input type="radio" name="choix" value="choix" <?php if ($choix=="cherche") {echo " checked=\"checked\"";} ?>>
Les autres choix sont déclarer de la meme façon.

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 mai 2005, 17:29

à la réception de ton formulaire il faut que tu testes si la variable correspondant au bouton radio est attribuée
si elle ne l'est pas tu peux lui attribuer une valeur par défaut et agir en conséquence, sans que cela ne crée d'erreur
// $variable = (condition)?valeur si VRAI:valeur si FAUX
$choix  = (isset($_POST['choix']))?$_POST['choix']:null;

ricardo
Invité n'ayant pas de compte PHPfrance

13 mai 2005, 17:37

Ok faut faire ça avec toutes les variables que je récupère

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 mai 2005, 17:40

oui c'est mieux :)