8796 sujets

Développement web côté serveur, CMS

salut à tous!
j'ai un petit problème avec un INSERT INTO dans mon php. Voici d'abord mon code:


<?php

	require "config.php";
	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
	mysql_select_db(DB_BDD);
	extract($_POST); 
	$sql="INSERT INTO galerie (img,categorie) VALUES ('{$img['name']}','$liste')";
	$req = mysql_query($sql) or die('Erreur SQL!<br/>'.$sql.'<br/>'.mysql_error());
	
?>


Or dans ma BDD il apparait plein de champs vides:
upload/25339-Image2.png

qu'est ce qui ce passe?! merci!
Pour ne pas surcharger je n'ai pas mit le reste du code html/php, si vous le voulez dites le Smiley cligne

++
Modifié par Baptiste08 (27 Dec 2009 - 15:31)
j'ai essayé simplement comme ça:

<?php

	require "config.php";
	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
	mysql_select_db(DB_BDD);
	extract($_POST); 
	mysql_real_escape_string();
	$sql="INSERT INTO galerie (img,categorie) VALUES ('{$img['name']}','$liste')";
	$req = mysql_query($sql) or die('Erreur SQL!<br/>'.$sql.'<br/>'.mysql_error());
	
?>


j'ai moins de trous mais j'en ai encore un peu!!
Ou alors il faudrait faire apres la requete une autre requete qui supprimerais par exemple les lignes qui n'ont rien dans la case IMG... or ça je n'arrive pas, je trouve rien dans la doc, tout d'abord car je ne sais pas comment ça s'apelle cette colonne IMG!

@+
salut!
ca marche nickel merci Smiley cligne
voilà la solution terminée:

	require "config.php";
	mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
	mysql_select_db(DB_BDD);
	extract($_POST); 
	$sql="INSERT INTO galerie (img,categorie) VALUES ('{$img['name']}','$liste')";
	mysql_real_escape_string($img['name']);
	mysql_real_escape_string($liste);
	$req = mysql_query($sql) or die('Erreur SQL!<br/>'.$sql.'<br/>'.mysql_error());
Le problème c'est que si je vais sur la page d'upload du fichier et que je quitte cette page ensuite sans rien faire, ça me remplis une ligne vide...
j'ai donc fais une requete qui supprime les ligne si il n'y a pas d'image enregistrée dedans, donc rien dans ma colonne "img".
Voilà ce que ça donne:

        $sql2="DELETE FROM galerie WHERE img = 0";
	mysql_query($sql2) or die('Erreur SQL!<br/>'.$sql2.'<br/>'.mysql_error());	

(j'ai appelé $sql2 pour que ça ne gène pas la première requête qui enregistre les données.
Mais le problème arrive ici: certains fichiers ne sont plus enregistrés dans ma base! des fois ça marche, des fois non... là j'avoue ne pas comprend car il s'agit de 2 fichiers jpg semblables de même dimensions...

Merci de m'aider!!
@+
Je pense que ça doit venir du img = 0 Je sais pas si c'est ça qui veux dire si la colonne est vide...
car pour que ça marche en fait, il faut que le nom du fichier commence par un chiffre... bizarre non?!

@+
et si au lieu de traiter les conséquences tu prenais le problème à la source ?

if ($img<>0){

tu mets ici le code d'insertion d'image dans la base

}

donc comme ça quand t'as pas de nom d'image, t'as pas d'insertion dans la base. Evidemment ça c'est le principe, à toi de faire un code propre avec tes variables à toi en gros rajoute une ligne de code qui explique que quand tu quittes il ne faut pas enregistrer. Tu peux aussi mettre une variable cachée et faire une commande style

if ($validation=="valeur si vrai"){

tu mets ici le code d'insertion d'image dans la base

}
Modifié par shaihulud1979 (30 Dec 2009 - 17:39)