Solved

Update database without get actual contain

Posted on 2009-06-28
3
245 Views
Last Modified: 2012-05-07
Hi E's, in one field of my mysql database, I have this format nn nn nn, in practice like this, 05 44 99, 2 numeric, space, 2 numeric, space, 2 numeric.
Every time I have a value that was more bigger then one of the values in database, I need to upgrade the database (ex. If I have the new value '55', I need to remove 05 and return for the first place the number '44', becomes 44 55 99).

I can do that in this way:
call database
explode string to get 3 arrays
verify if new value is more bigger then the low number in database, if yes replace and restructure all array
implode the array to string
update database

This is the best way to do this?
Have any simple way to do this?

Regards, JC
 
0
Comment
Question by:Pedro Chagas
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 24732529
Try the code below. You must change the name of the posted value ("New_number"), the table name, the column name and insert a WHERE condition.
$res = mysql_query('select Col from TableName where ...');
if(!$res) die(mysql_error());
$value = mysql_result($res,0);
$numbers = explode(' ',$value);
$new_number = (int) $_POST['New_number'];  # fetch new number
if(strlen($new_number)<2)        # if less than two digits...
  $new_number = '0'.$new_number; # ...prefix with a 0 
$numbers[] = $new_number;
sort($numbers);
while(count($numbers) > 3)  # if more than 3 numbers
  array_shift($numbers);    # remove smallest number
$new_value = implode(' ',$numbers);
$res = mysql_query("update TableName set Col='$new_value' where ...");
if(!$res) die(mysql_error());

Open in new window

0
 
LVL 3

Author Comment

by:Pedro Chagas
ID: 24732662
Hi @cxr, thanks for your feedback.
Something don't work in your solution, and I thing it's a simple thing.
In your solution the first numbers never change, it's allways 00, and just change the third numbers, like 00 20 60, if the new value is 90, becomes 00 20 90, when the correct is 20 60 90.

Note: before the first update, the string have this number and format in database 00 00 00 (maybe this information was important)

I put my code in snippet code for you check and maybe change something.
relevant changes:
$existek->tres_pontos; //the variable that contain the string
$valor //is the variable that contain the number to check, like 44 or other

What is wrong in the code?

Regards, JC
        $value = $existek->tres_pontos;
	$numbers = explode(' ',$value);
	$new_number = $valor;  # fetch new number
	if(strlen($new_number)<2)        # if less than two digits...
  	$new_number = '0'.$new_number; # ...prefix with a 0 
	$numbers[] = $new_number;
	sort($numbers);
	while(count($numbers) > 3)  # if more than 3 numbers
  	array_shift($numbers);    # remove smallest number
	$new_value = implode(' ',$numbers);
	echo "<br>NEW $new_value";

Open in new window

0
 
LVL 39

Accepted Solution

by:
Roger Baklund earned 500 total points
ID: 24732698
The error must be somewhere else, this seems to work:
        $value = "00 20 60";
        $numbers = explode(' ',$value);
        $new_number = 90;
        if(strlen($new_number)<2)        # if less than two digits...
        $new_number = '0'.$new_number; # ...prefix with a 0 
        $numbers[] = $new_number;
        sort($numbers);
        while(count($numbers) > 3)  # if more than 3 numbers
        array_shift($numbers);    # remove smallest number
        $new_value = implode(' ',$numbers);
        echo "<br>NEW $new_value";
 
# output: NEW 20 60 90

Open in new window

0

Featured Post

Migrating Your Company's PCs

To keep pace with competitors, businesses must keep employees productive, and that means providing them with the latest technology. This document provides the tips and tricks you need to help you migrate an outdated PC fleet to new desktops, laptops, and tablets.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article shows the steps required to install WordPress on Azure. Web Apps, Mobile Apps, API Apps, or Functions, in Azure all these run in an App Service plan. WordPress is no exception and requires an App Service Plan and Database to install
This article discusses how to implement server side field validation and display customized error messages to the client.
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

627 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question