Hallo mensen,

Ik wil een plaatsnaam die al bestaat bij een 2e insert uitsluiten.
De plaatsnaam is helaas geen primary index dus ik moet het anders oplossen.


Volgende code gemaakt:

<?
$select_catid =

"SELECT
*
FROM
posts
WHERE post_title LIKE '".$bundesselect."'
AND post_title NOT LIKE '".$plaatsdubbel."'
";

?>



Ik zie echter bij controle in de browser dat hij toch enkele plaatsen dubbel wil toevoegen en dus NOT LIKE $plaatsdubbel overslaat.

Iemand een idee?
Gebruik je een wildcard in die variabelen? Zo niet dan is dat waarschijnlijk het punt en kan je net zo goed = gebruiken.
In een stap eerder zijn uit een lijst met cafes plaatsen geimporteerd.

Nu komen uit een lijst met hotels ook weer plaatsen die geinsert moeten worden.

Echter als de plaats al bestaat moet hij hem overslaan.

Replace / overwrite is geen optie omdat de bestaande plaatsid's moeten blijven bestaan ivm subverwijzingen.


Hier is wat meer code:

<?
$links_qry=
"SELECT
distinct plaatstitel,bundesland
FROM
hotels
";

$exec_links = mysql_query($links_qry) or die ('Ojee, foutieve query das lullig!: '.mysql_error());
while($veld = mysql_fetch_assoc($exec_links)){

$plaats = $veld["plaatstitel"];
$plaatsje = ereg_replace(' ', '-', $veld['plaatstitel']);
$plaatsje = strtolower($plaatsje);
$plaatsje = ereg_replace ("ä", "ae", $plaatsje);
$plaatsje = ereg_replace ("ö", "oe", $plaatsje);
$plaatsje = ereg_replace ("ü", "ue", $plaatsje);
$plaatsje = ereg_replace ("ß", "ss", $plaatsje);
$plaatsje = ereg_replace ("Ä", "Ae", $plaatsje);
$plaatsje = ereg_replace ("Ö", "Oe", $plaatsje);
$plaatsje = ereg_replace ("Ü", "Ue", $plaatsje);

$bundesland = $veld["bundesland"];
$bundeslink = ereg_replace(' ', '-', $veld['bundesland']);
$bundeslink = ereg_replace ("ä", "ae", $bundeslink);
$bundeslink = ereg_replace ("ö", "oe", $bundeslink);
$bundeslink = ereg_replace ("ü", "ue", $bundeslink);
$bundeslink = ereg_replace ("ß", "ss", $bundeslink);
$bundeslink = ereg_replace ("Ä", "Ae", $bundeslink);
$bundeslink = ereg_replace ("Ö", "Oe", $bundeslink);
$bundeslink = ereg_replace ("Ü", "Ue", $bundeslink);
$bundeslink = strtolower($bundeslink);
$bundesselect = 'Vakantie in regio '.$bundesland;
$plaatsdubbel = 'Vakantie in '.$plaats;

// stap 2. verbinden met tabel met posts voor ophalen postid >> postid nodig voor de insert van links in nieuwe tabel links stap 3.
$select_catid =

"SELECT
*
FROM
posts
WHERE post_title LIKE '".$bundesselect."'
AND post_title NOT LIKE '".$plaatsdubbel."'
";

$exec_catid = mysql_query($select_catid) or die ('Ojee, foutieve query!: '.mysql_error());
while ($veldje = mysql_fetch_assoc($exec_catid)) {
$catid = $veldje["ID"];


?>
Geef eens een voorbeeld van welke dubbele namen hij dan overslaat en wat de waarde is van de $plaatsdubbel in die specifieke query.
Bijvoorbeeld de plaatnaam Bremen bestaat al in de tabel met posts de post_title hiervan is: Vakantie in Bremen


In de 2e query probeer ik dus door de variabele $plaatsdubbel te gebruiken te voorkomen dat posts met dezelfde titel nogmaals geplaatst worden.

Mag ik die % ook gebruiken rondom een variabele, of werkt die alleen op tekst ?

op mysql.com heb ik de hele middag al geneust en geexperimenteerd. Kijk zo nog even naar jouw artikel.

[size=xsmall]Toevoeging op 16/01/2012 19:29:28:[/size]

Dus kan dit ??

<?
AND post_title NOT LIKE '".%$plaatsdubbel%."'
?>
Nee, je moet die % gewoon als een string zien. Je kan dus wel zo doen:
<?
"AND post_title NOT LIKE '%".$plaatsdubbel."%'";
?>
of:
<?php
$plaatsdubbel = "%".$plaatsdubbel."%";
?>
Thnx ik test hem
De ereg zal onderhand toch wel over z'n nekkie gaan, herschrijven naar preg_ of kies een ander string fucntie die dit ook kan doen.
Dat gaat nog wel, maar voor beginners is het makkelijk te werken met wat je kent.

Heb vandaag al uren doorgebracht op msql forum en allerlei zaken in dit probleem geprobeerd.

Ook dit werkt nu nog niet.

Stop maar even voor vandaag en ga morgen verder.

Gelukkig ben ik wel eigenwijs en ga door tot iets werkt, desnoods via omwegen en in stappen.

Reageren