Solved

Update database without get actual contain

Posted on 2009-06-28
3
224 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
  • 2
3 Comments
 
LVL 39

Expert Comment

by:Roger Baklund
Comment Utility
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
Comment Utility
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
Comment Utility
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

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Suggested Solutions

This article describes some very basic things about SQL Server filegroups.
This article discusses how to create an extensible mechanism for linked drop downs.
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

772 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

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now