Problème d'insertion de données

Eléphant du PHP | 60 Messages

15 févr. 2006, 11:20

Bonjour !

J'ai un problème pour ajouter des données dans ma base...

J'ai déjà tout vérifié, les variables fonctionnent, je ne trouve vraiment pas le problème !!
<?
$titre = $_POST['titre'];
$message_court = $_POST['message_court'];
$message_long = $_POST['message_long'];
$auteur = $_POST['auteur'];
$date = date("Y-m-d H:i:s");

$titre=addslashes($titre);
$message_court=addslashes($message_court);
$message_long=addslashes($message_long);
$auteur=addslashes($auteur);

if (empty($titre) or empty($message_court) or empty($message_long) or empty($auteur))
{
	echo "<script language='Javascript'> alert('Veuillez remplir tous les champs !') </script>";
	echo "<script language='Javascript'> document.location.href='ajouter_news.php' </script>";
}
else
{
	$db = mysql_connect('localhost','intranet' ,'MotDePasse');
	$mysql_db="intranet";
	mysql_select_db($mysql_db,$db);
	
	$requete = "INSERT INTO news VALUES('','$titre','$message_court','$message_long','$date','$auteur')";
	mysql_query($requete) or die ("Erreur d'écriture dans la base");
	
	mysql_close();
}
?>
Vous voyez une erreur ??
J'ai fais un echo de la variable $requete, c'est OK pourtant...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 févr. 2006, 11:27

Tu as une erreur ou l'insertion ne se fait pas ?

Essaies d'exécuter directement ta requête à partir de phpMyAdmin pour voir si elle fonctionne dans un premier temps.

Sinon pour ta requête, privilégies :

Code : Tout sélectionner

INSERT INTO news(id,titre,message_court,message_long,date,auteur) VALUES('','$titre','$message_court','$message_long','$date','$auteur')
et non

Code : Tout sélectionner

INSERT INTO news VALUES('','$titre','$message_court','$message_long','$date','$auteur')
Ta partie :
if (empty($titre) or empty($message_court) or empty($message_long) or empty($auteur)) 
{ 
    echo "<script language='Javascript'> alert('Veuillez remplir tous les champs !') </script>"; 
    echo "<script language='Javascript'> document.location.href='ajouter_news.php' </script>"; 
}
doit être
if (empty($titre) || empty($message_court) || empty($message_long) || empty($auteur)) 
{ 
echo "
<script type='text/javascript'>
alert('Veuillez remplir tous les champs !'); 
document.location.href='ajouter_news.php';
</script>";
}

Eléphant du PHP | 60 Messages

15 févr. 2006, 11:57

J'ai fais un peu tout ce que t'as dis...

En insérant manuellement les données à partir de phpMyAdmin, j'ai pu comparer et tout...

la bonne solution est simplement :
$requete = "INSERT INTO news VALUES (NULL,'$titre','$message_court','$message_long','$date','$auteur')";
C'est que où il y a le champs de l'ID, il me fallait mettre NULL au lieu de ''

Je ne sais pas pourquoi mais bon...


Merci à toi charabia ;)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 févr. 2006, 12:05

C'est bizarre, ton champ ID est de quel type dans ta base ? c'est bien un auto incrément et clé primaire ?

Eléphant du PHP | 60 Messages

15 févr. 2006, 12:11

Oui pourtant :?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 févr. 2006, 12:12

Alors là lol c'est en effet bizarre. Moi de mon côté je fais les '' et ça fonctionne très bien...Bon si ça marche c'est l'essentiel ;)

tom572007
Invité n'ayant pas de compte PHPfrance

27 févr. 2006, 18:48

G le même type d'erreur avec un pb d'insertion dans la base
J'utilise cette classe pour toutes mes opérations sur base de données:
<?php
class BDD {

private $id_conn;
private $serveur;
private $user;
private $mdp;
private $nombase;
private $result;
public $row;
public $numrows;
public $query;


function __construct($serveur='localhost', $user='root', $mdp='', $nombase='edt') {
	$this->serveur=$serveur;
	$this->user=$user;
	$this->mdp=$mdp;
	$this->nombase=$nombase;
	$this->row=array();
	}

function connection() {
$this->id_conn=mysql_connect($this->serveur, $this->user, $this->mdp)
or die('Erreur connexion serveur!');

mysql_select_db($this->nombase, $this->id_conn)
or die("Erreur selection BdD!");

return ($this->requete());
}

function requete() {
$this->result=mysql_query($this->query)
or die("erreur SQL!");
$i=0;
while($this->row[$i]=mysql_fetch_array($this->result, MYSQL_BOTH)) {
$i++;
}
$this->numrows=mysql_num_rows($this->result);
mysql_free_result($this->result);
return ($this->row);
}
}

Puis j'effectue le code suivant dans le prog principal:


<?php
include('classes2.php');
$nom_mat=$_POST['nom_mat'];
$id_mat=$_POST['id_mat'];
$nb_cours=$_POST['nb_cours'];

$matiere=new BDD('localhost', 'root', '', 'edt');
$matiere->connection();

$matiere->query='INSERT INTO `matieres` (`id_mat` , `nom_mat` , `nb_cours`) VALUES ('$id_mat','$nom_mat','$nb_cours') ';

$matiere->requete();
?>
Et il me dit erreur sql, pourtant la requête s'execute bien quand je la teste avec phpmyadmin. Le champ query n'est pas vide.
Peut être ai-je fait une erreur assez grossière que vous pourrez m'aider à résoudre, sinon, je ne vois pas de solution apparente...