Wenn ich nix übersehen hab, dann gibts nur id und class.
Zur zweiten Frage:
CSS
#namenlos1{
/*container id namenlos1 ansprechen*/
}
#namenlos1 img{
/*alle img elemente in id namenlos1 ansprechen*/
}
bsp:
Wenn ich nix übersehen hab, dann gibts nur id und class.
Zur zweiten Frage:
#namenlos1{
/*container id namenlos1 ansprechen*/
}
#namenlos1 img{
/*alle img elemente in id namenlos1 ansprechen*/
}
bsp:
probier mal:
EDIT: sorry, hab Dein Post überflogen ....
PHP wird in einer html Datei nicht ausgeführt (es sei denn: http://www.devmag.net/php-tricks/238…-ausfuhren.html)
Also guck Dir erstmal an was Du da geschrieben hast, wenn man es untereinander anreiht:
<html><body>
<table id="theT" border="3"></table>
<script>
document.getElementById('theT').innerHTML =
" "
+ "<tr>"
+"<td>1</td>"
+ "<td>2</td>"
+"<td>3</td>"
+ "<td>4</td>"
+"</tr>";
document.getElementById('theT').innerHTML
+= " "
+" "
+"<tr>"
+"<td>10</td>"
+ "<td>20</td>"
+"<td>30</td>"
+ "<td>40</td>"
+"</tr>";
// the problems beginns///////////////////
for ( i = 1 ; i < 33 ; i++ ) {
document.getElementById('theT').innerHTML
+= " "
+" "
+"<tr>"
+"<td>001</td>"
+ "<td>002</td>"
+"<td>003</td>"
+ "<td>004</td>"
+"<td>005</td>"
+ "<td>006</td>"
+"<td>007</td>"
+ "<td>008</td>"
+"<td>009</td>"
+ "<td>010</td>"
+"</tr> <tr>";
}
document.getElementById('theT').innerHTML += "</tr>";
} /*<= klammer ? wovon ?*/
Alles anzeigen
so könnte man das Ganze umsetzen:
<!DOCTYPE html>
<html>
<head>
<table id="theT" border="3">
<!-- ... -->
</table>
<script>
var table = document.getElementById("theT");
var tr = document.createElement("tr");
tr.setAttribute("class","deineClass"); /*bsp zum attribute setzen*/
tr.innerHTML = "test"; /*der tr inhalt geben*/
/*tr an table (tbody) adden:*/
table.appendChild(tr);
/*die schleife*/
var tr = document.createElement("tr");
for(var i=1;i<33;i++){
var temp_tr = tr.cloneNode(false); /* cloneNode() => http://www.w3schools.com/jsref/met_node_clonenode.asp*/
temp_tr.innerHTML = "00"+i;
table.appendChild(temp_tr);
}
/*oder auch mit attributen:*/
var tr = document.createElement("tr");
tr.setAttribute("class","deineClass");
for(var i=1;i<33;i++){
var temp_tr = tr.cloneNode(true); /*true if you want to clone the node, its attributes, and its descendants => http://www.w3schools.com/jsref/met_node_clonenode.asp*/
temp_tr.innerHTML = "mit attributen --00"+i;
table.appendChild(temp_tr);
}
</script>
</body>
</html>
Alles anzeigen
0 array könnte leer sein wenn du evtl $x = 0; definiert hast, und VOR dem ersten insert ins array schon ein +1 oder $x++ hast.
Wenn es dir möglich ist: schicke die daten gleich sortiert ins array rein.
zb
Array(
'myvideo.at' => Array(
0 => Array(
'url' => '/watch/00xxx00'
'info' => 'bla'
'usw' => 'bla'
)
1 => Array(
'url' => '/watch/00xxx11'
'info' => 'bla'
'usw' => 'bla'
)
# ...
)
'youtube.com' => Array(
0 => Array(
'url' => '/watch/00xxx00'
'info' => 'bla'
'usw' => 'bla'
)
1 => Array(
'url' => '/watch/00xxx11'
'info' => 'bla'
'usw' => 'bla'
)
# ...
)
)
Alles anzeigen
oder:
Array(
0 => Array(
'domain' => 'youtube.com'
'url' => '...'
)
1 => Array(
'domain' => 'myvideo.at'
'url' => '...'
)
2 => Array(
'domain' => 'myvideo.at'
'url' => '...'
)
# ...
)
Alles anzeigen
wenn du es so nutzen willst we es im moment ist, dann evtl sowas hier:
$dein_array = array(
0 => 'http://www.myvideo.at/watch/00xxx00',
1 => 'http://www.youtube.com/watch?v=00xxx01',
2 => 'http://www.myvideo.at/watch/00xxx02',
3 => 'http://www.youtube.com/watch?v=00xxx03',
);
function getRandom($dein_array,$gesucht){
$min = 0;
$max = count($dein_array)-1; # minus 1 da arrays bei 0 anfangen (können)
$random = mt_rand($min,$max);
$url = $dein_array[$random];
if(stristr($url,$gesucht)===false){ # wenn die gesuchte domain nicht im zufälligen string enthalten ist -
$url = getRandom($dein_array,$gesucht); # dann ruft sich die function selbst auf
}
return $url;
}
echo getRandom($dein_array,'youtube.com');
Alles anzeigen
! => ist aber nicht wirklich empfehlenswert, da bei vielen daten eine längere schleife entsteht.
Wenn du aber die daten im array nach domain sortiert hast, dann erübrigt sich die schleife.
nein.
Es gibt auch andere möglichkeiten. zB das gleiche prinzip per javascript.
Oder auch gar kein <img ...> angeben und erst bei onmousover per javascript das img einfügen bzw laden (ajax).
Aber wenn dir das alles nix sagt, dann würde ich eher "pagespeed" empfehlen. (https://developers.google.com/speed/pagespeed/)
Darin enthalten ist u.a. "lazyload". Dadurch werden (einfach gesagt) bilder nachgeladen, wenn sie benötigt werden.
Einfach mal ansehen =)
danke sieht gut aus. scheint aber auch nicht mit flash zu funktionieren =(
EDIT: hab jetzt nach langer suche nen "schlussstrich" gezogen - es ist nicht möglich einen screenshot von einem element zu erstellen, welches ein iframe oder flash content enthält.
Beim iframe lingt es wohl daran, dass zB html2canvas auf die DOM-elemente zugreifen müsste, was allerdings cross site scripting wäre und somit unterbunden wird.
Man erhält also zugriff auf das iframe DOM element, allerdings nicht auf den content.
Schade - aber wohl richtig so =/
Hab mir das script jetzt nicht angesehen, weiß aber genau was Du meinst =)
Ich hab auf unserer seite auch tabellen mit nem haufen bildern bei mouseover.
Hab das ganze dann so gelöst, dass die src des img auf default leer ist und erst bei mouseover eingefügt wird.
bsp:
trigger ist relativ einfach. Schließe mich aber gerade der "Seite" der "nicht triggernden" an ![]()
Trigger sind ja schön. Nur verursachen die nur kopfschmerzen.
Es ist einfach besser die tabellen in beziehung zu setzen (fremdschlüssel ...@innoDb) und so entscheiden zu lassen, wann was geändert oder gelöscht wird.
bsp:
2 tabellen:
mastertabelle "benutzer", (id,name, ...)
detailtabelle "benutzereinstellungen" (nr[autoincrement],id,einstell1,einstell2,...)
die beiden werden nun "verknüpft" per "foreign key" (freamdschlüssel)
ALTER TABLE ´dbname´.`benutzereinstellungen` -- die detailtabelle "benutzereinstellungen" ändern
ADD CONSTRAINT `foreignkeyname` -- irgend ein name
FOREIGN KEY (`id`) -- die spalte "id" der detailtabelle "benutzereinstellungen" ist ein fremdschlüssel
REFERENCES `dbname`.`benutzer` (`id`) -- spalte "id" der mastertabelle "benutzer" ist die referenz
ON DELETE CASCADE -- beim löschen in der mastertabelle => auch in dieser tabelle löschen
ON UPDATE NO ACTION -- bei update in der mastertabelle => keine aktion
;
Also - keine trigger mehr =)
Kennt jemand von euch ne lösung wie man per js ein screenshot vom inhalt eines div containers erstellt, auch wenn darin zb ein iframe auftaucht?
html2canvas funktioniert nicht, da iframe ect nicht klappt
Zitat von http://html2canvas.hertzen.com/documentation.htmlThe script doesn't render plugin content such as Flash or Java applets. It doesn't render iframe content either, unless the content resides under the same origin.
thanks
EDIT
Vergiss es =) Hab gerade selbst was gelernt
(Danke Roland =)
include 'variabeln.php'; Dürfte so nicht funktionieren.
Wenn Du per include etwas nachlädst, dann erwartet PHP nun mal PHP,
Was bei Dir aber geladen wird ist für PHP nicht "lesbar".
Um deutlicher zu werden- Bsp:
Das hier:
würde so "enden":
echo '... test usw ...';<!-- Variabeln --> <?php $Datum = $_POST["Datum"]; $Einkaufsliste = $_POST["Einkaufsliste"]; ?> <!-- Variabeln Ende -->
Es sei denn es ist nur ein Ausschnitt aus der "variabeln.php"
Groß und Kleinschreibung beachten =)
Im Formular setzt Du den Namen auf "From". Beim Speichern aber fragst Du "FROM" ab.
Setz mal: error_reporting(E_ALL); am anfang des Scripts (solange Du daran arbeitest). Dann bekommst Du "solche Sachen" als Waring: "Notice: Undefined index: FROM in ..."
(http://php.net/manual/en/function.error-reporting.php)
btw:
Mach es Dir mal einfacher. Anstatt immer:
<?php echo "Eingetragener Startort: ". $_POST['From']; ?>
<br>
<?php echo "Eingetragener Zielort: ". $_POST['To']; ?>
<br>
<?php echo "Eingetragene Startzeit: ". $_POST['Startzeit']; ?>
<br>
...
kannst Du auch solche Blöcke zusammen fassen (liest sich besser ect)
<?php
echo "
Eingetragener Startort: ".$_POST['From']."<br>
Eingetragener Zielort: ".$_POST['To']."<br>
Eingetragene Startzeit: ".$_POST['Startzeit']."<br>
Eingetragene Ankunftszeit: ".$_POST['Ankunftszeit']."<br>
Personen: ".$_POST['Personen']."<br>
";
?>
# oder auch
<?php echo "
Eingetragener Startort: ".$_POST['From']."
<br>
Eingetragener Zielort: ".$_POST['To']."
<br>
Eingetragene Startzeit: ".$_POST['Startzeit']."
<br>
Eingetragene Ankunftszeit: ".$_POST['Ankunftszeit']."
<br>
Personen: ".$_POST['Personen']."
<br>
";?>
Alles anzeigen
xml_parse_into_struct()
http://www.php.net/manual/de/func…into-struct.php
Habs nicht getestet, sieht aber nach dem aus, was Du suchst.
Du kannst Files nutzen - .txt, .dat, .csv ... . Es macht halt mehr Sinn eine Datenbank zu nutzen, sobald es "viele" Daten werden.
Und ich denke bei dem was Du vor hast werden es nicht wenig sein.
Unterschiede zw. mysql und mysqli weiß ich nicht. Würde aber auch gleich das hier empfehlen: http://www.php.net/manual/de/pdo.prepared-statements.php
Zitat von http://www.webmasterwork.com/page/p359250-mysqli-oder-normales-mysql.html#post359250
Bevor du nun aber beginnst, dich mit mysqli zu beschäftigen, rate ich dir eher, dich mit pdo-Treibern (mysql-pdo) zu beschäftigen. In der kommenden php -Version 6 werden die pdo-Treiber der empfohlene Standart für den Zugriff auf Datenbanken sein. Der Vorteil dieser pdo-Treiber ist, dass sie gemeinsame Schnittstellen nutzen. Dadurch ist die Migration von einem Datenbankmanagementsystem auf ein anderes wesentlich einfacher möglich, als bisher.
Ich weiß ja auch nicht wie weit Du bist. Evtl ist es für Dich mit Files einfacher. Hab auch so angefangen. Allerdings wird es "komisch" sobald Du um die 50 000 Einträge einzulesen hast.
Um es ein bischen zu verdeutlichen:
durchsuchen von rund 50 000 Einträgen
- in Files ~2 sec (wenn ich mich richtig erinnere) (einlesen plus durchlaufen/suchen)
- in datenbank ~ 0.00x sec
Btw - von "normalem" sql zu PDO kann man auch nochmal einen kleinen Geschwindigkeitsschub feststellen.
Liegt u.a. an Sachen wie mysqli_real_escape_string(). Diese function wird im "normal"-sql gebraucht, um Benutzer-Input zu maskieren, ist aber auch arsch langsam.
Bei PDO aber brauchst Du gar keinen Input maskieren (WENN man es richtig nutzt!).
Aber ich schweife ab ... =)
edit: oops da war jemand schneller =)
Das "komplette Programm" würde ich sagen.
Stichworte: mysql, php, jsvascript, ajax
Per MySql speicherst Du Deine Daten
- die Preise ect. müssen ja irgentwo her kommen. Kannst auch Files nutzenm. Ist aber nicht zu empfehlen.
Per PHP erstellst du die Website dynamisch auf den Kunden bezogen
- Kd eingeloggt, evtl Vorzüge, ect
Per Javascript legst Du Events auf die Buttons bzw Select fields.
- onchange() -- siehe zB hier: http://www.mediaevent.de/javascript/onchange.html
Per Ajax lädst Du bei Veränderung ( onchange() ) die Preise, Größen ect vom Server nach.
- wenn Daten erfolgreich geladen, dann zum letzten Punkt:
Per Javascript sprichst Du die Betroffenen Felder/Tabellen/Ergebnisanzeigen an um die neuen Daten anzuzeigen.
- zB: getElementById('gewicht').innerHTML = calcNewWeight(...);
edit: wie Basiii schon sagte ist es einfacher ohne ajax. Somit müsste der benutzer zum neuberechnen das Formular absenden und die Werte würden seitens php erneuert.
btw - Du solltest auch nicht auf das Formular verlassen. POST oder GET -Daten können "gefaked" werden.
Soll heißen: verlass Dich nicht auf den in der Form stehenden Endpreis/Gewicht/ect. Es sollte serverseitig auf jeden Fall alle "Items" gegen gecheckt werden, sonst sendet Dir jemand per POST seine "eigenen" Werte =)
Wobei diese Function sogar für beide Seiten - php-seitig und javascript-seitig - genutzt werden kann:
- onchange lässt Du per ajax die php function auf dem server die Werte neu berechnen und gibst die neuen Daten zurück
- wenn das Formular angesendet wird nutzt Du die gleiche function erneut, um zu sehen ob Auswahlt und Ergebnis passen
Was machst Du denn?
if ( checkdate($_POST['monat'],$_POST['tag'],$_POST['jahr']) === true )
{
echo "Datum ok"; // Ausgabe Datum ok
}
else
{
echo "Datum nicht richtig" ;
}
Du sollst es doch nicht ausgeben lassen ![]()
Es soll doch als Prüfung dienen:
if ( checkdate($_POST['monat'],$_POST['tag'],$_POST['jahr']) === true )
{
# hier schreibst Du weiter. Also ab hier kannst Du die POST Daten nutzen, um sie in die db zu schreiben.
}
else
{
# hier kommt die Fehlerbehandlung rein (zB Meldung an den Benutzer)
}
Guck am besten hier mal rein; http://www.php-kurs.com/beispiel-gaest…p-und-mysql.htm
=)
sorry, hab " = ".$datum."" vergessen:
$sql="INSERT INTO ´datum´ SET ´geburtsdatum´ = ".$datum.", id = ".$id." ON DUPLICATE KEY UPDATE ´geburtsdatum´ = ".$datum." ";
Wieso eigl "gast" ? So wie ich das sehe speicherst Du jetzt alle Einträge mit id "" (leer).
Die Tabelle sähe dann in etwa so aus:
Somit kannst Du keinen Beutzer identifizieren.
btw: checkDate() => http://www.php.net/manual/en/function.checkdate.php
Nein, nicht irgenteine ID vergeben =)
Von vorn:
(angenommen) Du hast eine momentan leere Datenbank mit
- Tabelle "benutzer" mit Spalten "ID" (fortlaufend), "name", ect
- Tabelle "datum" mit Spalten "ID", "geburtsdatum", ect
Wenn sich jetzt ein Benutzer registriert, dann erstellst Du in Tabelle "benutzer" einen Neuen Benutzer
zb;
"INSERT INTO ´benutzer´SET ´name´ = ".$_POST['name']." "
Dabei wird die ID vom SQL-Server fortlaufend erstellt -- hier zB "1".
Damit hast Du in Tabelle "benutzer" eine Zeile (Datensatz) mit:
ID: 1
name: soundso
und in Tabelle datum steht noch nichts drin.
Jetzt hat sich der Benutzer soundso eingeloggt und Du hast anhand des Logins Seine ID -- im Bsp "1".
Du "zeigst" dem Benutzer das Formular zum angeben des Geburtsdaturms. Der füllt es aus und schickt es ab.
Dadurch weißt Du, dass Benutzer mit ID "1" das datum "$datum" angegeben hat und speicherst es in der Datebbank -- in etwa so:
"INSERT INTO ´datum´ SET ´geburtsdatum´ = ".$datum.", ID = ".$id." "
Man kann das Ganze jetzt noch weiter ausbauen, wie zB:
"INSERT INTO ´datum´ SET ´geburtsdatum´ = ".$datum.", ID = ".$id." ON DUPLICATE KEY UPDATE ´geburtsdatum´"
-> bedeutet: wenn primärschlüssel "ID" (=>einzigartig/nur einmal vorkommend) schon vorhanden ist, dann update in diesem Datensatz nur das feld ´geburtsdatum´ mit dem neuen Wert.
Empfehlung: http://www.php-kurs.com/mysql---datenbank-unter-php.htm
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.