php-general Digest 5 May 2010 03:56:17 -0000 Issue 6727

Topics (messages 304890 through 304895):

Re: Inserting rows with missing IDs
        304890 by: Richard Quadling
        304891 by: Richard Quadling
        304892 by: Richard Quadling
        304893 by: Andre Polykanine

Re: In need of CVS/SVN checkout script for Production servers [solved]
        304894 by: Daevid Vincent
        304895 by: Nathan Rixham

Administrivia:

To subscribe to the digest, e-mail:
        php-general-digest-subscr...@lists.php.net

To unsubscribe from the digest, e-mail:
        php-general-digest-unsubscr...@lists.php.net

To post to the list, e-mail:
        php-gene...@lists.php.net


----------------------------------------------------------------------
--- Begin Message ---
On 3 May 2010 14:34, Andre Polykanine <an...@oire.org> wrote:
> Hello everyone,
> It's not a strictly PHP question, however since I use that with PHP,
> I'm asking it there.
> How can I accomplish the task of inserting rows into MySql database
> with missing IDs? Say, I have rows with IDs 1, 2, 3, 5, 9, 12, 17, and
> 195. How do I make the check that allows to insert firstly the missing
> IDs and only then apply the auto-increment?
> Thanks!

Using PHP, you could find the missing IDs by using the following steps.

1 - Get the current maximum ID.

SELECT max(ID) as Max FROM table

If you aren't interested in the ones before the first valid ID then
also retrieve the min(ID).

So you end up with $MinID = 1, $MaxID = 195.

2 - Get all the current IDs.

SELECT ID FROM table

So you end up with $KnownIDs = array(1,2,3,5,9,12,17,195);

3 - Use the range() function in PHP to build an array from the lowest
id (or 1) to the highest id.

$RangeIDs = range($MinID, $MaxID);

4 - Use array_diff($RangeIDs, $KnownIDs); to find the missing IDs.


So ...

<?php
$MinID = 1;
$MaxID = 30;  // Edited to suit output
$KnownIDs = array(1,2,3,5,9,12,17,30);  // Edited to suit output
$RangeIDs = range($MinID, $MaxID);
print_r(array_diff($RangeIDs, $KnownIDs));
?>

outputs ...

Array
(
    [3] => 4
    [5] => 6
    [6] => 7
    [7] => 8
    [9] => 10
    [10] => 11
    [12] => 13
    [13] => 14
    [14] => 15
    [15] => 16
    [17] => 18
    [18] => 19
    [19] => 20
    [20] => 21
    [21] => 22
    [22] => 23
    [23] => 24
    [24] => 25
    [25] => 26
    [26] => 27
    [27] => 28
    [28] => 29
)


-- 
-----
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling

--- End Message ---
--- Begin Message ---
On 3 May 2010 14:34, Andre Polykanine <an...@oire.org> wrote:
> Hello everyone,
> It's not a strictly PHP question, however since I use that with PHP,
> I'm asking it there.
> How can I accomplish the task of inserting rows into MySql database
> with missing IDs? Say, I have rows with IDs 1, 2, 3, 5, 9, 12, 17, and
> 195. How do I make the check that allows to insert firstly the missing
> IDs and only then apply the auto-increment?
> Thanks!

You can also reseed the autoinc column back to 0 and that will start
filling in the gaps.

ALTER TABLE tablename AUTO_INCREMENT = 0

may work for you
(http://arstechnica.com/civis/viewtopic.php?f=20&t=123689 via
http://tinyurl.com/3amlo2u)



--
-----
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling

--- End Message ---
--- Begin Message ---
On 3 May 2010 14:34, Andre Polykanine <an...@oire.org> wrote:
> Hello everyone,
> It's not a strictly PHP question, however since I use that with PHP,
> I'm asking it there.
> How can I accomplish the task of inserting rows into MySql database
> with missing IDs? Say, I have rows with IDs 1, 2, 3, 5, 9, 12, 17, and
> 195. How do I make the check that allows to insert firstly the missing
> IDs and only then apply the auto-increment?
> Thanks!

BTW, I agree with the other posters here. Buggering around with the ID
is normally pointless unless you have SO many missing IDs that you are
approaching the limit of the value of the column containing the ID.
-- 
-----
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling

--- End Message ---
--- Begin Message ---
Hello Richard,

Thanks, will try this!)
-- 
With best regards from Ukraine,
Andre
Skype: Francophile; Wlm&MSN: arthaelon @ yandex.ru; Jabber: arthaelon @ 
jabber.org
Yahoo! messenger: andre.polykanine; ICQ: 191749952
Twitter: m_elensule

----- Original message -----
From: Richard Quadling <rquadl...@googlemail.com>
To: Andre Polykanine <an...@oire.org>
Date: Tuesday, May 4, 2010, 6:08:28 PM
Subject: [PHP] Inserting rows with missing IDs

On 3 May 2010 14:34, Andre Polykanine <an...@oire.org> wrote:
> Hello everyone,
> It's not a strictly PHP question, however since I use that with PHP,
> I'm asking it there.
> How can I accomplish the task of inserting rows into MySql database
> with missing IDs? Say, I have rows with IDs 1, 2, 3, 5, 9, 12, 17, and
> 195. How do I make the check that allows to insert firstly the missing
> IDs and only then apply the auto-increment?
> Thanks!

Using PHP, you could find the missing IDs by using the following steps.

1 - Get the current maximum ID.

SELECT max(ID) as Max FROM table

If you aren't interested in the ones before the first valid ID then
also retrieve the min(ID).

So you end up with $MinID = 1, $MaxID = 195.

2 - Get all the current IDs.

SELECT ID FROM table

So you end up with $KnownIDs = array(1,2,3,5,9,12,17,195);

3 - Use the range() function in PHP to build an array from the lowest
id (or 1) to the highest id.

$RangeIDs = range($MinID, $MaxID);

4 - Use array_diff($RangeIDs, $KnownIDs); to find the missing IDs.


So ...

<?php
$MinID = 1;
$MaxID = 30;  // Edited to suit output
$KnownIDs = array(1,2,3,5,9,12,17,30);  // Edited to suit output
$RangeIDs = range($MinID, $MaxID);
print_r(array_diff($RangeIDs, $KnownIDs));
?>

outputs ...

Array
(
    [3] => 4
    [5] => 6
    [6] => 7
    [7] => 8
    [9] => 10
    [10] => 11
    [12] => 13
    [13] => 14
    [14] => 15
    [15] => 16
    [17] => 18
    [18] => 19
    [19] => 20
    [20] => 21
    [21] => 22
    [22] => 23
    [23] => 24
    [24] => 25
    [25] => 26
    [26] => 27
    [27] => 28
    [28] => 29
)


-- 
-----
Richard Quadling
"Standing on the shoulders of some very clever giants!"
EE : http://www.experts-exchange.com/M_248814.html
EE4Free : http://www.experts-exchange.com/becomeAnExpert.jsp
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
ZOPA : http://uk.zopa.com/member/RQuadling


--- End Message ---
--- Begin Message ---
> -----Original Message-----
> From: Daevid Vincent [mailto:dae...@daevid.com] 
> Sent: Thursday, April 29, 2010 12:33 PM
> To: php-gene...@lists.php.net
> Subject: [PHP] In need of CVS/SVN checkout script for 
> Production servers
> 
> Semi-off-topic, but I'm pretty sure you all are faced with this same
> challenge, I figured it's worth a shot and maybe some flaming.
> 
> I'm looking for a script (bash or php) that I would run on my 
> production
> web server that would do this or close to it:
> 
>       1. do a CVS/SVN checkout to a new timestamped directory
>       2. change the symlink from the old directory
>       3. change permissions to www-data:www-data on new directory
>       4. and possibly tarball up the old directory.
> 
> I'm assuming this is a fairly common task, and I actually wrote one of
> these at my previous job, but I can't find the script 
> anymore. I remember
> it's not quite as trivial as it sounds and took a few hours 
> to perfect, so
> I thought I'd try to save myself some time. :)
>  
> I have some other useful SVN scripts here if anyone is interested:
> http://daevid.com/content/examples/snippets.php

Well, here is the one I'm using. I ended up just writing one (again!)

http://www.daevid.com/content/examples/snippets.php :: "Production
Deployment Script"


--- End Message ---
--- Begin Message ---
Daevid Vincent wrote:
-----Original Message-----
From: Daevid Vincent [mailto:dae...@daevid.com] Sent: Thursday, April 29, 2010 12:33 PM
To: php-gene...@lists.php.net
Subject: [PHP] In need of CVS/SVN checkout script for Production servers

Semi-off-topic, but I'm pretty sure you all are faced with this same
challenge, I figured it's worth a shot and maybe some flaming.

I'm looking for a script (bash or php) that I would run on my production
web server that would do this or close to it:

        1. do a CVS/SVN checkout to a new timestamped directory
        2. change the symlink from the old directory
        3. change permissions to www-data:www-data on new directory
        4. and possibly tarball up the old directory.

I'm assuming this is a fairly common task, and I actually wrote one of
these at my previous job, but I can't find the script anymore. I remember it's not quite as trivial as it sounds and took a few hours to perfect, so
I thought I'd try to save myself some time. :)
I have some other useful SVN scripts here if anyone is interested:
http://daevid.com/content/examples/snippets.php

Well, here is the one I'm using. I ended up just writing one (again!)

http://www.daevid.com/content/examples/snippets.php :: "Production
Deployment Script"


It appears your browser does not support some of the advanced features this site requires.

Please use Internet Explorer or Firefox.

getting that in chrome 5.0.375.29 beta - what advanced features am I (and chrome) missing?

sounds like I'm being negative, but I'm not :)

tip though; degrade gracefully mate, don't break the net for non-required features.

best,

nathan

--- End Message ---

Reply via email to