harald_malaga@hotmail.com: UPDATE Befehl

Hallo,

kann mir bitte jemand helfen. Ich bin grade dabei ein Script zu schreiben, welches Artikel aus einer bestehenden Datenbank ausliest und per curl an andere Datenbanken verschicken soll.

Das Script sieht folgendermassen aus:

<?
include("setup.php");

$link = mysql_connect($dbhost, $dbuser, $dbpasswd)
  or die ("Could not connect to MySQL");

mysql_select_db ($dbname)
  or die ("Could not select database $dbname");

$sql = "SELECT ID, Title, Linkowner, Description, brief_desc, Our_Category, resource_box FROM lsql_Links WHERE isValidated='Yes' AND send='No' ORDER BY ID DESC LIMIT 1;";

$result = mysql_query($sql) OR die(mysql_error());

while($row = mysql_fetch_assoc($result)) {
$id = $row['ID'];
$Title = $row['Title'];
$Author = $row['Linkowner'];
$Description = $row['Description'];
$Short_Description = $row['brief_desc'];
$Category = $row['Our_Category'];
$Resource_Box = $row['resource_box'];
}

$url = "http://www.meineseite.com/import/import.php";
$ch = curl_init();
// set the target url
curl_setopt($ch, CURLOPT_URL,$url);
// howmany parameter to post
curl_setopt($ch, CURLOPT_POST, 1);
// the parameter 'username' with its value 'johndoe'
curl_setopt($ch, CURLOPT_POSTFIELDS,"Title=$Title&Author=$Author&Description=$Description&Short_Description=$Short_Description&Category=$Category&Resource_Box=$Resource_Box");
$result= curl_exec ($ch);
curl_close ($ch);

$update = "UPDATE lsql_Links SET send = 'Yes' WHERE ID = $id";
?>

Ich habe jetzt 2 Probleme:

1. Der UPDATE Befehl am Schluss funktioniert nicht. Dieser sollte sicherstellen, dass ein Artikel nicht doppelt verschickt wird und den Wert "send" des aktuell Artikels auf "Yes" setzen, nachdem er verschickt wurde.

2. Momentan verwende ich zum testen bei $url nur eine URL, also nur eine Datenbank, an die der Artikel versendet wird. Der Artikel soll aber an mehrere Datenbanken verschickt werden. Deren URL steht jedoch in einer anderen Tabelle und ich weiss nicht, wie ich die URLs auslesen, bzw. ins Script implementieren soll und die Artikel an mehrere URLs schicken kann.
Die Artikel stehen in der Tabelle "lsql_Links" und die URLs, an die verschickt werden soll in der Tabelle "lsql_Users" unter "Import_URL".

Da ich nur ein Hobbyprogrammierer bin, bin ich ja schon froh, dass die Übertragung an eine Datenbank funktioniert, aber jetzt bin ich leider mit meinem Latein am Ende.

Ich hoffe, es kann mir jemand von Euch helfen,

danke

Harry

  1. Ahoi harald_malaga@hotmail.com,

    also soweit ich dich verstehe würde ich

    1. Connecte zu deiner Databse.

    2. die Daten (welche übertragen werden sollen) aus der ersten Tabelle holen und in ein array speichern

    2. hole dir aus der 2ten Tabelle die URLs und User daten der Datenbanken zu denen übertragen werden soll und speichere sie in ein weiteres Array

    3. Schliese die verbundung zu deiner Datenbank

    4. Connecte in einer schleife die einzelnen Datenbanken aus dem Array und füge die daten aus dem ersten Array ein. Schließe am ende der schleife als die verbindung.

    MfG

    1. Hallo,

      danke, das hört sich einfach an, nur ich hab leider keine Ahnung, wie ich das realisieren soll. Das mit dem Update ist gelöst, jetzt muss das Script "nur" noch die einzelnen URLs auslesen und in einer Schleife die Daten senden, nur weiss ich leider nicht wie ich das machen muss. Gibts da irgendwo Beispiele oder ähnliches ?

      Danke Dir aber schonmal für Deine Hilfe.

      1. Hi,

        Hallo,

        danke, das hört sich einfach an, nur ich hab leider keine Ahnung, wie ich das realisieren soll. Das mit dem Update ist gelöst, jetzt muss das Script "nur" noch die einzelnen URLs auslesen und in einer Schleife die Daten senden, nur weiss ich leider nicht wie ich das machen muss. Gibts da irgendwo Beispiele oder ähnliches ?

        Du hast in deinem Code folgendes stehen:
        mysql_select_db ($dbname)
          or die ("Could not select database $dbname");

        $sql = "SELECT ID, Title, Linkowner, Description, brief_desc, Our_Category, resource_box FROM lsql_Links WHERE isValidated='Yes' AND send='No' ORDER BY ID DESC LIMIT 1;";

        $result = mysql_query($sql) OR die(mysql_error());

        while($row = mysql_fetch_assoc($result)) {
        $id = $row['ID'];
        $Title = $row['Title'];
        $Author = $row['Linkowner'];
        $Description = $row['Description'];
        $Short_Description = $row['brief_desc'];
        $Category = $row['Our_Category'];
        $Resource_Box = $row['resource_box'];
        }

        Du schreibst in der While-Schleife alle Zeilen in Variablen, die das Kommando in $sql ausliest. (Da es immer nur eine Zeile ausliest [wegen LIMIT 1] koenntest du dir hier Die Schleife auch sparen. Wenn du mehrere Zeilen auslesen wuerdest wuerden die Variablen in der Schleife - wie $id, $Title, ... - bei jedem Durchlauf ueberschrieben.)

        Fuer das was du vor hast musst du dein sql-Statement so aendern, dass es die URLs ausliest und den Code in der Schleife so anpassen, dass bei jedem Durchlauf die URL an ein array angehaengt wird. Mit Hilfe dieses Arrays kannst du anschliessend das Formularfeld erzeugen.

        mfG,
        steckl

  2. Hi,

    $update = "UPDATE lsql_Links SET send = 'Yes' WHERE ID = $id";

    Ich habe jetzt 2 Probleme:

    1. Der UPDATE Befehl am Schluss funktioniert nicht. Dieser sollte sicherstellen, dass ein Artikel nicht doppelt verschickt wird und den Wert "send" des aktuell Artikels auf "Yes" setzen, nachdem er verschickt wurde.

    Du schreibst lediglich das UPDATE-Kommando in die Variable $update, fuehrst es aber nirgends aus.

    mfG,
    steckl

    1. Ah danke, das mit dem Update funzt schon mal jetzt :-)