mysql_fetch_assoc() qui retourne une erreur

Eléphant du PHP | 75 Messages

10 janv. 2010, 01:18

Bonsoir,

Je suis entrain de coder la partie édition d'un système de news et j'ai un problème.
	/* Modifier news */
	if(isset($_GET['modifier_news'])){
		$id = intval($data['id']);
		$news_query = mysql_query('SELECT * FROM news WHERE id=".$id."')
			or die('Erreur query');
		$data = mysql_fetch_assoc($news_query)
			or die('Erreur assoc');
	}
	/* Insertion de news */
	elseif(isset($_POST['titre']) && isset($_POST['content'])){
		$titre = $_POST['titre'];
		$contenu = $_POST['content'];
		
		if(empty($titre) || empty($contenu)){
			echo 'Un ou plusieurs champs sont vides.';
		}
		else{
			require 'config.php';
			mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
			mysql_select_db(DB_BDD);
			
			$_POST['content'] = htmlentities($_POST['content']);
			
			$titre_sql = mysql_escape_real_string($titre);
			$contenu_sql = mysql_escape_real_string($contenu);
			
			$insertion = mysql_query("INSERT INTO `news` (id,titre,contenu,categorie,timestamp,date) VALUES ('','$titre_sql','$contenu_sql','','','')")
				or die('Erreur SQL');
		}
Le script me renvoie "Erreur assoc" mais je ne sais pas pourquoi.

Si quelqu'un peut m'aiguiller.

Merci. :)

Eléphant du PHP | 451 Messages

10 janv. 2010, 01:20

Regarde ta requête mysql_query tu as oublié quelque chose au niveau de $id

Eléphant du PHP | 75 Messages

10 janv. 2010, 01:45

Pour le $id, je ne dois pas laisser le champ vide du faite qu'il soit ma clé primaire ?

Petit nouveau ! | 6 Messages

10 janv. 2010, 02:10

Dans ton interrogation sql le $id n'est pas remplacé avec sa valeur
Essaie comme ça pour voir aussi la erreur mysql

$news_query = mysql_query("SELECT * FROM news WHERE id='".$id."'")
or die('Erreur query: ' . mysql_error());

Premium
Invité n'ayant pas de compte PHPfrance

10 janv. 2010, 04:08

"SELECT * FROM news WHERE id={$id}"

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 janv. 2010, 20:18

Ta requête est délimitée par des apostrophes, résultat, les variables qui s'y trouvent ne sont pas remplacées par leurs valeurs, il faut donc sortir les variables. C'est ce que tu as commencé à faire en ajoutant les points pour la concaténation, mais si tu ne fermes pas les chaines de début et fin, ça reste toujours la même chaine (chais pas si c'est clair :))
echo 'SELECT ... FROM news WHERE id=".$id."'; // affiche : SELECT ... FROM news WHERE id=".$id."

echo 'SELECT ... FROM news WHERE id="'.$id.'"'; // affiche : SELECT ... FROM news WHERE id="36"

echo 'SELECT ... FROM news WHERE id='.$id; // affiche : SELECT ... FROM news WHERE id=36
C'est cette dernière syntaxe qui est la plus adaptée si ton champ id est un champ numérique
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 75 Messages

10 janv. 2010, 20:43

Merci beaucoup, problème résolue. ;)