Hallo allemaal,

hier nog een vraagje,

$rem_dot = 'voorbeeld';

mysql_query(" INSERT INTO ".$rem_dot."
(url, gespidered)
VALUES ('" . $link . "', '0')") or die (mysql_error());

Ik weet dat het geheel werkt wanneer ik de variabele achter INSERT INTO vervang voor een vaste invoer zoals 'voorbeeld'

Hoe kan ik het gebruik van zo een variabele wél laten werken met het INSERT INTO commando?

Overigens bestaat de tabel 'voorbeeld' wel al

Alvast bedankt,
Alexander
Blanche schreef op 17.11.2007 10:36
Eh $sql3 bestaat niet?

Verder: controleer altijd of een query gelukt is. Zo niet, geef dan een foutmelding met mysql_error().
<?php
$sql = // de query
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br>In query: '.$sql);
}
?>


haha...stom...copy paste he:P

SUPER BEDANKT!
Blanche schreef op 17.11.2007 10:36
Eh $sql3 bestaat niet?

Verder: controleer altijd of een query gelukt is. Zo niet, geef dan een foutmelding met mysql_error().
<?php
$sql = // de query
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br>In query: '.$sql);
}
?>


Is gelukt, lag aan de globals

nu heb ik een werkend script dat als volt werkt:
url invoer --> crawlen van url naar links --> opslaan links in tabel

De volgende stap is dat ik de 'url invoer' wil halen uit een eenvoudige tabel met daarin een aantal verschillend urls. Ik wil het script dus maar een keer starten en vervolgens alle urls in de tabel gebruiken als invoer voor het geheel.

de tabel ziet er uit als:
+----+-----+
| id | url |
+----+-----+

Alvast bedankt
Blanche schreef op 17.11.2007 10:36
Eh $sql3 bestaat niet?

Verder: controleer altijd of een query gelukt is. Zo niet, geef dan een foutmelding met mysql_error().
<?php
$sql = // de query
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br>In query: '.$sql);
}
?>


Is gelukt, lag aan de globals

nu heb ik een werkend script dat als volt werkt:
url invoer --> crawlen van url naar links --> opslaan links in tabel

De volgende stap is dat ik de 'url invoer' wil halen uit een eenvoudige tabel met daarin een aantal verschillend urls. Ik wil het script dus maar een keer starten en vervolgens alle urls in de tabel gebruiken als invoer voor het geheel. Hoe kan ik dat het beste doen?

de tabel ziet er uit als:
+----+-----+
| id | url |
+----+-----+

Alvast bedankt
Ik volg je niet helemaal. Wil je alle urls uitlezen en weergeven op het scherm?
Blanche schreef op 17.11.2007 12:51
Ik volg je niet helemaal. Wil je alle urls uitlezen en weergeven op het scherm?


Nee ik wil de urls uit de database gebruiken als invoer in mijn script...
Nu gebruik ik nog om te testen een formulier waar ik de url mee invoer, maar ik wil dat het script zelf MEERDERE urls uit de database kan halen en deze een voor een als invoer gebruiken...

dus eerst url 1, dan url 2, etc...

edit: nu gebruik ik als invoervariabele;
$urlinputform = $_POST['urlinput'];

ik wil dus hebben
$urlinputform = URL UIT DATABASE (STEEDS EEN ANDERE)
<?php
$sql = "SELECT url FROM tabel";

if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br>In query: '.$sql);
}
else
{
while($row = mysql_fetch_assoc($res))
{
// De url staat in $row['url']
// Hier verder met het script dat je wilt uitvoeren.
}
}
?>
Zoiets?
Blanche schreef op 17.11.2007 13:10
<?php
$sql = "SELECT url FROM tabel";

if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br>In query: '.$sql);
}
else
{
while($row = mysql_fetch_assoc($res))
{
// De url staat in $row['url']
// Hier verder met het script dat je wilt uitvoeren.
}
}
?>
Zoiets?


Niet geheel wat ik zoek, dit is mijn huidige code, waarbij ik om het overzicht te houden ook even voor iedere gecrawlde url een aparte tabel aanmaak, uiteindelijk gaat alles straks in één tabel.

Hoe kan ik de mogelijkheid om automatisch alle urls uit de tabel 'urls' te halen en deze een voor een uit te laten voeren door het script, inbouwen in onderstaande?

De enige waarde die dus automatisch gewijzigt moet worden is "$urlinputform = $_POST['urlinput'];"

[CODE]
<?php

include ("config.php");

mysql_connect("$host", "$user", "$pass") or die(mysql_error());
mysql_select_db("$db") or die(mysql_error());

$urlinputform = $_POST['urlinput'];
$urltocrawl = ("$urlinputform");
$urltocrawlcreate = (".$urlinputform.");

$rem_http = substr ("$urltocrawlcreate", 11);
$rem_dot = str_replace(".", "", $rem_http);
$add_links_nl = str_replace("nl", "nl_links", $rem_dot);

include ("index.php");

if (substr($urltocrawl, 0, 11) == "http://www."){

$sql1 = "
CREATE TABLE ".$rem_dot." (
id INT,
url VARCHAR(100),
gespidered VARCHAR(100)
)";

$sql2 = "
CREATE TABLE ".$add_links_nl." (
id INT,
url VARCHAR(100),
link VARCHAR(100)
)";

mysql_query($sql1);
mysql_query($sql2);

echo "De ingevoerde pagina is bezocht door onze spider en toegevoegd aan de database<br><br>";
}

else {
echo "De URL die u heeft ingevoerd is niet volgens de vorm http://www.URL.nl<br>Alleen top-level .nl (alleen voor Nederland) domeinen zijn toegestaan (dus geen iets.domein.nl)<br>";
}

include ("spider.php");

?>
$urlinputform = $_POST['urlinput'];
$urltocrawl = ("$urlinputform");
$urltocrawlcreate = (".$urlinputform.");

Wat is dit voor gekke code? Variabelen horen nooit tussen quotes te staan en de haakjes () zijn volkomen overbodig. Tevens is het overbodig om een variabele te kopieeren zonder iets aan de inhoud te veranderen.

Kortom, bovenstaande 3 regels kun je zo weggooien, ga in de rest van je code gewoon met $_POST['urlinput'] aan de slag, dan is het tenminste duidelijk dat de variabele uit een formulier komt en niet is te vertrouwen. Denk bv. aan SQL-injection.

En waarom voer jij queries uit zonder te controleren of deze wel zijn gelukt? Dat je een CREATE-query nooit nodig hebt in een PHP-script, wist je al, waarom gebruik je die dan nog?
pgFrank schreef op 17.11.2007 15:04
$urlinputform = $_POST['urlinput'];
$urltocrawl = ("$urlinputform");
$urltocrawlcreate = (".$urlinputform.");

Wat is dit voor gekke code? Variabelen horen nooit tussen quotes te staan en de haakjes () zijn volkomen overbodig. Tevens is het overbodig om een variabele te kopieeren zonder iets aan de inhoud te veranderen.

Kortom, bovenstaande 3 regels kun je zo weggooien, ga in de rest van je code gewoon met $_POST['urlinput'] aan de slag, dan is het tenminste duidelijk dat de variabele uit een formulier komt en niet is te vertrouwen. Denk bv. aan SQL-injection.

En waarom voer jij queries uit zonder te controleren of deze wel zijn gelukt? Dat je een CREATE-query nooit nodig hebt in een PHP-script, wist je al, waarom gebruik je die dan nog?


Je hebt niet helemaal gelijk,
$urltocrawl = ("$urlinputform"); is bedoeld voor de spider, dus als het ware voor de volledige 'tekst'.

$urltocrawlcreate = (".$urlinputform."); is speciaal voor het werken met queries, die reageren namelijk niet met "$urlinputform", heel vreemd

Dit zou je eens uit moeten proberen;)...als alles af is post ik het toch als open source:P
Dan moet je mij toch eens uitleggen wat voor toegevoegde waarde die haakjes en quotes rond die variabelen hebben en waarom je spider of queries dat nodig zouden hebben.

Het verandert verder namelijk niets aan de variabele:
<?php
$urlinputform = 'blaat';
echo $urlinputform.'<br>'; // blaat

$urltocrawl = ("$urlinputform");
echo $urltocrawl.'<br>'; // blaat
?>
Het blijft gewoon een kopie en dus overbodig...

Reageren