Page 1 sur 1

Conditions dans une insertions SQL

Posté : 09 nov. 2016, 11:32
par wil974
Bonjour,

je me retourne une nouvelle fois vers vous pour le probleme suivant:

voici mon code :
$req = $bdd->prepare('INSERT INTO prevision(id, name, address, lat, lng, type, commune, date, url_lieu, img, categorie, famille) VALUES("", :name, :adress, :gpslat, :gpslng, :type, :commune, CURDATE(), "nc.pdf", "nc.jpg", "4", "SANS OBJET")');
$req->execute(array(
'name' => $name,
'adress' => $adress,
'gpslat' => $gpslat,
'gpslng' => $gpslng,
'type' => $type,
'commune' => $commune,
));

if (!$req)
{
echo "Statut BDD: Erreur d'insertion dans la Base de Données, Veuillez réessayer, si le problème persiste veuillez contacter l'Administrateur du site.";
echo '<a href="creationpoi1.html"> <input class="waves-effect waves-light btn" style="width:100%;background-color:#0a0b6e" type="submit" value="Nouvelle creation" /></a>';

}
else
{
echo "<font color='#0a0b6c'><h5>";
echo "Le point d'interet : $type</br></br>";
echo "Voici les information saisie :</br></br>";	
echo "Nom : $name</br>";
echo "Adresse : $adress</br> sur la commune de: $commune</br></br>";
echo "Latitude : $gpslat </br>longitude: $gpslng</br></br>";
echo "A bien été rajouté sur la FIREMAPS</br></br>";
echo "<font color='red'><h6>Statut BDD: mise a jour rèussi.</br></br></h6></font>";

}

?>
le probleme est le suivant :

je voudrais que si l'insertion dans la bdd est bonne cela affiche tout ce qui est apres le else , sinon si l'insertion ne ce fait pas
on affiche apres le if($req)

voila , je vous remercie par avance de vos solutions

Re: Conditions dans une insertions SQL

Posté : 09 nov. 2016, 13:32
par ynx
Salut,

La méthode execute de PDO retourne le booléen TRUE si la requête s'est exécutée sans erreur, FALSE sinon.
Il faut donc utiliser ce retour pour ta condition.

http://php.net/manual/fr/pdostatement.execute.php

Bonne journée,

Re: Conditions dans une insertions SQL

Posté : 09 nov. 2016, 18:42
par Patriboom
Salut,

j'ai pris option, à la suite de plusieurs suggestions, de traiter les résultats réussis d'abord puis les manqués.
En PHP, ça se dit:
if ($blabla) { } else {}
plutôt que
if (!blabla) { } else {}
Dans ton cas, ça simplifierait le code:
if (execute(array('name' => $name,'adress' => $adress,'gpslat' => $gpslat,'gpslng' => $gpslng,'type' => $type,'commune' => commune,'')))
{
echo "<font color='#0a0b6c'><h5>";
echo "Le point d'interet : $type</br></br>";
echo "Voici les information saisie :</br></br>";	
echo "Nom : $name</br>";
echo "Adresse : $adress</br> sur la commune de: $commune</br></br>";
echo "Latitude : $gpslat </br>longitude: $gpslng</br></br>";
echo "A bien été rajouté sur la FIREMAPS</br></br>";
echo "<font color='red'><h6>Statut BDD: mise a jour rèussi.</br></br></h6></font>";

}
else
{
echo "Statut BDD: Erreur d'insertion dans la Base de Données, Veuillez réessayer, si le problème persiste veuillez contacter l'Administrateur du site.";
echo '<a href="creationpoi1.html"> <input class="waves-effect waves-light btn" style="width:100%;background-color:#0a0b6e" type="submit" value="Nouvelle creation" /></a>';

}

D'ailleurs, je remarque que ton execute se termine par une virgule. Est-ce normal?
Es-tu sût que ton « execute » ne produit aucune erreur?
Vois:
execute(array(
'name' => $name,
'adress' => $adress,
'gpslat' => $gpslat,
'gpslng' => $gpslng,
'type' => $type,
'commune' => $commune,   //Ici, $commune est suivi d'une virgule, puis de rien avant la fermeture des parenthèses.
));