8768 sujets

Développement web côté serveur, CMS

bjour les alsaciens!
voila un dessin vaut mieux que des mots donc j'ai la table adresse qui contientt la clé etragère de la table abonne et la table operateur

seulement j'aimerais juste inserer un nouvel operateur (idop,nomop,contact1,tel,fax) avec les elements de son adresse qui se trouve dans la table adresse(id adresse,adr_ligne1,adr_ligne2,adrcp,adrville)
seulement la table adresse contient 2 cles etrangères ( #idop, et #idabonne)
pour l'instant je ne m'occupe pas d'abonne ! c''est à part sauf que ma requete passe pas

voici mes tables pour de vrai
CREATE TABLE `adresse` (
  `ID_ADR` int(11) NOT NULL,
  `ID_ABONNE` int(11) NOT NULL,
  `ID_OP` int(11) NOT NULL,
  `ADR_LIGNE1` char(75) DEFAULT NULL,
  `ADR_LIGNE2` char(75) DEFAULT NULL,
  `ADR_CP` decimal(5,0) DEFAULT NULL,
  `ADR_VILLE` char(35) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `operateur` (
  `ID_OP` int(11) NOT NULL,
  `NOM_OP` varchar(155) NOT NULL,
  `EMAIL_OP` char(255) DEFAULT NULL,
  `CONTACT1` char(55) DEFAULT NULL,
  `CONTACT2` char(55) DEFAULT NULL,
  `CONTACT3` char(55) DEFAULT NULL,
  `TEL_OP` varchar(15) NOT NULL,
  `FAX_OP` varchar(15) NOT NULL
) 
CREATE TABLE `abonne` (
  `ID_ABONNE` int(11) NOT NULL,
  `NOM_ABONNE` varchar(55) DEFAULT NULL,
  `PRENOM_ABONNE` varchar(55) DEFAULT NULL,
  `EMAIL_ABONNE` char(255) DEFAULT NULL
)


<?php
include('haut.php');
include('connect.php');
?>		
<section>
	<article>
		<header>
		<h2>Ajouter Un Op&eacute;rateur</h2>
		</header>

<form class="form " action="#" method="POST"  >
<label >Nom Operateur: </label>
<input type="text" name="NOMOP" required />
<label>Email Operateur: </label>
<input type="EMAIL" name="EMAILOP" required  />
<label for="CONT1">CONACT1 </label>
<input type="text" name="CONT1" required />
<label for="CONT2">CONACT2 </label>
<input type="text" name="CONT2"  />
<label for="CONT3">CONACT3 : </label>
<input type="text" name="CONT3"   />
<label>TELEPHONE : </label>
<input type="tel" name="TELT" required  />
<label>FAX : </label>
<input type="tel" name="TELF"   />
<label>Adresse 1: </label>
<input type="text" name="adr1" required  />
<label for="adr2">Adresse 2: </label>
<input type="text" name="adr2"  />
<label for="adrcp">Adresse CP</label>
<input type="text" name="adrcp"  />
<label for="adrv">Adresse VILLE: </label>
<input type="text" name="adrv"   />
 <input type="submit" value="Ajouter" class="clear" name="Ajouter" >
</form>
<br/>
<?php
// AJOUT D'UN OPERATEUR
$con=pdoconnect();
	extract($_POST);
	if ( isset($_POST['Ajouter']) 
AND isset($_POST['NOMOP']) AND isset($_POST['EMAILOP']) AND isset($_POST['CONT1']) AND isset($_POST['CONT2']) 
AND isset($_POST['CONT3'])AND isset($_POST['TELT']) AND isset($_POST['TELF']) 
AND isset($_POST['adr1']) AND isset($_POST['adr2']) AND isset($_POST['adrcp']) AND isset($_POST['adrv']) 
AND !empty($_POST['NOMOP']) AND !empty($_POST['EMAILOP']) AND !empty($_POST['CONT1']) AND !empty($_POST['CONT2']) 
AND !empty($_POST['CONT3']) AND !empty($_POST['TELT']) AND !empty($_POST['TELF']) 
AND !empty($_POST['adr1']) AND !empty($_POST['adr2']) AND !empty($_POST['adrcp']) AND !empty($_POST['adrv'])   )
		
	{
$req=$con->prepare('INSERT INTO operateur (NOM_OP, EMAIL_OP, CONTACT1, CONTACT2, CONTACT3, TEL_OP, FAX_OP)
				VALUES(:NOMOP,:EMAILOP,:CONT1,:CONT2,:CONT3,:TELT,:TELF)') 
or exit(print_r($con->errorInfo()));
	$req->bindValue(':NOMOP',$_POST['NOMOP'],PDO::PARAM_STR);
	$req->bindValue(':EMAILOP',$_POST['EMAILOP'],PDO::PARAM_STR);
	$req->bindValue(':CONT1',$_POST['CONT1'],PDO::PARAM_STR);
	$req->bindValue(':CONT2',$_POST['CONT2'],PDO::PARAM_STR);
	$req->bindValue(':CONT3',$_POST['CONT3'],PDO::PARAM_STR);
	$req->bindValue(':TELT',$_POST['TELT'],PDO::PARAM_STR);
	$req->bindValue(':TELF',$_POST['TELF'],PDO::PARAM_STR);

	$req->execute();
	$lastid = $con->lastInsertId(); //recuperation de l'id de la table operateur dont je viens d'insérer les données
	//Préparation de la requête pour insertion l'adresse
$req = $con->prepare('INSERT INTO adresse (ID_OP,ADR_LIGNE1,ADR_LIGNE2,ADR_CP,ADR_VILLE)
							VALUES(:lastid, :adr1,:adr2,adrcp,adrv)');
//sachant que la table adresse en vrai (ID_ADR,ID_ABONNE,ID_OP,ADR_LIGNE1,ADR_LIGNE2,ADR_CP,ADR_VILLE) mais j en veux pas id abonne  et je sais pas comment faire 
$req->bindParam(':lastid', $lastid);
$req->bindParam(':adr1', $_POST['adr1']);
$req->bindParam(':adr2', $_POST['adr2']);
$req->bindParam(':adrcp', $_POST['adrcp']);
$req->bindParam(':adrv', $_POST['adrv']);
 //exécution de la requête pour insertion du mot
$req->execute();
 //print_r($con->errorInfo());
	echo"L OPERATEUR :  ".$_POST['NOMOP']." <b> &agrave; bien &eacute;t&eacute; ajout&eacute;, Veuillez r&eacute;actualiser la page pour la voir svp </b>";
// Fermeture de la connexion
$req->closeCursor();
	
	}	
?>
      	</article> 
 <p> <a href="gestionop.php"> Retour au menu de gestion Principal des Op&eacute;rateurs </a> </p>	
	</article> 
</section>	        
</body>
</html>


RESULTAT MSG ERREUR comme quoi le nombre de param ne match pas
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\wamp64\www\ALLAHYARAB\ajouter-op.php on line 73
c'est bon j'ai pas vu que dans cette ligne j'ai omis :
	VALUES(:lastid, :adr1,:adr2,adrcp,adrv)');


par contre il me dit que id abonne ne peux pas etre null
donc j'ai redifinis null par def au niv de phpmyadmin et ca passe
par contre il faut bien le mettre dans la requete insert
$req = $con->prepare('INSERT INTO adresse (ID_ABONNE,ID_OP,ADR_LIGNE1,ADR_LIGNE2,ADR_CP,ADR_VILLE)
VALUES(null,:lastid, :adr1,:adr2,:adrcp,:adrv)');


merci les couleurs du code m'ont aide