Seite 1 von 2

', " und \" zu wenig

Verfasst: Fr 17.Nov, 2006 15:42
von Holger
Ich brauche mal wieder Hilfe von euch Experten!
Wi eihr im Code unten sehen könnt, hebeln sich die ' und " aus, ich habe schon versucht mit \" einen weiteren einzubauen, aber es reicht nicht ...

Gemeint ist dieser Teil:

Code: Alles auswählen

    echo('<a href=\"javascript:showBlock('block3');hideBlock('block2');\">Visa kommentar</a>');

Code: Alles auswählen

<script type="text/javascript">
  function showBlock(blockId)
  {
    document.getElementById(blockId).style.display = "block";
  }
  function hideBlock(blockId)
  {
    document.getElementById(blockId).style.display = "none";
  }
</script>

<tr><td class="tdborder">Kommentar</td>
<div id="block2">
<?php
$result = mysql_query("SELECT * FROM maskinlista ORDER BY maskinbeteckning ASC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<td class="tdborder">');
    echo('<a href=\"javascript:showBlock('block3');hideBlock('block2');\">Visa kommentar</a>');
    echo('</td>');
  }
?>
</div>
<div id="block3" style="display: none">
<?php
$result = mysql_query("SELECT * FROM maskinlista ORDER BY maskinbeteckning ASC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<td class="tdborder">');
    echo($r['kommentar']);
    echo('<a href="javascript:hideBlock('block3');showBlock('block2');">Dölj kommentaren</a>');
    echo('</td>');
  }
?>
</div>
</tr>

Verfasst: Fr 17.Nov, 2006 16:41
von oxpus
Wenn Du die Hochkommas schon quotest, dann nimm auch die richtigen:

Code: Alles auswählen

echo('<a href="javascript:showBlock(\'block3\');hideBlock(\'block2\');">Visa kommentar</a>');
Kleiner Tipp:
Die "äussersten" Hochkommas eines Strings (oder auch Teilstrings!) sind die Vorgabe. Willst Du diese innerhalb des Strings als Zeichen verwenden, muss genau dieses gequotetet werden (also ein \ voranstellen).

Du hast in Deiner Zeile den String mit einfachen Hochkommas umschlossen, aber die doppelten gequotet. Das war dann genau falsch...

Verfasst: Fr 17.Nov, 2006 19:29
von Holger
Ich seh den Fehler!
Pefekt!
Danke!
Auch ich bin Lernfähig ... glaube ich! ;-)

EDIT: trotzdem habe ich einen Denkfehler da drin ... hmmm, muss ich mir nochmal genauer anschauen ...

Verfasst: Mo 20.Nov, 2006 08:59
von Holger
Aaaaalso,

ich versuche dieses Skript zum Laufen zu bringen:

Code: Alles auswählen

<tr><td class="tdborder">Kommentar</td>

<?php
$result = mysql_query("SELECT * FROM maskinlista ORDER BY maskinbeteckning ASC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<script type="text/javascript">');
    echo('  function showBlock(blockId)');
    echo('  {');
    echo('    document.getElementById(blockId).style.display = "block";');
    echo('  }');
    echo('  function hideBlock(blockId)');
    echo('  {');
    echo('    document.getElementById(blockId).style.display = "none";');
    echo('  }');
    echo('</script>');
    echo('<div id="block2">');
    echo('<td class="tdborder">');
    echo('<a href="javascript:showBlock(\'block3\');hideBlock(\'block2\');">Visa kommentaren</a>');
    echo('</td>');
    echo('</div>');
    echo('<div id="block3" style="display: none">');
    echo('<td class="tdborder">');
    echo($r['kommentar']);
    echo('<br>This text can be hidden again if you click <a href="javascript:hideBlock(\'block3\');showBlock(\'block2\');">here</a>.');
    echo('</td>');
    echo('</div>');
  }
?>
</tr>
Leider ergibt das nicht das gewünschte Ergebnis!
Was mache ich Falsch?
Das Original habe ich von dieser Seite:
http://blog.go-test.net/2006/09/04/simp ... avascript/

Das Ergebnis:
http://www.gremminger.se/service/compare/visa.php
Zeile "Kommentar".

Ich habe es auch schon so versucht:

Code: Alles auswählen

<tr><td class="tdborder">Kommentar</td>

<script type="text/javascript">
  function showBlock(blockId)
  {
    document.getElementById(blockId).style.display = "block";
  }
  function hideBlock(blockId)
  {
    document.getElementById(blockId).style.display = "none";
  }
</script>

<?php
$result = mysql_query("SELECT * FROM maskinlista ORDER BY maskinbeteckning ASC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<div id="block2">');
    echo('<td class="tdborder">');
    echo('<a href="javascript:showBlock(\'block3\');hideBlock(\'block2\');">Visa kommentaren</a>');
    echo('</td>');
    echo('</div>');
    echo('<div id="block3" style="display: none">');
    echo('<td class="tdborder">');
    echo($r['kommentar']);
    echo('<br>This text can be hidden again if you click <a href="javascript:hideBlock(\'block3\');showBlock(\'block2\');">here</a>.');
    echo('</td>');
    echo('</div>');
  }
?>
</tr>

Verfasst: Mo 20.Nov, 2006 10:56
von oxpus
Naja, wenn Du auch in einem Link hideBlock(); und showBlock(); angibst, wird der auch geöffnet und sogleich wieder geschlossen ;)

Verfasst: Mo 20.Nov, 2006 10:58
von Holger
Tja, das ist aber für unterschiedlieche Blöcke: block3 und block2.
Das Problem ist erstmal die Darstellung ...

Verfasst: Mo 20.Nov, 2006 13:19
von oxpus
Holger, wenn Du solche Links erstellst, was wird dann mein Anklicken desselben passieren:

Code: Alles auswählen

<a href="javascript:hideBlock(\'block3\');showBlock(\'block2\');">here</a>
??? ;)

Richtig: hideBlock und showBlock werden dann hintereinander ausgeführt.
Also wird der Text versteckt und gleich danach wieder angezeigt.

Verfasst: Mo 20.Nov, 2006 13:22
von Holger
Aber es werden doch zwei unterschiedliche Blöcke angesprochen!
Es wird block3 ausgeblendet, aber block2 eingeblendet!
Ich glaub, ich stehe auf der Leitung!

Verfasst: Mo 20.Nov, 2006 13:32
von oxpus
Du rufst 2 Javascriptfunktionen auf, wobei die zweite Funktion schon dann nicht mehr ausgeführt wird, wenn die erste negativ verläuft.
Da Du hier 2 Blöcke in der Darstellung beeinflussen willst, warum dann nicht eine Funktion, die den Block laut Parameter 1 versteckt und den Block laut Parameter 2 abzeigt?

Und btw:
Um einen Block anzuzeigen, verwendet man unter Javascript

Code: Alles auswählen

display:
und um ihn zu verstecken

Code: Alles auswählen

display: none
Also gemäß Deinem Code

Code: Alles auswählen

    echo('  function showBlock(blockId)'); 
    echo('  {'); 
    echo('    document.getElementById(blockId).style.display = \'\';'); 
    echo('  }'); 
    echo('  function hideBlock(blockId)'); 
    echo('  {'); 
    echo('    document.getElementById(blockId).style.display = \'none\';'); 
    echo('  }');
Und eleganter in einer Funktion:

Code: Alles auswählen

    echo('  function switchBlock(block_hide, block_show)'); 
    echo('  {'); 
    echo('    document.getElementById(block_hide).style.display = \'none\';'); 
    echo('    document.getElementById(block_show).style.display = \'\';'); 
    echo('  }'); 
Dazu sei auch erwähnt, daß man in Javascript besser nur immer mit einfachen Hochkommas arbeitet, diese also bei Bedarf quotet.

Und BTW:
Machst Du momentan nicht ein paar Dinge zu viel auf einmal?
Da kann man schon mal leicht den Überblick verlieren...

Verfasst: Mo 20.Nov, 2006 13:52
von Holger
Du meinst also, das die elegantere Version diese ersetzen sollte:

Code: Alles auswählen

    echo('<script type="text/javascript">'); 
    echo('  function showBlock(blockId)'); 
    echo('  {'); 
    echo('    document.getElementById(blockId).style.display = "block";'); 
    echo('  }'); 
    echo('  function hideBlock(blockId)'); 
    echo('  {'); 
    echo('    document.getElementById(blockId).style.display = "none";'); 
    echo('  }'); 
    echo('</script>');
Das andere kann so bleiben?



Edit:
ich habe es jetzt hiermit versucht:

Code: Alles auswählen

<tr><td class="tdborder">Kommentar</td>

<?php
$result = mysql_query("SELECT * FROM maskinlista ORDER BY maskinbeteckning ASC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<script type="text/javascript">');
    echo('  function switchBlock(block_hide, block_show)'); 
    echo('  {'); 
    echo('    document.getElementById(block_hide).style.display = \'none\';'); 
    echo('    document.getElementById(block_show).style.display = \'\';'); 
    echo('  }');
    echo('</script>');
    echo('<div id="block2">');
    echo('<td class="tdborder">');
    echo('<a href="javascript:showBlock(\'block3\');hideBlock(\'block2\');">Visa kommentaren</a>');
    echo('</td>');
    echo('</div>');
    echo('<div id="block3" style="display: none">');
    echo('<td class="tdborder">');
    echo($r['kommentar']);
    echo('<br>This text can be hidden again if you click <a href="javascript:hideBlock(\'block3\');showBlock(\'block2\');">here</a>.');
    echo('</td>');
    echo('</div>');
  }
?>
</tr>
Es lässt sich immer noch nichts ein/ausblenden.

Verfasst: Mo 20.Nov, 2006 14:05
von Holger
Es will nicht!

Modifiert:

Code: Alles auswählen

<tr><td class="tdborder">Kommentar</td>

<?php
$result = mysql_query("SELECT * FROM maskinlista ORDER BY maskinbeteckning ASC");
  while ($r = mysql_fetch_array($result))
  {
    echo('<script type="text/javascript">');
    echo('  function switchBlock(block_hide, block_show)'); 
    echo('  {'); 
    echo('    document.getElementById(block_hide).style.display = \'none\';'); 
    echo('    document.getElementById(block_show).style.display = \'\';'); 
    echo('  }');
    echo('</script>');
    echo('<div id="block2">');
    echo('<td class="tdborder">');
    echo('<a href="javascript:switchBlock(\'block2\',\'block3\');">Visa kommentaren</a>');
    echo('</td>');
    echo('</div>');
    echo('<div id="block3" style="display: none">');
    echo('<td class="tdborder">');
    echo($r['kommentar']);
    echo('<br>This text can be hidden again if you click <a href="javascript:switchBlock(\'block3\',\'block2\');">here</a>.');
    echo('</td>');
    echo('</div>');
  }
?>
</tr>

Verfasst: Mo 20.Nov, 2006 14:40
von oxpus
Ich habs jetzt erstmal entzerrt.
So sollte es besser klappen:

Code: Alles auswählen

<script type="text/javascript">'
<!--
function switchBlock(block_hide, block_show)
{
	var hide = getElementById(block_hide);
	var show = getElementById(block_show);
	
	hide.style.display = 'none';
	show.style.display = '';
}
//-->
</script>

<tr><td class="tdborder">Kommentar</td>

<?php

$result = mysql_query("SELECT * FROM maskinlista ORDER BY maskinbeteckning ASC");
while ($r = mysql_fetch_array($result))
{

?>
	<td class="tdborder">
	<tbody id="block2" style="display:">
	<a href="javascript:void(0);" onclick="javascript:switchBlock('block2', 'block3');">Visa kommentaren</a>
	</tbody>
	<tbody id="block3" style="display: none">
	$r['kommentar']<br>
	This text can be hidden again if you click <a href="javascript:void(0);" onclick="javascript:switchBlock('block3', 'block2');">here</a>
	</tbody>
	</td>

<?php

  }

?>

</tr>

Verfasst: Mi 22.Nov, 2006 09:40
von Holger
Klappt leider immer noch nicht:
http://www.gremminger.se/service/compare/visa.php
Die Kommentare stehen untereinanander und lassen sich nicht aufklappen.

Lass Dich nicht von der Kommentar-Zeile darunter irritieren, das ist die Alte, die ich noch drinnen gelassen habe.

Verfasst: Mi 22.Nov, 2006 14:33
von oxpus
Ich habs geändert. Versuchs mal so...

Verfasst: Mi 22.Nov, 2006 14:54
von Holger

Verfasst: Mi 22.Nov, 2006 17:48
von oxpus
Spannende Ansicht.
Pack doch mal bitte die Tabelle hier an, damit ich das besser testen kann...

Verfasst: Mi 22.Nov, 2006 21:13
von Holger
Welche meinst Du? Die ganze Datei visa.php?

Verfasst: Mi 22.Nov, 2006 23:16
von oxpus
Die Datenbanktabelle...

Verfasst: Do 23.Nov, 2006 08:49
von Holger

Code: Alles auswählen

-- 
-- Table structure for table `maskinlista`
-- 

CREATE TABLE `maskinlista` (
  `id` int(11) NOT NULL auto_increment,
  `tillverkare` text,
  `maskinbeteckning` text,
  `maskintyp` text,
  `produktion` text,
  `antal` int(11) default NULL,
  `vikt` text,
  `laengd` text,
  `bredd` text,
  `hoejd` text,
  `raeckvidd` text,
  `skopvolym` text,
  `motor` text,
  `motoreffekt` text,
  `kommentar` text,
  `bild` text NOT NULL,
  `merinfo` text NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=27 ;

Verfasst: Do 23.Nov, 2006 10:17
von oxpus
Und so 1 bis 2 Datensätze ??? *duck*

Verfasst: Do 23.Nov, 2006 13:48
von Holger
Sorry! :oops:

Code: Alles auswählen

INSERT INTO `maskinlista` VALUES (9, 'Åkerman', 'H3B', 'Bandmaskin', '1986-91', 486, '7900 - 8900', '2,78', '2,3', '2,64 - 2,85', '7,0 - 7,5', '0,325', 'Volvo TD 31 ACE', '49', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=390');
INSERT INTO `maskinlista` VALUES (8, 'Åkerman', 'H3', 'Bandmaskin', '1984-86 ', 276, '8100', '2,8', '2,3', '2,6 - 2,9', '6,9', '', 'Volvo Penta TD30A', '49', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=389');
INSERT INTO `maskinlista` VALUES (10, 'Åkerman', 'H5', 'Bandmaskin', '1991-93', 36, '12600 - 12900', '3,80', '2,43 -  2,70', '2,90 -  3,04', '7,7 - 8,1', '0,150 - 0,6', 'Iveco 8041 Si 25 ', '80', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=391');
INSERT INTO `maskinlista` VALUES (11, 'Åkerman', 'H7', 'Bandmaskin', '1978-79 ', 126, '14100', '3,99', '2,49 - 2,75', '2,95 - 3,16', '8,10 - 8,80 ', '0,5 - 0,6 ', 'Volvo Penta TD60A', '104', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=392');
INSERT INTO `maskinlista` VALUES (12, 'Åkerman', 'H7B', 'Bandmaskin', '1980-85', 684, '14700 - 15600', '4,11', '2,49 - 2,75', '2,95 - 3,15', '8,10 - 8,80 ', '0,5 - 0,6 ', 'Volvo Penta TD60B', '97', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=393');
INSERT INTO `maskinlista` VALUES (13, 'Åkerman', 'H7C', 'Bandmaskin', '1985-93 ', 660, '15400 - 16300', '4,28', '2,49 - 2,90', '2,95 - 3,15', '8,2 - 8,9', '0,5', 'Volvo Penta TD60D', '97', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=394');
INSERT INTO `maskinlista` VALUES (14, 'Åkerman', 'H9', 'Bandmaskin', '1974-76 ', 648, '15200', '3,40', '2,62 - 2,65 ', '3,11', '', '0,5 - 0,75 ', 'Volvo Penta TD70B', '149', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=395');
INSERT INTO `maskinlista` VALUES (15, 'Åkerman', 'H9B', 'Bandmaskin', '1976-82 ', 1079, '17800 - 18500', '4,36', '2,49 - 2,80', '2,98 - 3,19', '8,5 - 9,2', '0,65 - 0,85', 'Volvo Penta TD60B', '112', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=396');
INSERT INTO `maskinlista` VALUES (16, 'Åkerman', 'H10', 'Bandmaskin', '1982-85', 528, '20900 - 21600', '4,67', '2,49 - 3,00', '3,12', '9,1 - 10,5', '0,7 - 1,05', 'Volvo Penta TD60D', '112', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=397');
INSERT INTO `maskinlista` VALUES (17, 'Åkerman', 'H10B', 'Bandmaskin', '1985 - 92', 2033, '21,0 - 21,8', '3,96', '3,00 - 3,25', '3,01 - 3,15', '9,1 - 10,0', '0,28 - 1,325', 'Volvo TD61ACE', '122', 'Produktionsår med New comfort Hytten 1988-92 \r\nProduktionsår i USA 1985-92\r\nAntal producerade 972st med gammla Hytten ,och med newcomfort Hytten 876st\r\noch 185st maskiner producerades i USA\r\n', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=398');
INSERT INTO `maskinlista` VALUES (18, 'Åkerman', 'H11', 'Bandmaskin', '1966-69', 392, '18600 - 18900', '3,59', '2,75 - 2,85', '2,89 - 3,10', '9,1 - 10,5', '0,75', 'Volvo Penta D70A ', '99', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=399');
INSERT INTO `maskinlista` VALUES (19, 'Åkerman', 'H11B', 'Bandmaskin', '1969-71', 383, '', '', '', '', '', '', '', '0', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=834');
INSERT INTO `maskinlista` VALUES (20, 'Åkerman', 'H12', 'Bandmaskin', '1971-77', 1117, '', '', '', '', '', '', '', '0', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=835');
INSERT INTO `maskinlista` VALUES (21, 'Åkerman', 'H12B', 'Bandmaskin', '1977-81', 1128, '23000 -  23750', '4,99', '2,75 - 3,00', '3,03 - 3,23', '9,8 - 10,8', '0,40 - 0,87', 'Volvo Penta TD70G', '142', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=400');
INSERT INTO `maskinlista` VALUES (22, 'Åkerman', 'H14', 'Bandmaskin', '1982-84', 336, '26750 - 27730 ', '5,37', '2,75 - 3,10', '3,28', '10,0 - 11,5', '0,4 - 0,8', 'Volvo Penta TD70G', '142', 'Antal producerade i Sverige 288st och 48st i USA', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=401');
INSERT INTO `maskinlista` VALUES (23, 'Åkerman', 'H14B', 'Bandmaskin', '1984-92', 1278, '26600 - 27700', '4,42', '3,10 - 3,33', '3,17 - 3,31', '10,1 - 10,8', '1,2', 'Volvo TD71ACE', '154/209', 'Produktionsår med gammla hytten 1984-88\r\nmed new comfort hytten 1988-92\r\noch Produktionsår i USA 1985-92\r\nAntal producerade med gammla hytten 576\r\nmed new comfort hytten 486\r\noch 216 maskiner producerades i USA', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=402');
INSERT INTO `maskinlista` VALUES (24, 'Åkerman', 'H16', 'Bandmaskin', '1971-73', 102, '?', '?', '?', '?', '?', '?', '?', '?/?', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=836');
INSERT INTO `maskinlista` VALUES (25, 'Åkerman', 'H16B', 'Bandmaskin', '1973-75', 192, '29800', '4,45', '2,90 - 3,10', '3,35', '10,60 - 11,60', '1,35', 'Volvo Penta TD100A', '181/ 247', '', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=403');
INSERT INTO `maskinlista` VALUES (26, 'Åkerman', 'H16C', 'Bandmaskin', '1975-84', 594, '36400 - 38500', '5,66', '3,10 - 3,30', '3,34', '10,70 - 11,95', '?', 'Volvo Penta TD100A', '177/240', 'produktionsår i sveriege 1975-84\r\ni USA 1982-84 \r\nAntal producerade i sverige 558st\r\noch 36st i USA', '', 'http://www.gremminger.se/service/forum/viewtopic.php?t=404');

Verfasst: Do 23.Nov, 2006 14:18
von oxpus
Oki, danke.
Dann kann ich das die Tage austesten.

Ich melde mich dann wieder...

Verfasst: Do 23.Nov, 2006 14:19
von Holger
Danke! :respect:

Verfasst: Fr 24.Nov, 2006 09:18
von oxpus
So, jetzt hab ichs aber.
Siehe Anhang...

Verfasst: Fr 24.Nov, 2006 13:09
von Holger
PERFEKT! DANKE! :hurra:
Jetzt werde ich noch versuchen, den Link bei fehlenden Kommentaren auszublenden ... aber dazu habe ich ja schon Hilfe bekommen!

EDIT:
meine endgültige Version. DANKE für die Hilfe!

Code: Alles auswählen

<script type="text/javascript">
<!--
function switchBlock(block_hide, block_show)
{
	var hide = document.getElementById(block_hide);
	var show = document.getElementById(block_show);
	
	hide.style.display = 'none';
	show.style.display = '';
}
//-->
</script>

<tr><td class="tdborder">Kommentar</td>

<?php

$result = mysql_query("SELECT * FROM maskinlista ORDER BY maskinbeteckning ASC");
$i = 0;
while ($r = mysql_fetch_array($result))
if ($r['kommentar']) 
{ 
{

	$block2 = 'block2_'.$i;
	$block3 = 'block3_'.$i;

?>
	<td class="tdborder">
	<div id="<?php echo $block2 ?>" style="display:">
	<a href="javascript:void(0)" onclick="switchBlock('<?php echo $block2 ?>', '<?php echo $block3 ?>')">Visa kommentaren</a>
	</div>
	<div id="<?php echo $block3 ?>" style="display: none">
<?php echo $r['kommentar']; ?>
	<br>
	This text can be hidden again if you click <a href="javascript:void(0)" onclick="switchBlock('<?php echo $block3 ?>', '<?php echo 

$block2 ?>')">here</a>
	</div>
	</td>

<?php

  $i++;

  }

    } 
else 
{ 
echo('<td class="tdborder">');
echo('&nbsp;'); 
echo('</td>');
} 

?>

</tr>