Page 1 sur 4

pb d'insertion dans une table

Posté : 11 mai 2005, 19:14
par ricardo
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

Posté : 11 mai 2005, 21:02
par pjl
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 ?

Posté : 11 mai 2005, 21:39
par ricardo
Ok comment faire pour ajouter une infinité d'enregistrement, comment faire pour tester les deux champs en meme temps ?

Merci

Posté : 12 mai 2005, 18:52
par ricardo
Bonsoir a tous,

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


Merci

Posté : 12 mai 2005, 20:35
par Akei
Salut,
Pour tester les 2 champs en meme temps, tu fais une unique requete avec dans le where tes 2 params (login et password).

Posté : 12 mai 2005, 20:47
par ouckileou
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]

Posté : 12 mai 2005, 20:50
par fab
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

Posté : 12 mai 2005, 21:09
par ricardo
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

Posté : 12 mai 2005, 21:32
par pjl
question comme ca, combien d'enregistrements as tu actuellement dans ta table "annonce " ?

Posté : 12 mai 2005, 22:12
par ricardo
Un seul impossible d'en ajouter des autres, pourquoi ?

Posté : 12 mai 2005, 22:35
par pjl
peut-être un PB dans la structure de la table.

Posté : 13 mai 2005, 17:21
par ricardo
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

Posté : 13 mai 2005, 17:29
par ouckileou
à 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;

Posté : 13 mai 2005, 17:37
par ricardo
Ok faut faire ça avec toutes les variables que je récupère

Merci

Posté : 13 mai 2005, 17:40
par ouckileou
oui c'est mieux :)