Problème d'insert en double

bandenklap
Invité n'ayant pas de compte PHPfrance

20 août 2007, 16:52

Hello,

Me revoila avec une seconde question, j'ai un petit problème sur un second script. Je m'explique :
Je cherche simplement à effectuer un Insert dans ma table. Jusque la, tout va bien, mon Insert fonctionne parfaitement. Le seul problème est que mon insert insère en table 2 lignes : une ligne avec les données que je lui ai indiqué, et une seconde vide.

Ci dessous mon code :
<html>
<head>
<link rel="stylesheet" href="CSS/style.css"> 
<title>Gestion des partenaires</title>
</head>




<BODY BGCOLOR="#333333">
<form method="post" action="veriflien.php">

	<TABLE WIDTH="90%" HEIGHT="20%" ALIGN="CENTER" BORDER="0">
		<TR>
			<TD COLSPAN="3"><?php include 'interfaces/header.php';?></TD>
		</TR>
	</TABLE>
		
	<TABLE ALIGN="CENTER" WIDTH="90%" BORDER="0">
		<TR><IMG SRC="Images/00.gif" HEIGHT="10px"></TR>

		<TR>
			<TD ROWSPAN="5" COLSPAN="2"WIDTH="20%" VALIGN="TOP" CLASS="TITLE"><B><?php include 'interfaces/menu.php';?></B></TD>
			<TD COLSPAN="3" CLASS="TITLE" ALIGN="CENTER">

		<TABLE BORDER="1" WIDTH="100%" ALIGN="CENTER">
			
			</TR>
				<TD ALIGN="CENTER" CLASS="titrebox"><B>ID</B></TD>
				<TD ALIGN="CENTER" CLASS="titrebox"><B>Nom du site</B></TD>
				<TD ALIGN="CENTER" CLASS="titrebox"><B>Description</B></TD>
				<TD ALIGN="CENTER" CLASS="titrebox"><B>Image</B></TD>
				<TD ALIGN="CENTER" CLASS="titrebox"><B>Lien</B></TD>
			</TR>
			

<?php			
	
$connexion = mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db('BLOG') or die(mysql_error());
$req = mysql_query("SELECT * FROM partenaires ORDER BY ID DESC") or die(mysql_error());

// on va scanner tous les tuples un par un  
while ($data = mysql_fetch_array($req)) { 
       // on affiche les résultats 
?>

			</TR>
				<TD ALIGN="CENTER" WIDTH="10%"><?php echo $data['ID']; ?></TD>
				<TD ALIGN="CENTER" CLASS="titrebox"><a href="<?php echo $data['LINK']; ?>" TARGET="_BLANK"><B><?php echo $data['nom']; ?></B></a></TD>
				<TD ALIGN="CENTER"><?php echo $data['description']; ?></TD>
				<TD ALIGN="CENTER" HEIGHT="20px"><IMG SRC="<?php echo $data['IMG_ID']; ?>"></TD>
				<TD ALIGN="CENTER" HEIGHT="20px"><?php echo $data['LINK']; ?></TD>
			</TR>			
<?php
}
?>
			
			</TD>
		</TR>
		<TR>
		<TD HEIGHT="15px" COLSPAN="5"><IMG SRC="Images/00.gif"></TD>
		</TR>



			</TR>
				<TD CLASS="titrebox" ALIGN="CENTER"><B>Ajouter</B></TD>
				<TD CLASS="titrebox"><input type="text" name="nom"></TD>
				<TD CLASS="titrebox"><input type="text" name="description" STYLE="WIDTH:100%"></TD>
				<TD CLASS="titrebox"><input type="text" name="image"></TD>
				<TD CLASS="titrebox"><input type="text" name="lien" STYLE="WIDTH:100%"></TD>
			</TR>
			
			<TR>
				<TD ALIGN="RIGHT" COLSPAN="5"><input type="submit" value="Ajouter"></TD>
			</TR>		
</TABLE>






</form>

</body>
</html>
Merci de votre aide, je dois avouer que jue bloque une fois de plus... ;D

A plus

ViPHP
ViPHP | 3607 Messages

20 août 2007, 17:44

Bonjour,
je ne vois nul part dans ton code de requête INSERT... C'est normal?
Je pense qu'il nous manque un bout de code pour pouvoir t'aider...

bandenklap
Invité n'ayant pas de compte PHPfrance

20 août 2007, 17:50

Oups, autant pour moi, ce n'est pas le bon script...

Voici le script correct.
<?php
  $connexion = mysql_connect("localhost","root","") or die(mysql_error());
  mysql_select_db('BLOG') or die(mysql_error());

	$nom = addslashes($_POST['nom']);
	$description = addslashes($_POST['description']);
	$IMG_ID = addslashes($_POST['image']);
	$LINK = addslashes($_POST['lien']);

  $req="INSERT INTO partenaires (ID, nom, description, IMG_ID, LINK) VALUES('', '$nom', '$description', '$IMG_ID', '$LINK')";
  mysql_query($req) or die(mysql_error()); 
  
  require "partenaires.php";

?>
Merci par avance...

ViPHP
ViPHP | 3607 Messages

20 août 2007, 17:54

Il faudrait nous donner les différents fichiers suivants:
Le formulaire, et le fichier partenaires.php... des fois que :-k

Invité
Invité n'ayant pas de compte PHPfrance

20 août 2007, 18:04

En fait, le formulaiure est intégré dans le premier script.
Ensuite, une fois les valeurs iontégrées, le script lance veriflien.php qui est le second script que j'ai intégré dans mon second message.

Est ce que cela te suffit?

Eléphant du PHP | 193 Messages

20 août 2007, 18:40

Je sais pas si c'est ça a un lien, mais corrige-le tout de même: tu ouvres trois <table> et tu n'en fermes que deux.

Sinon tu as regardé dans ta base que chaque insertion ne se fait bien qu'une seule fois? Et que tu n'as pas d'enregistrement vide?

bandenklap
Invité n'ayant pas de compte PHPfrance

20 août 2007, 19:13

Merci pour les tables, en effet, j'ai oublié d'en refermer une...

En ce qui concerne ta question sur ma base, le problème est que j'ai bien 2 enregistrements quand je souhaite en enregistrer juste un. De plus, j'ai l'impression qu'à chaque fois que je me copnnecte sur la page, un enregistrement s'effectue sans raffraîchissement de la page, un truc du genre "auto post"... ;D

Bizare...

Eléphant du PHP | 193 Messages

20 août 2007, 19:26

Bah si tu raffraichis oui, il va relancer le script et réécrire une ligne dans ta table.... Vu que la structure de ta table doit le permettre.

Par contre si ça te le fait systématiquement, même sans raffraîchir ta page, c'est forcément qu'à endroit tu relances ta requête... comme le suggère jojolapine :) MySQL est parfois taquin, mais pas au point de faire deux INSERT au lieu d'un seul :mrgreen:

Invité
Invité n'ayant pas de compte PHPfrance

21 août 2007, 10:50

OK, merci du conseil.
Je vais essayer une fois de plus de trouver l'erreur dans mes scripts.

Bonne journée