Взима на id на запис преди да се добави

ivo75

Registered
Добавя запис към БД, като едно от полетата е пътя на изображението което качвам. Името на изображението искам да сложа да бъде id-то на записа и затова се чудя дали има начин предварително да се вземи id на запис преди да се вмъкне?
 
Защо не направиш следното:

качваш изображението
добавяш в база данни
взимаш id-то ( mysql_insert_id() )
преименуваш файла

а ако все пак искаш да вземеш ID-то, то това би трябвало да работи (от тук):

PHP:
$result = mysql_query("SHOW TABLE STATUS LIKE 'table_name'");
$row = mysql_fetch_array($result);
$nextId = $row['Auto_increment'];
 
Ако взема максималната стойност на полето id и към него добавя 1 няма ли да е id-то на записа, който ще вмъквам?
 
ivo75 каза:
Ако взема максималната стойност на полето id и към него добавя 1 няма ли да е id-то на записа, който ще вмъквам?

Да,така ще стане.Аз го правя по този начин.
 
Да така ще стане, но сега изникна друг проблем използвам Jquery и AJAX, за да постна данните. Разбрах, че Jquery и AJAX не можел поства input type=file. Има ли начин да се преодолее това?
 
Не разбрах какво не ти хареса на моите 2 варианта (които са по-правилни), но със сигурност отговорих на въпроса ти :P

Относно file upload чрез ajax, можеш да видиш http://www.malsup.com/jquery/form/#getting-started - много добър плъгин, който събмитва формите чрез AJAX :)
 
Не казах, че твоя отговор не е добър. Не че не мога да постна данните от формата, когато постна ето така
Код:
$("#btnLogin").click(function(){
		   	$.ajax({
    		   	type: "POST",
			url: "isLogged.php",
			data: $('#formLogin').serialize(),
........

не ми праща данните от input type=file
 
Видя ли линка, който постнах? Плъгина е супер, ползвал съм го преди за смяна на аватари и се качваха снимките без проблем. Изключително лесен за използване :)
Ако имаш проблем с ползването му, дай формата, джаваскрипта и кода, който обработва формата и ще видим какво можем да направим!
 
Eто кода на формата

Код:
<form action="" method="post" name="form1" id="form1">
  <table align="center">
    <tr valign="baseline">
        <td nowrap="nowrap" align="right">Избери модел:</td>
      <td><select name="model_id" id="model_id">
        <?php
mysql_select_db($database_proekt, $proekt);
$data = array();
$index = array();
//echo "<select>";
$query = mysql_query("SELECT id, parent_id, name FROM categories ORDER BY name");
while ($row = mysql_fetch_assoc($query)) {
    $id = $row["id"];
    $parent_id = $row["parent_id"] === NULL ? "NULL" : $row["parent_id"];
    $data[$id] = $row;
    $index[$parent_id][] = $id;
}

function display_child_nodes($parent_id, $level)
{
    global $data, $index;
    $parent_id = $parent_id === NULL ? "NULL" : $parent_id;
    if (isset($index[$parent_id])) {
        foreach ($index[$parent_id] as $id) {
            $num=preg_replace("/[^0-9]/","",$id); 
            //echo $num;
            echo "<option value='$num'>" .str_repeat("-", $level) . $data[$id]["name"] . "<br></option>";
            display_child_nodes($id, $level + 1);
        }
    }
}
display_child_nodes(NULL, 0);
//echo "</select>";
?>
     </select>
      </td>
        </tr>
        
       <tr valign="baseline">
      <td nowrap="nowrap" align="right">Избери размер:</td>
      <td><select name="razmer_id" id="razmer_id">
        <?php 
do {  
?>
        <option value="<?php echo $row_get_razmers['id']?>" ><?php echo $row_get_razmers['razmer']?></option>
        <?php
} while ($row_get_razmers = mysql_fetch_assoc($get_razmers));
?>
      </select></td>
    </tr>
    <tr> </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Посочи брой:</td>
      <td><input type="text" name="broy" value="" size="32" id="broy" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Посочи цена:</td>
      <td><input type="text" name="cena" value="" size="32" id="cena" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Посочи дата:</td>
      <td><input type="text" name="data_por" value="" size="32" id="data_por" /></td>
    </tr>
    
    
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Кратко обянение:</td>
      <td>
    <textarea name="comments" cols="40" rows="6" id="comments"></textarea>
    </td>
    </tr>
    
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Посочи изображение:</td>
      <td> 	     	
      	<input type="file" name="file" size="52" id="file" />			
     </td>

    </tr>
    
    <tr valign="baseline">
      <td nowrap="nowrap" align="right"> </td>
      <td><input type="submit" value="Добави" id="submit2" /></td>
    </tr>
  </table>
  </form>

JS кода

Код:
<script type="text/javascript">

$(function() {
$("#submit2").click(function() {
   var model_id = $("#model_id").val();
   var razmer_id = $("#razmer_id").val();
   var broy = $("#broy").val();
   var cena = $("#cena").val();
   var data_por = $("#data_por").val();
   var comments = $("#comments").val();
   var file1 = $("#file").val();
alert($("#file").val());
	        $.ajax({
			type: "POST",
                        //contentType:attr( "enctype", "multipart/form-data" ),
			//dataType: 'json',
                        url: "stoki_post.php",
                        data: "model_id=" + model_id + "&razmer_id=" + razmer_id + "&broy=" + broy + "&cena=" + cena
                        + "&data_por=" + data_por + "&comments=" + comments + "&file=" + file1,
                success: function(result){
			$('#broy').val('');
			$('#cena').val('');
			$('#data_por').val('');
				$("#result2").hide().html(result).fadeIn("slow");
				$("#result2").delay(30000).fadeOut("slow");
            }
			
        });
        return false;
        })
			})
                        
    </script>

на PHP файла

Код:
<?php require_once('Connections/proekt.php'); ?>
<?php
mysql_select_db($database_proekt, $proekt);
$query = mysql_query("SELECT MAX(id) FROM stoki");
$results = mysql_fetch_array($query);
$cur_auto_id = $results['MAX(id)'] + 1;

?>

<?php
$file_exts = array("jpg", "bmp", "jpeg", "gif", "png", "JPG");
$upload_exts = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/JPG")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($upload_exts, $file_exts))
{
if ($_FILES["file"]["error"] > 0)
{
 echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{

if (file_exists("upload/" .$_FILES["file"]["name"]))
{
//echo "<div class='error'>"."(".$_FILES["file"]["name"].")".
//" already exists. "."</div>";
}
else
{
    
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/".$cur_auto_id );

if(isset ($_POST['broy']))

{
$model_id = $_POST['model_id'];
$razmer_id = $_POST['razmer_id'];
$broy = addslashes(trim($_POST['broy']));
$cena = addslashes(trim($_POST['cena']));
//$data_por = $_POST['data_por'];
$data_por=date("Y-m-d",strtotime($_POST['data_por']));
$image_path=$_POST['file'];
$comments = $_POST['comments'];
$sql = "INSERT INTO stoki (categories_id, razmer_id, broy, cena, image_path, annotated, data_por) VALUES ('$model_id', '$razmer_id', '$broy', '$cena', $image_path, $comments, '$data_por')";
mysql_select_db($database_proekt);
$result = mysql_query($sql) or die(mysql_error());
  if ($result)
{
echo "Стоката е добавена успешно!";
}
else
{
echo "Проблем при добавяне на стоки!";
}
}
}
}
}
else
{
echo "<div class='error'>Invalid file</div>";
}




?>
 
Кое не ти се получава? Ти май не си и пробвал :D ...

Изтегли плъгина от линка който съм дал (горе Downloads) - Minified version
Сложи го в страницата под jquery.

Махни това $("#submit2").click(function() { и всичко след него и сложи:

$("#form1").ajaxForm();

Като преди това в <form action="тук сложи името на файла, който обработва" method="post" id="form1">

Сайта има доста подробна информация.
 
Стана мерси :). Проблема е бил, че не съм качил JS файла на сървъра :)
 

Back
Горе