Aucun changement n'est effectué sur ma base de données

Fermé
Ihab25 Messages postés 4 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 22 novembre 2015 - 3 juil. 2015 à 12:53
Ihab25 Messages postés 4 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 22 novembre 2015 - 15 juil. 2015 à 13:46
Bonjour,

J'utilise un formulaire PHP pour modifier des données sur ma base mais je rencontre un problème:
rien ne se fait sur ma base et pourtant tous me semble normale,

Pourriez vous m'aider svp?

Voici mes trois pages:

<?php

//connexion au serveur

$serveur= 'localhost';
$database= 'assos';
$username= 'root';
$password= '';

$cnx= $mysqli= new mysqli($serveur,$username, $password,$database);



if ($mysqli-> connect_error){
die('Echec de la connexion:('. $mysqli->connect-errno.')'.$mysqli_connect_error);
}


$sql= "SELECT * FROM association as a LEFT OUTER JOIN association_mission as am ON a.id_a= am.id_a LEFT OUTER JOIN mission as m ON m.id_m= am.id_m ";
$requete= $mysqli-> query ($sql);




while ($result= $requete -> fetch_object ()){
echo (
"<div align=\"center\">"
.$result->nom_a."</br>".$result->sigle_a. "</br>".$result->nom_m
."</br><a href=\"modificationTest2.php?idAssosmission=".$result->id_a_m."\">modifier</a></div>\n"
);

}




?>


Deuxième page
<!DOCTYPE html PUBLIC>
<html>
<head>
<meta http-equiv="Content-Type" content= "text/html; charset=utf-8" />
<title> Modification2 </title>
</head>

<body>

<?php

//connexion au serveur

$serveur= 'localhost';
$database= 'assos';
$username= 'root';
$password= '';

$cnx= $mysqli= new mysqli($serveur,$username, $password,$database);

if ($mysqli-> connect_error){
die('Echec de la connexion:('. $mysqli->connect-errno.')'.$mysqli_connect_error);
}



//Récupération des données

$id_a_m =$_GET["idAssosmission"];
echo $id_a_m;
//$id_m =$_GET["idMission"];
//echo $id_m;

$sql= 'SELECT * FROM association as a LEFT OUTER JOIN association_mission as am ON a.id_a= am.id_a LEFT OUTER JOIN mission as m ON m.id_m= am.id_m

WHERE am.id_a_m= "'.$id_a_m.'"';

//$sql= 'SELECT * FROM association as a LEFT OUTER JOIN association_mission as am ON a.id_a= am.id_a LEFT OUTER JOIN mission as m ON m.id_m= am.id_m';


//exécution de la requête SQL:
$requete = $mysqli->query($sql) or die( 'Erreur'.$requete.''.$mysqli->error) ;



//affichage des résultats, pour savoir si l'insertion a marchée:

if($requete)
{


?>
<form id="modificationTest2" name="form1" method= "post" action= "modificationTest3.php"/>
<input type="hidden" name="idAssosmission" value= "<?php echo($id_a_m); ?>">
<p>
<label> Denomination:
<input type = "text" name= "nom_a" >
</label>
</p>
<p>
<label> Sigle:
<input type = "text" name= "sigle_a" >
</label>
</p>
<p>
<label> Mission:
<input type = "text" name= "nom_m" >
</label>
</p>
<p>
<label>
<input type = "submit" name= "bouton" value= "envoyer">
</label>
</p>
</form>
<?php
}
?>
</body>
</html>

Troisième page
<?php

//connexion au serveur

$serveur= 'localhost';
$database= 'assos';
$username= 'root';
$password= '';

$cnx= $mysqli= new mysqli($serveur,$username, $password,$database);

if ($mysqli-> connect_error){
die('Echec de la connexion:('. $mysqli->connect-errno.')'.$mysqli_connect_error);
}

//Récupération des données

//$id= 'SELECT id_a_m FROM association_mission';

$nom_a = $_POST['nom_a'];
$sigle_a = $_POST['sigle_a'];
$nom_m = $_POST['nom_m'];

$id_a_m = $_POST['idAssosmission'];

$id_a= 'SELECT id_a FROM association_mission';
$requete = $mysqli->query($id_a) or die( 'Erreur'.$requete.''.$mysqli->error ) ;

$id_m ='SELECT id_m FROM association_mission';

$requete = $mysqli->query($id_m) or die( 'Erreur'.$requete.''.$mysqli->error ) ;



/*$sql= 'C personne
SET nom ="'.$nom.'",
prenom ="'.$prenom.'",
adresse ="'.$adresse.'"
WHERE id= "'.$id.'"';*/
if (empty($nom_a) OR empty($sigle_a) OR empty($nom_m))
{
echo " Tous les champs doivent etre remplis";
}

else
{
echo "Recapitulatif des informations saisies</br>\n

Denomination : ".$nom_a."</br>\n
Sigle : ".$sigle_a."</br>\n
Mission : ".$nom_m."</br>\n

";
//$sql= 'SELECT * FROM association as a LEFT OUTER JOIN association_mission as am ON a.id_a= am.id_a LEFT OUTER JOIN mission as m ON m.id_m= am.id_m

//WHERE am.id_a_m= "'.$id_a_m.'"';






$sql2= 'UPDATE association
SET nom_a = "'.$nom_a.'",
sigle_a ="'.$sigle_a.'"
WHERE id_a = "'.$id_a.'"'
;


$requete = $mysqli->query($sql2) or die( 'Erreur'.$requete.''.$mysqli->error ) ;




$sql3= 'UPDATE mission
SET nom_m = "'.$nom_m.'"
WHERE id_m = "'.$id_m.'"';
$requete = $mysqli->query($sql3) or die( 'Erreur'.$requete.''.$mysqli->error ) ;









//exécution de la requête SQL:
//$requete = $mysqli->query($sql) or die( 'Erreur'.$requete.''.$mysqli->error) ;



//affichage des résultats, pour savoir si l'insertion a marchée:

if($requete)
{
echo("La modification a ete correctement effectuee") ;
}
else
{
echo("La modification a echouee") ;
}
}


?>


Je vous remercie d'avance,
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juil. 2015 à 17:14
Salut,

Je te conseil d'afficher les requête que tu exécutes car celles-ci ne semble pas correctes.

Par exemple dans la troisième page, la requête contenu dans $sql2 utilise la variable $id_a :
$sql2= 'UPDATE association 
				SET nom_a	= "'.$nom_a.'",
				sigle_a	="'.$sigle_a.'" 
				WHERE id_a = "'.$id_a.'"'
				;

Or la variable $id_a contient une requête sql et non un identifiant :
$id_a= 'SELECT id_a FROM association_mission';

La requête $sql2 n'est donc pas correcte.

La requête contenu dans la variable $id_a est exécutée mais le résultat n'est jamais récupérer (fetch) ce qui n'a aucun intérêt. Tu dois récupérer le résultat de cette requête pour ensuite l'utiliser dans la requête contenu dans $sql2.

Bonne journée,
0
Ihab25 Messages postés 4 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 22 novembre 2015
15 juil. 2015 à 12:33
Je te remercie, effectivement, les requêtes ne exécutaient pas , j'ai pris en considération tes remarques, merci

Toutefois je rencontre un autre problème,

J'ai voulu faire un formulaire pour chaque table,

un formulaire pour la table Assos, un autre pour la table assos-thema, la troisième table thematique étant dèjé pré-rempli,

Je voulais récupérer les id de l'assos entrée, puis les thématique cochée pour les insérer dans la table assos_théma,

Le problème c'est que ça marche pas, j'arrive à récupérer seulement l'id de la dernière théma saisie, moi je voulais toute celle cochées,

Merci pour ton aide,
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
15 juil. 2015 à 12:49
Salut,

Je suppose que le problème vient du fait que tes cases à cocher possèdent toutes le même attribut nom, dans ce cas seule la dernière case cochée est envoyée.

La solution est de nommer tes cases à cocher sous forme d'un tableau (en ajoutant des [] après le nom) :
<input type="checkbox" name="thematique[]" value="t1"> Thématique 1<br>
<input type="checkbox" name="thematique[]" value="t2"> Thématique 2


Ainsi ton paramètre php $_GET['thematique'] ou $_POST['thematique'] sera sous la forme d'un tableau contenant les valeurs des différentes cases cochées.

Bonne journée
0
Ihab25 Messages postés 4 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 22 novembre 2015
15 juil. 2015 à 13:46
Merci pour votre aide,

J'ai ce message d'erreur
SELECT id_t FROM thematique WHERE nom_t = "sport"ErreurCannot add or update a child row: a foreign key constraint fails (`testdb`.`association_thematique`, CONSTRAINT `association_thematique_ibfk_3` FOREIGN KEY (`id_t`) REFERENCES `thematique` (`id_t`))




$serveur= 'localhost';
$database= 'testdb';
$username= 'root';
$password= '';

$cnx= $mysqli= new mysqli($serveur,$username, $password,$database);

if ($mysqli-> connect_error){
die('Echec de la connexion:('. $mysqli->connect-errno.')'.$mysqli_connect_error);
}

//Récupération des données

$id_t=$_GET["idThematique"];
$id_a_rec =$_GET["idAss"];
echo ($id_a_rec);

$sql= 'SELECT *
FROM thematique ';




//exécution de la requête SQL:
$requete = $mysqli->query($sql) or die( 'Erreur'.$requete.''.$mysqli->error) ;


//affichage des résultats, pour savoir si l'insertion a marchée:

if($requete)
{


?>
<form id="insertion3AssThema" name="form1" method= "post" action= "insertion4AssThema.php"/>
<input type="hidden" name="id_t" value= "<?php echo($id_t); ?>">
<input type="hidden" name="id_a" value= "<?php echo($id_a_rec); ?>">
<p>
<label> <input type="checkbox" name="thematique[]" value="sport" />sport<br></label>
</p>
<p>
<label> <input type="checkbox" name="thematique[]" value="culture" />culture<br></label>
</p>
<p>
<label> <input type="checkbox" name="thematique[]" value="sante" />sante<br></label>
</p>
<p>
<label> <input type="checkbox" name="thematique[]" value="loisirs" />loisirs<br></label>
</p>
<p>
<label>
<input type = "submit" name= "bouton" value= "envoyer">
</label>
</p>
</form>
<?php
}
?>
</body>
</html>


<?php

//connexion au serveur

$serveur= 'localhost';
$database= 'testdb';
$username= 'root';
$password= '';

$cnx= $mysqli= new mysqli($serveur,$username, $password,$database);

if ($mysqli-> connect_error){
die('Echec de la connexion:('. $mysqli->connect-errno.')'.$mysqli_connect_error);
}

//Récupération des données



$id_a_rec = $_POST['id_a'];


//$id_t = $_POST["id_t"];

foreach($_POST['thematique'] as $valeur)
{
$sql1= 'SELECT id_t FROM thematique WHERE nom_t = "'.$valeur.'"';
$requete = $mysqli->query($sql1) or die( 'Erreur'.$requete.''.$mysqli->error) ;
echo ($sql1);
$sql= 'INSERT INTO association_thematique ( id_a, id_t)
VALUE ("'.$id_a_rec.'", id_t)';
$requete = $mysqli->query($sql) or die( 'Erreur'.$requete.''.$mysqli->error) ;
}

//exécution de la requête SQL:
//$requete = $mysqli->query($sql) or die( 'Erreur'.$requete.''.$mysqli->error) ;



//affichage des résultats, pour savoir si l'insertion a marchée:

if($requete)
{
echo("La modification a ete correctement effectuee") ;
}
else
{
echo("La modification a echouee") ;
}


?>
0