Data in MySQL updaten middels php met extra functies, probleem..
Ik heb een vraag over een script wat niet wil lukken, thans het werkt wel
maar zodra ik de MySQL update ga doen gaat het fout.
Doel: Titel uit een kolom halen en omzetten (slug maken) om vervolgens in een andere kolom te zetten.
Wat gaat er goed?
Als ik echo gebruik zonder mysql-update zie ik dat de functie alle data goed oppikt en omzet door de slug functie -> supers.
Wat gaat er fout?
Zodra ik de mysql-update ga gebruiken, dus om de output terug te zetten in de nieuwe kolom gaat hij een loop maken en rare slugs bij de verkeerde rows zetten.
Lijkt wel of hij dan alle rows een keer gaat gebruiken voor de slug en hij zet het niet 1 op 1 over op de juiste row.
Ik hoor graag wat er fout gaat, btw ben geen prof coder, dus de code zal wel belabberd zijn in jullie ogen :) Het is maar een script om 1 malig te draaien op de database.
Alvast bedankt!
Mike
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
include 'include/config.php';
$query="SELECT ItemTitle FROM feedItems";
$result=mysql_query($query);
$num=mysql_num_rows($result);
$i=0;
while($i<$num)
{
$slug_old = mysql_result($result,$i,"ItemTitle");
$slug_old = strtolower($slug_old);
$slug_old = preg_replace("/[^a-z0-9_\s-]/", "", $slug_old);
$slug_old = preg_replace("/[\s-]+/", " ", $slug_old);
$slug_old = preg_replace("/[\s_]/", "-", $slug_old);
echo "$slug_old <br>";
$query="UPDATE feedItems SET slug='$slug_old'";
mysql_query($query);
++$i;
}
echo "Done!";
mysql_close();
?>
include 'include/config.php';
$query="SELECT ItemTitle FROM feedItems";
$result=mysql_query($query);
$num=mysql_num_rows($result);
$i=0;
while($i<$num)
{
$slug_old = mysql_result($result,$i,"ItemTitle");
$slug_old = strtolower($slug_old);
$slug_old = preg_replace("/[^a-z0-9_\s-]/", "", $slug_old);
$slug_old = preg_replace("/[\s-]+/", " ", $slug_old);
$slug_old = preg_replace("/[\s_]/", "-", $slug_old);
echo "$slug_old <br>";
$query="UPDATE feedItems SET slug='$slug_old'";
mysql_query($query);
++$i;
}
echo "Done!";
mysql_close();
?>
Wil je dat niet, geef dan een WHERE mee.
Ja hij doet inderdaad alle records maar het zijn er 5000 en hij gaat elk stuk van de 5000 een keer plaatsen op de 5000 als je begrijpt wat ik bedoel, hij zet ze dus niet 1 op 1 neer dus de slug die bij de titel hoort.
Je geeft aan met where, maar wat zou dat dan moeten zijn? want ik wil dat hij de gehele database doorloopt en niet 1 stuk, een ID oid.. En ik weet ook niet (thans zoveel) hoe de titels heten dus daar kan ik hem ook niet op laten filteren.. Als ik wist dat het enkel ID 1 moest zijn was het inderdaad een makkie (gok ik) maar ik wil ze allemaal, zoals ik al zei ben geen php guru.
Ik hoor graag van je..
Mike
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
include 'include/config.php';
$query = "SELECT Id, ItemTitle FROM feedItems";
$result = mysql_query($query);
if($result)
{
while($row = mysql_fetch_assoc($result))
{
$slug_old = strtolower($row['ItemTitle']);
$slug_old = preg_replace("/[^a-z0-9_\s-]/", "", $slug_old);
$slug_old = preg_replace("/[\s-]+/", " ", $slug_old);
$slug_old = preg_replace("/[\s_]/", "-", $slug_old);
echo $slug_old . '<br>';
$upd_query = "UPDATE feedItems SET slug = '" . $slug_old . "' WHERE Id = '" . $row['Id'] . "'";
$upd_result = mysql_query($upd_query);
if(!$upd_result)
{
echo 'Update error';
}
}
}
else
{
echo 'Select error';
}
echo "Done!";
mysql_close();
?>
include 'include/config.php';
$query = "SELECT Id, ItemTitle FROM feedItems";
$result = mysql_query($query);
if($result)
{
while($row = mysql_fetch_assoc($result))
{
$slug_old = strtolower($row['ItemTitle']);
$slug_old = preg_replace("/[^a-z0-9_\s-]/", "", $slug_old);
$slug_old = preg_replace("/[\s-]+/", " ", $slug_old);
$slug_old = preg_replace("/[\s_]/", "-", $slug_old);
echo $slug_old . '<br>';
$upd_query = "UPDATE feedItems SET slug = '" . $slug_old . "' WHERE Id = '" . $row['Id'] . "'";
$upd_result = mysql_query($upd_query);
if(!$upd_result)
{
echo 'Update error';
}
}
}
else
{
echo 'Select error';
}
echo "Done!";
mysql_close();
?>
Werkt als een zonnetje :)
Super bedankt!
Gr. Mike
Quote:
Slug
Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Slug is een Angelsaksische eenheid voor massa. Het eenheidssymbool is eveneens slug.
1 slug := 1 lbf·s²/ft ? 14,5939 kg.
Slug is geen SI-eenheid en gebruik ervan is niet aan te raden.
Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Slug is een Angelsaksische eenheid voor massa. Het eenheidssymbool is eveneens slug.
1 slug := 1 lbf·s²/ft ? 14,5939 kg.
Slug is geen SI-eenheid en gebruik ervan is niet aan te raden.
Slug tja, soms heb je zin in iets anders :)
Mike de Roy op 13/12/2010 18:49:57:
Slug tja, soms heb je zin in iets anders :)
Zin in? Mmmmmm ....
Quote:
Results for 'slug'
English Dutch
slug slak, naaktslak
English Dutch
slug slak, naaktslak
Gewijzigd op 13/12/2010 18:52:02 door - SanThe -
Mike de Roy op 13/12/2010 18:45:59:
Wow! In 1 woord: Je bent GEWELDIG!
Nu we toch off-topic zitten, dat zijn er drie ;)
- SanThe - op 13/12/2010 18:51:43:
Zin in? Mmmmmm ....
Mike de Roy op 13/12/2010 18:49:57:
Slug tja, soms heb je zin in iets anders :)
Zin in? Mmmmmm ....
Quote:
Results for 'slug'
English Dutch
slug slak, naaktslak
English Dutch
slug slak, naaktslak
Hahaha +1