Aller au contenu

  • Choisissez un arrière-plan

update mysql et php [résolu]


2 réponses dans ce sujet

#1
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux

*
MESSAGE POPULAIRE !

Voilà, j'ai un écran d'admin qui affiche un texte et une image. Ma table est la suivante
id de type int autoincrement
name de type varchar(255)
picture de type blob.

Merci de ne pas discuter sur le problème de stockage d'images en base. J'ai mes raisons.

Le select, l'insert, le delete marche parfaitement. J'ai un problème sur l'update avec l'image.
Le form contient un table. Chaque input à un name différent.

<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start();
session_start();
$db = mysql_connect('localhost', ', '');
mysql_select_db('autosurf_ohlala',$db);
	function transfert ($id, $name) {
		$ret = false;
		$img_blob = '';
		$img_taille = 0;
		$img_type = '';
		$img_nom = '';
		$taille_max = 250000;
		// Le fichier a bien été reçu
		if($id=="")
			$img_taille = $_FILES['filename']['size'];
		else
			$img_taille = $_FILES[$_POST['brand'][$id]['filename']]['size'];
		if ( $img_taille > $taille_max ) {
			echo "Trop gros !";
			return false;
		}
		$img_type = $_FILES['fic']['type'];
		$img_nom = $_FILES['fic']['name'];
		if($id=="")
			$img_blob = file_get_contents($_FILES['filename']['tmp_name']);
		else
			$img_blob = file_get_contents($_FILES[$_POST['brand'][$id]['filename']]['tmp_name']);
		if($id=="")
			mysql_query("INSERT INTO `brands` (name, picture) values ('".$name."','".addslashes($img_blob)."')");
		else
			mysql_query("UPDATE `brands` set name='".$name."', picture='".addslashes($img_blob)."' WHERE id_brand=".$id);
		return true;
	}
	if($_SERVER['REQUEST_METHOD']=='POST') {
		$id=$_POST['id'];
		if($id=="") {
			$name=htmlspecialchars($_POST['name'], ENT_QUOTES);
		}
		else {
			$name=$_POST['brand'][$id]['name'];
		}
		if($id=="") {
			$ret=is_uploaded_file($_FILES['filename']['tmp_name']);
			if(($name<>"")&&($ret==1))
				transfert("", $name);
			else
				mysql_query("INSERT INTO `brands` (name) values ('".$name."')");
		}
		else {
			$ret=is_uploaded_file($_FILES[$_POST['brand'][$id]['filename']]['tmp_name']);
			echo(" filename update=".$ret);
			if(($name<>"")&&($filename<>""))
				transfert($id, $name);
			else
				mysql_query("UPDATE `brands` set name='".$name."' WHERE id_brand=".$id);
		}
	}
	else {
		$action = $_GET['action'];
		if($action=="delete") {
			$id = $_GET['id'];
			mysql_query("DELETE FROM `brands` WHERE id_brand=".$id);		
			header("Location: brands.php");
		}
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Administration - Suits Type</title>
<link rel="stylesheet" href="css/styles.css" />
</head>
<body>
<div id="content_left" style="width:200px;margin-left:10px;margin-top:20px">
	<div class="box">				
		<div class="content" id="content">
			<?php include("menu.html"); ?>
		</div>
	</div>
</div>
<div id="content_centre">
	<div class="box" style="width:100%">				
		<div class="content" id="content">
			<form name="send" enctype="multipart/form-data" action="brands.php" method="post">
			<input name="id" />
			<input name="max_file_size" value="250000" />
			<table id="sites" class="display dataTable" >
				<thead>
					<tr>
						<th>ID</th>
						<th>Brand</th>
						<th>Logo</th>
						<th width="100px"></th>
						<th></th>
						<th></th>
					</tr>
				</thead>
				<tbody>
					<?php
						$sql ="SELECT id_brand, name, picture from `brands` ORDER BY 1";
						$req = mysql_query($sql) or die('Erreur SQL !<br>'.mysql_error());
						while ($data = mysql_fetch_array($req)) {
							// ligne delete
							echo('<tr id="o'.$data[id_brand].'">');
							echo('<td>'.$data[id_brand].'</td>');
							echo('<td>'.mb_convert_encoding($data[name], "UTF-8").'</td>');
							echo('<td width="100px">');
							if($data['picture']<>"") {
								echo('<img src="picture.php?type=brand&id='.$data[id_brand].'" width="100px" />');
							}
							echo('</td>');
							echo('<td></td>');
							echo('<td><a onclick="update('.$data[id_brand].', 1);" href="#"><img alt="update" src="pictures/update.png" /></a></td>');
							echo('<td><a href="brands.php?action=delete&id='.$data[id_brand].'" onclick="return(confirm(\'Are you sure you want to delete this entry?\'));"><img alt="delete" src="pictures/delete.png" /></a></td>');
							echo('</tr>
							');
							// ligne mise a jour
							echo('<tr style="display:none" id="u'.$data[id_brand].'">');
							echo('<td>'.$data[id_brand].'</td>');
							echo('<td><input name="brand['.$data[id_brand].'][name]" type="text" value="'.mb_convert_encoding($data[name], "UTF-8").'" /></td>');
							echo('<td width="100px">');
							if($data['picture']<>"") {
								echo('<img src="picture.php?type=brand&id='.$data[id_brand].'" width="100px" />');
							}
							echo('</td>');
							echo('<td><input type="file" name="brand['.$data[id_brand].'][filename]"  size="30" /></td>');
							echo('<td><a onclick="update('.$data[id_brand].', 2);" href="#"><img alt="ok" src="pictures/ok.png" /></a></td>');
							echo('<td><a onclick="update('.$data[id_brand].', 0);" href="#"><img alt="cancel" src="pictures/cancel.png" /></a></td>');
							echo('</tr>
							');
						}
					?>
				</tbody>
				<tfoot>
					<tr>
						<th></th>
						<th><input type="text" name="name"></th>
						<th></th>
						<th><input type="file" name="filename" size="30" /></th>
						<th><a onclick="add();" href="#"><img onclick="add();" alt="add" src="pictures/add.png" /></a></th>
						<th></th>
					</tr>
				</tfoot>
			</table>
			</form>
		</div>
	</div>
</div>
</body>
<script>
	function add() {
			document.getElementsByName("id")[0].value="";
			document.forms["send"].submit();
	}
	function update(id, action) {
		if(action==0) {
			document.getElementById("o"+id).style.display="";
			document.getElementById("u"+id).style.display="none";
			return false;
		}
		if(action==1) {
			document.getElementById("o"+id).style.display="none";
			document.getElementById("u"+id).style.display="";
			return false;
		}
		else {
			document.getElementsByName("id")[0].value=id;
			document.forms["send"].submit();
		}
	}
</script>
</html>

Si quelqu'un a une idée du pourquoi du comment.

Ce message a été modifié par john_lennon - 23 February 2012 - 21:08:58.


#2
Vinky

    Responsable Graphique

  • Administrateur
  • 6011 messages
  • Localisation :Tours (37)
juste pour être sûr, tu as testé ta commande directement sur ta bdd pour être sûr que ce n'est pas elle qui est en cause ? (au boulot j'ai eu plus d'une fois ce souci pour finir par me rendre compte que le problème était en fait la requête en elle même qui n'était pas valide :( )

#3
john_lennon

    Univers DeLL

  • Administrateur
  • 2164 messages
  • Localisation :Bordeaux
nope, j'ai résolu mon problème. Cela venait des variables tout simplement.

Je peux poster le code complet si cela intéresse ;)

J'aurais plus qu'à intégrer le plugin jquery datatable pour les tris comme sur mon site dans la page "paiements". J'adore ce plugin au passage: rapide, simple à utiliser et paramétrable.

Ce message a été modifié par john_lennon - 23 February 2012 - 21:08:36.






1 utilisateur(s) en train de lire ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)