My problem is: I want to add multi rows in database (every website with its pagerank on different rows not all in one rows as in the first picture)! I don't know how to do that, i tried with explode but works only at the printing of the table from browser but now for the links that goes in database! Please help me!

In my database: enter image description here

In my browser:

enter image description here

My entire code:

<?php
error_reporting(E_ALL & ~E_NOTICE);
function StrToNum($Str, $Check, $Magic)
{
    $Int32Unit = 4294967296;  // 2^32

    $length = strlen($Str);
    for ($i = 0; $i < $length; $i++) {
        $Check *= $Magic;     
        if ($Check >= $Int32Unit) {
            $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));

            $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
        }
        $Check += ord($Str{$i}); 
    }
    return $Check;
}
function CheckHash($Hashnum)
{
    $CheckByte = 0;
    $Flag = 0;

    $HashStr = sprintf('%u', $Hashnum) ;
    $length = strlen($HashStr);

    for ($i = $length - 1;  $i >= 0;  $i --) {
        $Re = $HashStr{$i};
        if (1 === ($Flag % 2)) {              
            $Re += $Re;     
            $Re = (int)($Re / 10) + ($Re % 10);
        }
        $CheckByte += $Re;
        $Flag ++;    
    }

    $CheckByte %= 10;
    if (0 !== $CheckByte) {
        $CheckByte = 10 - $CheckByte;
        if (1 === ($Flag % 2) ) {
            if (1 === ($CheckByte % 2)) {
                $CheckByte += 9;
            }
            $CheckByte >>= 1;
        }
    }

    return '7'.$CheckByte.$HashStr;
}
function HashURL($String)
{
    $Check1 = StrToNum($String, 0x1505, 0x21);
    $Check2 = StrToNum($String, 0, 0x1003F);

    $Check1 >>= 2;     
    $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
    $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
    $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);    

    $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
    $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );

    return ($T1 | $T2);
}
function getpagerank($url) {
    $query="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".CheckHash(HashURL($url)). "&features=Rank&q=info:".$url;
    set_time_limit(0);
    $data=file_get_contents($query);
    $pos = strpos($data, "Rank_");
    if($pos === false){} else{
        $pagerank = substr($data, $pos + 9);
        return $pagerank;
    }  
}
if($_POST['urls'])
{
    ?><table border="1">
    <th>URL</th>
    <th>Pagerank</th>
    <?
    $urls=trim($_POST['urls']);
    $url=explode("\n",$urls);
    foreach($url as $url)
    {
        if($url)
        {
            $url=trim($url);
            $pagerank=getpagerank($url);
            ?>
            <tr><td><?php echo $url; ?></td><td><?php echo $pagerank; ?></td></tr>
            <?     
            //mysql_query("INSERT INTO projects2 (googlePR, Link)  
            //VALUES ('".$pagerank."','".$urls."') ")  or die(mysql_error());           
            flush();
        }              
    }
    ?></table><?
}
else
{
    ?><form action="" method="post">
    URLS:<br /><textarea name="urls" cols="50" rows="10">Introduceti lista de linkuri aici</textarea><br /><input type="submit" value="Check PR & insert values"/>
    </form>
    <?
}
?>

<?php 
    $urls=trim($_POST['urls']);
    $url=explode("\n",$urls);
    foreach($url as $url) {
    if($url)
  {
    $url=trim($url);
    $pagerank=getpagerank($url);

    mysql_query("INSERT INTO projects2 (googlePR, Link)  
    VALUES ('".$pagerank."','".$urls."') ")  or die(mysql_error());
    }
}
?>
share|improve this question
Please narrow down your problem. It's really hard to read all that source code and to understand what your actual question is. – Dio F Dec 21 '12 at 20:36

2 Answers

The problem is in your foreach statement yo uare writing:

foreach($url as $url) {

That will overwrite your $url array with the first value of the array since the variable names are the same. Then at the end of your loop when it tries to iterate to the next row, it is iterating against a non-array object. Just maybe change the name of the array create from teh explode to $url_array or something similar and do

foreach($url_array as $url) {
share|improve this answer

Your answer was half true because i modified the I replaced $urls with $url in:

mysql_query("INSERT INTO projects2 (googlePR, Link)  
    VALUES ('".$pagerank."','".$url."') ")

now everything goes fine

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.