PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe zu INSERT TO ! Newbie


Maverickx010
27.05.2006, 11:44:07
Hallo,

ich bin totaler Anfänger und habe mir nun ein kleines PHP Prog geschrieben, daß mir eine Textdatei zerlegt und einzelne Daten heraussucht.

In dem Prog wird durch eine while Schleife die einzelnen Daten in die Variable $weburl geschrieben. Diese wird bei jedem Durchlauf durch einen neuen Wert ersetzt.

Nun wollte ich diese Daten in mysql übertragen und habe folgendes in die Schleife eingebaut:
$query = "INSERT INTO shops (weburl) VALUES ('$weburl')";
$control = mysql_query($query);

Die Schleife läuft die volle ANzahl durch, jedoch schreibt er nur beim ersten Durchlauf etwas in die DB.

Ich bin halb am verzweifeln, schon leicht depressiv und brauche dringend Hilfe :-)


Gruß Nils

Serp
27.05.2006, 11:50:22
Hast du eventuell weburl auf unique gesetzt und in der Schleife nen Fehler drin, so dass $weburl immer den gleichen Wert hat?

Maverickx010
27.05.2006, 11:55:15
Das war nicht der Fehler sondern ich hatte bei meiner Spalte ID kein auto-increment angestellt.

Dein Tipp hat mich aber in die richtige Richtung gebracht.

DANKE

Maverickx010
27.05.2006, 12:15:29
Hallo,

ich hab leider immernoch ein Problem. Ich will wie folgt in die DB schreiben:

$query = "INSERT INTO shops (weburl,shopbeschreibung,artikelanzahl) VALUES ('$weburl', '$beschreibung', $artikel)";
$control = mysql_query($query);

In der Variable $beschreibung sind Sonderzeichen enthalten, hier der Text:
Wir führen CD'S & Schallplatten

Wie kann ich trotz der enthaltenen Sonderzeichen den Text einfügen ?

Serp
27.05.2006, 13:29:35
Das Einfügen sollte normalerweise auf jeden Fall funktionieren. Wenn es das nicht tut, solltest du die Zeichenkodierung, mit der das in der Datenbank gespeichert wird, ändern. Aber eigentlich sollte das mit den Standardvorgaben klappen.

Allerdings würd ich bei der Ausgabe einfach mal ein htmlentities() empfehlen. Schadet nie und maskiert auch das ein oder andere dieser Sonderzeichen.

Maverickx010
27.05.2006, 19:58:34
Hallo,

wie immer erst mal vielen Dank für den Tip mit dem maskieren. Ich habe aber wieder ein neues Problem.

Jetzt schreibt er zwar alle Datensätze korrekt in die Datenbank, jedoch geschieht es 2 mal. Wenn ich die Datenbak leere fängt die ID bei 0 an und er liest die 25 Datensätze korrekt ein. Allerdings kommen ab ID26 die Datensätze nochmal rein. So habe ich statt 25 Datensätze 50 Datensätze ?????

Ich hab schon ein Zählvariable eingebaut die mir auch korrekt 25 Datensätze wiedergibt.

Ich hab keine Ahnung was das nun wieder ist. Vielleicht weiss jemand ja weiter.

Hier der Code:

$datei = fopen($eneu,"r");
$inhalt = fread ($datei, filesize($eneu));
fclose ($datei);
$n = 1;
include("mysql.inc");

while ($search1l = strpos ($inhalt, "cellspacing=\"0\"><tr><td><b><a href=\"", $n))
{

// Erste Suche URL
$search1b = $search1l + 36;
$search1r = strpos ($inhalt, "\"", $search1b);
$laenge1 = $search1r - $search1b;
$weburl = substr($inhalt, $search1b, $laenge1);
// echo "<br />\n";

// Url Suche fertig ARTIKELANZAHL
$search2l = strpos ($inhalt, "nowrap><b>", $search1r);
$search2r = strpos ($inhalt, "Artikel", $search2l);
$search2b = $search2l + 10;
$laenge2 = $search2r - $search2b;
$artikel = substr($inhalt, $search2b, $laenge2);
// echo "<br />\n";

// Url und Artikel Suche fertig Shopbeschreibung
$search3l = strpos ($inhalt, "colspan=\"2\">", $search2r);
$search3r = strpos ($inhalt, "</td>", $search3l);
$search3b = $search3l + 12;
$laenge3 = $search3r - $search3b;
$beschreibung = substr($inhalt, $search3b, $laenge3);
// echo "<br />\n";
// echo "<br />\n";
$n = $search3b;

// Übertrag in Datenbank
$beschreibung1 = mysql_real_escape_string($beschreibung);
$insert = "INSERT INTO shops (weburl,shopbeschreibung,artikelanzahl) VALUES
('$weburl', '$beschreibung1', $artikel)";
$control = mysql_query($insert)or die( mysql_error() );

// Zähler Datensätze
$zaehler++;

echo "eingelesen <br>";