par
moogli » 21 déc. 2012, 12:31
on va commencer par commenter ton code
<?php
function lier()
{
// Connexion à la base de données
$base = mysqli_connect('localhost', 'root','','funenbulles');
// Vérification et éxécution de la requête en cas de non problème
if (isset($_POST['bede']) & (isset($_POST['auteur'])))
{
//Requête permettant la vérification de l'existence ou non de la liaison
$query_test = "SELECT * FROM `ecrire` WHERE `CodeBd` like '".$_POST['bede']."' AND WHERE `CodeAuteur` like '".$_POST['auteur']."'";
$result_test = mysqli_query($base ,$query_test);
// Test de l'existence de l'auteur
if ($result_test = false) // cette condition sera TOUJOURS VRAIE simplement parce que tu réalise une affectation et non une comparaison (utilise donc le ===)
{
try
{ //Exécution de la liaison
$query_lier = "INSERT INTO `ecrire`(`CodeBd`, `CodeAuteur`) VALUES ('".$_POST['bede']."','".$_POST['auteur']."')";
$result_lier = mysqli_query($base ,$query_lier);
header ('location://auteur.php'); // A mettre encommentaire lorsque l'on veux tester, de plus // en début de lien, si cela fonctionne c'est que les navigateur sont bien sympa. soit tu utilise un simple / et dans ce cas direction la racine du "root" (=> http://localhost en local). : a revoir.
}
catch (Exception $SQL)
{
throw new Exception('Problème SQL');
}
}
else
{
header ('location://lier_exist.php'); // a commenter quand on test !
}
}
else
{
echo ($_POST['bede']."vide"); // message d'erreur correct à utiliser plutôt ;)
}
}
?>
Fonctionnellement tu n'utilise pas les infos de ta requête il est préférable de faire un select count(*).
=> $query_test = "SELECT count(*) as FROM `ecrire` WHERE `CodeBd` like '".$_POST['bede']."' AND WHERE `CodeAuteur` like '".$_POST['auteur']."'";
un code dans se style
<?php
function lier(){
// Connexion à la base de données
$base = mysqli_connect('localhost', 'root','','funenbulles');
// Vérification et éxécution de la requête en cas de non problème
if (isset($_POST['bede']) & (isset($_POST['auteur']))){
try{
//Requête permettant la vérification de l'existence ou non de la liaison
$query_test = "SELECT count(*) as nb FROM ecrire WHERE CodeBd like '".mysqli_real_escape_string($_POST['bede'])."' AND WHERE CodeAuteur like '".mysqli_real_escape_string($_POST['auteur'])."'";
$result_test = mysqli_query($base ,$query_test);
// Test de l'existence de l'auteur
if ($result_test !== false){ // cette condition sera TOUJOURS VRAIE simplement parce que tu réalise une affectation et non une comparaison (utilise donc le ===)
//Exécution de la liaison
$data = mysqli_fetch_assoc(result_test
if($data['nb'] === 0) {
$query_lier = "INSERT INTO `ecrire`(`CodeBd`, `CodeAuteur`) VALUES ('".$_POST['bede']."','".$_POST['auteur']."')";
$result_lier = mysqli_query($base ,$query_lier);
header ('location://auteur.php'); // A mettre encommentaire lorsque l'on veux tester, de plus // en début de lien, si cela fonctionne c'est que les navigateur sont bien sympa. soit tu utilise un simple / et dans ce cas direction la racine du "root" (=> http://localhost en local). : a revoir.
}
else {
header ('location://lier_exist.php'); // a commenter quand on test !
}
}
else{
throw new Exception('Erreur SQL : ' . mysqli_error ($base)));
}
}
catch (Exception $SQL){
throw new Exception('Erreur SQL : ' $SQL->getMessage()));
}
}
else{
echo ($_POST['bede']."vide"); // message d'erreur correct à utiliser plutôt ;)
}
}
?>
@+
on va commencer par commenter ton code
[php]
<?php
function lier()
{
// Connexion à la base de données
$base = mysqli_connect('localhost', 'root','','funenbulles');
// Vérification et éxécution de la requête en cas de non problème
if (isset($_POST['bede']) & (isset($_POST['auteur'])))
{
//Requête permettant la vérification de l'existence ou non de la liaison
$query_test = "SELECT * FROM `ecrire` WHERE `CodeBd` like '".$_POST['bede']."' AND WHERE `CodeAuteur` like '".$_POST['auteur']."'";
$result_test = mysqli_query($base ,$query_test);
// Test de l'existence de l'auteur
if ($result_test = false) // cette condition sera TOUJOURS VRAIE simplement parce que tu réalise une affectation et non une comparaison (utilise donc le ===)
{
try
{ //Exécution de la liaison
$query_lier = "INSERT INTO `ecrire`(`CodeBd`, `CodeAuteur`) VALUES ('".$_POST['bede']."','".$_POST['auteur']."')";
$result_lier = mysqli_query($base ,$query_lier);
header ('location://auteur.php'); // A mettre encommentaire lorsque l'on veux tester, de plus // en début de lien, si cela fonctionne c'est que les navigateur sont bien sympa. soit tu utilise un simple / et dans ce cas direction la racine du "root" (=> http://localhost en local). : a revoir.
}
catch (Exception $SQL)
{
throw new Exception('Problème SQL');
}
}
else
{
header ('location://lier_exist.php'); // a commenter quand on test !
}
}
else
{
echo ($_POST['bede']."vide"); // message d'erreur correct à utiliser plutôt ;)
}
}
?>[/php]
Fonctionnellement tu n'utilise pas les infos de ta requête il est préférable de faire un select count(*).
=> $query_test = "SELECT count(*) as FROM `ecrire` WHERE `CodeBd` like '".$_POST['bede']."' AND WHERE `CodeAuteur` like '".$_POST['auteur']."'";
un code dans se style
[php]<?php
function lier(){
// Connexion à la base de données
$base = mysqli_connect('localhost', 'root','','funenbulles');
// Vérification et éxécution de la requête en cas de non problème
if (isset($_POST['bede']) & (isset($_POST['auteur']))){
try{
//Requête permettant la vérification de l'existence ou non de la liaison
$query_test = "SELECT count(*) as nb FROM ecrire WHERE CodeBd like '".mysqli_real_escape_string($_POST['bede'])."' AND WHERE CodeAuteur like '".mysqli_real_escape_string($_POST['auteur'])."'";
$result_test = mysqli_query($base ,$query_test);
// Test de l'existence de l'auteur
if ($result_test !== false){ // cette condition sera TOUJOURS VRAIE simplement parce que tu réalise une affectation et non une comparaison (utilise donc le ===)
//Exécution de la liaison
$data = mysqli_fetch_assoc(result_test
if($data['nb'] === 0) {
$query_lier = "INSERT INTO `ecrire`(`CodeBd`, `CodeAuteur`) VALUES ('".$_POST['bede']."','".$_POST['auteur']."')";
$result_lier = mysqli_query($base ,$query_lier);
header ('location://auteur.php'); // A mettre encommentaire lorsque l'on veux tester, de plus // en début de lien, si cela fonctionne c'est que les navigateur sont bien sympa. soit tu utilise un simple / et dans ce cas direction la racine du "root" (=> http://localhost en local). : a revoir.
}
else {
header ('location://lier_exist.php'); // a commenter quand on test !
}
}
else{
throw new Exception('Erreur SQL : ' . mysqli_error ($base)));
}
}
catch (Exception $SQL){
throw new Exception('Erreur SQL : ' $SQL->getMessage()));
}
}
else{
echo ($_POST['bede']."vide"); // message d'erreur correct à utiliser plutôt ;)
}
}
?>[/php]
@+