Hi,
ja das hat mir geholfen, funktionuckelt jetzt. Danke Dir.
MONI
Hi,
ja das hat mir geholfen, funktionuckelt jetzt. Danke Dir.
MONI
Hi
eigentlich gibts keine Hinweise und wir haben nur die DB-Tabelle.
Vllt. nutzt dieser Scriptfetzen, den ich gestern in einem readme (backend: storing_fetching_data_Images) gefunden habe. Es deutet allerdings entgegen Deiner Vermutung alles auf base64_encoding hin.
Mehr gibts aber nicht. Kann sein das es noch mehr readmes gab, aber ich habe nichts mehr.
/**
* @description fetch message image
* @param Storage $dbh valid Storage instance
*/
static private function fetchMesgImage(Storage $dbh) {
$tid = (isset($_GET["tid"])) ? intval($_GET["tid"]) : null;
if(!isset($_SESSION['Admin']) && !isset($_SESSION['User'])) {
print -1;
exit(1);
}
else if($tid === null) {
print -2;
exit(1);
}
$ret = $dbh->query('get_article_by_id', array($tid));
if(isset($_SESSION['User']) && $ret['login'] !== $_SESSION['User']->Login) {
print -1;
exit(1);
}
$o = unserialize($ret['data']);
// Note: format can change if we need multiple images!
$image = $o->Images;
$image['type'] = image_type_to_mime_type($image['type']);
$image['data'] = base64_encode($image['data']);
print json_encode($image);
}
/**
* @description store message image
* @param Storage $dbh valid Storage instance
* @notice function outputs -3 on ExceedSizeException
*/
static private function storeMesgImage(Storage $dbh) {
$tid = (isset($_GET["tid"])) ? intval($_GET["tid"]) : null;
if(!isset($_SESSION['Admin']) && !isset($_SESSION['User'])) {
print -1;
exit(1);
}
else if($tid === null) {
print -2;
exit(1);
}
$ret = $dbh->query('get_article_by_id', array($tid));
if(isset($_SESSION['User']) && $ret['login'] !== $_SESSION['User']->Login) {
print -1;
exit(1);
}
try {
$o = unserialize($ret['data']);
$image = Render::getUploadedImage(Web::$Cimgtypes, Web::MaxFileSiz, 'entryimg');
if($image === null) {
print -1;
exit(1);
}
}
catch(ExceedSizeException $e) {
print -3;
exit(1);
}
$o->Images = $image;
print ($dbh->store($o, $tid)) ? $tid : -1;
}
/**
* @description remove message image
* @param Storage $dbh valid Storage instance
*/
static private function delMesgImage(Storage $dbh) {
$tid = (isset($_GET["tid"])) ? intval($_GET["tid"]) : null;
if(!isset($_SESSION['Admin']) && !isset($_SESSION['User'])) {
print -1;
exit(1);
}
else if($tid === null) {
print -2;
exit(1);
}
$ret = $dbh->query('get_article_by_id', array($tid));
if(isset($_SESSION['User']) && $ret['login'] !== $_SESSION['User']->Login) {
print -1;
exit(1);
}
$o = unserialize($ret['data']);
$o->Images = null;
print $dbh->store($o, $tid);
}
Alles anzeigen
Dein Vorschlag geht leider nicht. Brauche eigentlich nur eine Idee wie mit meinem Code das array mit dem Bild (hier: Images) korrekt angezeigt wird.
MONI
MoinMoin,
ich muß die Inhalte eines blob-Feldes ausgeben.
Beispielhaft hier ein Auszug. Im Blob sind Texte und Bilder
enthalten.
Das ich unserialisieren muß ist mir klar, nur wie verschließt sich
mir. Wie serialisiert wurde weiß ich nicht.
Ganz unten ein php-Code der teils funktioniert, ist zwar veraltet
(mysql_) aber geht noch.
So brauche ich die Daten:
Headline: kfza
Body: kfzatest
Images: Bild als Bild (hier gesicht.jpg) oder
Bilder als Bilder
Editable: 1
Owner: B-N-230315-125945
Creation: 1427114175
Category: KFZ
Issue: Angebotsart A
MONI
Beispielsdatensatz aus blob:
O:7:"Message":8:{s:11:" * Headline";s:4:"kfza";s:7:" *
Body";s:8:"kfzatest";s:9:" * Images";a:6:{s:4:"data";s:4576:"ÿØÿà
JFIF ` ` ÿÛ C ÿØÿà JFIF ` ` ÿÛ C ÿØÿà JFIF ` ` ÿÛ C
... Das sind die Bilddaten, habe die mal eingekürzt. ...
";s:4:"type";i:2;s:4:"size";i:4576;s:5:"width";i:1
15;s:6:"height";i:145;s:4:"name";s:11:"front.jpg"; }s:11:" *
Editable";b:1;s:8:" * Owner";s:17:"B-N-230315-125945";s:11:" *
Creation";i:1427114175;s:11:" * Category";s:3:"KFZ";s:8:" *
Issue";s:13:"Angebotsart A";}
Mit meinem Code (weiter unten) krieg ich folgendes angezeigt:
Message
kfza
kfzatest
Array
(
[data] => ÿØÿà
Den Rest des Zeichensalats hab ich mal weggelassen.
(¢€ (¢€?ÿÙ
[type] => 2
[size] => 4576
[width] => 115
[height] => 145
[name] => gesicht.jpg
)
1
B-N-230315-125945
1427114175
KFZ
Angebotsart A
Mein php-Code:
<?php
include_once("code-connection.php");
$sql = "SELECT * FROM FD_Articles ORDER BY id DESC";
$ergebnis = mysql_query($sql) or die("SQL Error: ".mysql_error());
$anz_ds = mysql_num_rows($ergebnis);
for ($ii = 0 ; $ii < $anz_ds ; $ii++)
{
$id = mysql_result($ergebnis,$ii,"id");
$data = mysql_result($ergebnis,$ii,"data");
$message = unserialize($data);
foreach($message as $key => $elem){
echo $elem."<br />";
//var_dump(unserialize($data));
Alles anzeigen
Danke Wolf,
klappt prima.
Moni
Hi
habe ansonsten mit css wenig am Hut deswegen meine bescheidene Frage:
Ich habe auf meiner Seite zwei table.
Darin sind zwei img(1.jpg und 2.jpg) eingebaut.
Wie kann ich erreichen das 1.jpg auf 100% der Seitenbreite -egal ob PC,
LapTop oder Smartphone-Bildschirm- sowie 75% der Seitenhöhe skaliert
wird und das 2.jpg zentriert auf den restlichen 25% der Seitenhöhe
angezeigt wird?
MONI
HTML-Code:
<body bgcolor="ffffff">
<table align="center" bgcolor="ffffff" border="0" cellpadding="0" cellspacing="0" style="opacity:1.0; z-index:1;">
<tr>
<td align="center" style="vertical-align: middle;">
<img src="1.jpg" border="0">
</td>
</tr>
</table>
<br>
<table align="center" bgcolor="ffffff" border="0" cellpadding="0" cellspacing="0" style="opacity:1.0; z-index:1;">
<tr>
<td align="center" style="vertical-align: middle;">
<img src="2.jpg" border="0">
</tr>
</table>
</body>
Alles anzeigen
je mehr suchwörter man eingibt desto mehr ergebnisse?
eig müsste es anders sein
nee das funktioniert schon
MONI
du meinst du hast wenig ahnung von sql
ich aber auch nicht so viel muss ma überlegen
obwohl hiermit gehts ist aber kein PDO und prepared, so hatte ich es bisher ... MONI
...
$abfrage = "SELECT * FROM onlinebooks WHERE";
$count = count($search);
for($i=0; $i < $count; $i++){
$abfrage.="((url LIKE '%".mysql_real_escape_string($search[$i])."%') OR (id LIKE '%".mysql_real_escape_string($search[$i])."%')";
if ($i<($count-1))
$abfrage.=") AND ";
}
$abfrage.=") ORDER BY id LIMIT 0,100";
...
Hi
nachstehendes Script arbeitet nicht ganz korrekt. Gebe ich 2 Suchworte
ein so bekomme ich 2 Ergebnislisten untereinander angezeigt. Die
erste(obere) Liste enthält Ergebnisse mit dem ersten Suchwort, die
zweite(untere) Liste enthält Ergebnisse mit dem zweiten Suchwort. Das
selbe Schema mit 3 Suchworten usw.
Ich will aber die Ergebnisse in denen alle Suchworte gleichzeitig enthalten sind.
Wichtig ist nur das der gesamte String 3 Zeichen enthalten muß, nicht jedes Suchwort.
Ich weiß das ich an der Schleife was ändern muß doch bei PDO und prepared statements habe ich wenig Ahnung wie.
MONI
<?php
if (strlen(trim($_POST['search'])) < 3)
echo "Bitte mind. drei Zeichen eingeben";
else {
include_once('suche_connection.php');
$search = explode(" ",$_POST["search"]);
try {
$pdo = new PDO("mysql:host=$host;port=$port;dbname=$dbname", $username, $password);
}
catch(PDOException $e) {
echo $e->getMessage();
}
$count = count($search);
for ($i=0; $i < $count; $i++) {
$stmt = $pdo->prepare("SELECT * FROM onlinebooks WHERE url LIKE ? ORDER BY id LIMIT 0,100");
$stmt->bindValue(1, '%' .$search[$i]. '%', PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();
foreach ($result as $row) {
echo $row["url"]."<br />";
}
}
}
?>
Alles anzeigen
Hi,
habe Code in php der funktioniert aber nicht ganz. Woran liegts wohl? Bin übrigens nicht besonders fit in php.
MONI
<?php
$db=@mysql_connect("host","dbuser","dbpw");
$select=@mysql_select_db("dbname",$db);
$abfrage = "SELECT * FROM news";
$ergebnis = mysql_query($abfrage);
?>
<form method="post" action="delete_mehrere.php">
<?php
while($row = mysql_fetch_object($ergebnis))
{
echo "$row->id<br>";
echo "$row->headline<br>";
echo "<input type=\"checkbox\" name=\"delete[]\" value=\"\" /><br>";
}
if (isset ($_POST["loeschen"])){
$y=count($_POST["delete"]);
echo "Es wurde/n : ".$y." Box/en ausgewählt!<br><br>";
}
?>
<input type="submit" name="loeschen" value="löschen">
</form>
Alles anzeigen
Tja daran hab ich auch gedacht, doch mir fehlen die Kenntnisse für if ... in der foreach-Schleife.
Hab mal sowas gemacht, doch die ? sind zu ersetzen.
Moni
Hi,
Bei 1 wurde die Serverhauptadresse = $url vor $var geschrieben was eine linkbare Adresse ergibt.
Wie kann ich ausschließen das dies auch bei 2 passiert da hier eine linkbare Adresse schon vorhanden ist?
Seitenquelltext:
1 <a href=http://www.sigmaringen.de/k4cms/de/suche.html?PHPSESSID=0aa867333fa57875c885d22f52264c93>LINK</a>
2 <a href=http://www.sigmaringen.dehttp://www.sigmaringen2013.de>LINK</a><br>
1. http://www.sigmaringen.de/k4cms/de/suche.html?PHPSESSID=0aa867333fa57875c885d22f52264c93 LINK
2. http://www.sigmaringen.dehttp://www.sigmaringen2013.de LINK
Moni
@laura
alles ok und klappt.
hatte ich wohl übersehen. mein fehler. ist wohl wie mit der brille die man sucht und eigentlich schon auf hat.
thanx
moni
Tja gute Frage, nicht vom input scheint mir, oder? Ollte aber. Was müsste ich ändern?
Mein php-Kenntnisse sind so lala.
Moni
Hallo,
wer kann mir sagen warum mein Script nicht funktioniert? Aber zB bei <!-- m --><a class="postlink" href="http://www.web-max.ca/PHP/misc_23.php">http://www.web-max.ca/PHP/misc_23.php</a><!-- m -->?
Moni
<form name="form1" method="post" action="">
<p> URL mit http://:
<input name="url" type="text" id="url" value="http://" size="55">
<br>
<input name="submit" type="submit" value="ok">
</p>
</form>
<?php
$var = fread_url($url);
preg_match_all ("/a[\s]+[^>]*?href[\s]?=[\s\"\']+".
"(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/",
$var, &$matches);
$matches = $matches[1];
$list = array();
foreach($matches as $var)
{
print($var."<br>");
}
// The fread_url function allows you to get a complete page. If CURL is not installed replace the contents with a fopen or fget loop.
function fread_url($url,$ref="")
{
if(function_exists("curl_init")){
$ch = curl_init();
$user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; ".
"Windows NT 5.0)";
//$user_agent = "googlebot";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt( $ch, CURLOPT_HTTPGET, 1 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 );
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_REFERER, $ref );
curl_setopt( $ch, CURLOPT_COOKIEJAR, 'cookie.txt');
$html = curl_exec($ch);
curl_close($ch);
}
else{
$hfile = fopen($url,"r");
if($hfile){
while(!feof($hfile)){
$html.=fgets($hfile,1024);
}
}
}
return $html;
}
?>
Alles anzeigen
Hi,
die Blätterfunktion wie ich sie habe(s.u.) zeigt mir immer alle Datensätze an. Setze ich ORDER BY id ASC ein alle Datensätze aufsteigend von id=1 bis id=x, setze ich ORDER bY id DESC ein alle Datensätze absteigend von id=x bis id=1. Und das jeweils 10 pro Seite. Soweit alles korrekt. x ist übrigens der letzte Datensatz und variabel da die Zahl der Datensätze weiter steigt.
Ich will nun das nur die aktuellsten Datensätze ab id=x-301 angezeigt werden (also nicht die topaktuellsten 300 weil die mit einem anderen Script angezeigt werden) und ich will auf der ersten Seite oben den Datensatz id=x-301 stehen haben. Den zweiten id=x-302 darunter, darunter id=x-303 usw.
Und ich will das insgesamt nur 1000 Datensätze angezeigt werden. Bei 10 Einträgen pro Seite ergäbe das also 70 Seiten, dh alle Datensätze zwischen id=x-301 und id=x-1000.
Wie und wo baue ich das ein?
Moni
<?php
$host = "";
$user = "";
$pass = "";
$dbase = "";
$connection = mysql_connect("$host" , "$user" , "$pass")
OR die ("Keine Verbindung zur Datenbank möglich.");
$db = mysql_select_db($dbase , $connection)
OR die ("Auswahl der Datenbank nicht möglich.");
$pfad = $_SERVER['PHP_SELF'];
$query = mysql_query("SELECT id FROM news");
$datensaetze_pro_seite = "10";
$p = "5"; // SEITENLINKS
$total = mysql_num_rows($query);
$seiten = ceil($total / $datensaetze_pro_seite);
if(empty($_GET['go'])){
$go = 1;
}elseif($_GET['go'] <= 0 || $_GET['go'] > $seiten){
$go = 1;
}else{
$go = mysql_real_escape_string($_GET['go']);
}
$links = array();
if(($go - $p) < 1){ $davor = $go - 1; }else { $davor = $p; }
if(($go + $p) > $seiten){ $danach = $seiten - $go; }else{ $danach = $p; }
$off = ($go - $davor);
if ($go- $davor > 1){
$first = 1;
//$links[] = "<a href=\"$pfad?go=$first\" title=\"zur ersten Seite\"> || </a>\n";
}
if($go != 1){
$prev = $go-1;
//$links[] = "<a href=\"$pfad?go=$prev\" title=\"eine Seite zurück\"> < </a>\n";
}
for($i = $off; $i <= ($go + $danach); $i++){
if ($i != $go){
$links[] = "<a href=\"$pfad?go=$i\">$i</a>\n";
}elseif($i == $seiten) {
$links[] = "<span class=\"current\">[ $i ]</span>\n";
}elseif($i == $go){
$links[] = "<span class=\"current\">[ $i ]</span>\n";
} // close if $i
}
if($go != $seiten){
$next = $go+1;
//$links[] = "<a href=\"$pfad?go=$next\" title=\"eine Seite weiter\"> > </a>\n";
}
if($seiten - $go - $p > 0 ){
$last = $seiten;
//$links[] = "<a href=\"$pfad?go=$last\" title=\"zur letzten Seite\"> || </a>\n";
}
$start = ($go-1) * $datensaetze_pro_seite;
$link_string = implode(" ", $links);
$abfrage = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT $start,$datensaetze_pro_seite");
while($row = mysql_fetch_object($abfrage)){
echo "<big>$row->headline</big><br>[$row->monat_jahr . $row->id]<br>";
echo nl2br(substr ($row->text,0,100)), " ...";
echo "<br>$row->link<br><br>";
}
// Seitennavigation
echo "Seite ".$go." von ".$seiten."<br>";
echo $link_string;
?>
Alles anzeigen
Ich habs jetzt so gemacht, aber da kommt nichts. Guck da mal drüber bitte was da nicht stimmt, ehrlich gesagt blick ich nicht mehr durch.
MONI
<?php
include_once("connection.php");
$sql = "
(SELECT *
FROM domains
WHERE domain LIKE '%ober%' )
UNION
(SELECT *
FROM keywords
WHERE domain LIKE '%ober%' )
UNION
(SELECT *
FROM links
WHERE domain LIKE '%ober%' )
UNION
(SELECT *
FROM link_keyword[0-9a-f]
WHERE domain LIKE '%ober%' )
ORDER BY domains.domain ASC LIMIT 0,100";
$ergebnis = @mysql_query($sql);
$anz_ds = @mysql_num_rows($ergebnis);
for ($ii = 0 ; $ii < $anz_ds ; $ii++)
{
$domain_id =@mysql_result($ergebnis,$ii,"domain_id");
$domain =@mysql_result($ergebnis,$ii,"domain");
$keyword_id =@mysql_result($ergebnis,$ii,"keyword_id");
$keyword =@mysql_result($ergebnis,$ii,"keyword");
$link_id =@mysql_result($ergebnis,$ii,"link_id");
//nl2br($feldname) // sorgt für automatische Umbrüche
echo "<table>";
echo "<tr>";
echo "<td>$domain_id</td>";
echo "</tr>";
echo "<tr>";
echo "<td>$domain</td>";
echo "</tr>";
echo "<tr>";
echo "<td>$keyword_id</td>";
echo "</tr>";
echo "<tr>";
echo "<td>$keyword</td>";
echo "</tr>";
echo "<tr>";
echo "<td>$link_id</td>";
echo "</tr>";
echo "</table>";
}
?>
Alles anzeigen
Also guck mal hier ob Du mir wohl sagen kannst was genau muß hinter SELECT und hinter FROM für einen Code einbauen wenn ich alle 19 Tabellen und alle Spalten abfragen will. So daß auch die Zeit für die Abfrage kurz ist.
Und wenn ich die WHERE-clause nach Bedarf anpassen will d.h mal WHERE keywords.keyword LIKE '%...%' oder mal WHERE domains.domain LIKE '%...%' usw.
<?php
include_once("connection.php");
$sql = "
SELECT
FROM
WHERE keywords.keyword LIKE '%...%'
ORDER BY keywords.keyword_id ASC LIMIT 0,1000";
$ergebnis = @mysql_query($sql);
$anz_ds = @mysql_num_rows($ergebnis);
for ($ii = 0 ; $ii < $anz_ds ; $ii++)
{
$domain_id =@mysql_result($ergebnis,$ii,"domain_id");
$domain =@mysql_result($ergebnis,$ii,"domain");
$keyword_id =@mysql_result($ergebnis,$ii,"keyword_id");
$keyword =@mysql_result($ergebnis,$ii,"keyword");
$link_id =@mysql_result($ergebnis,$ii,"link_id");
//nl2br($feldname) // sorgt für automatische Umbrüche
echo "<table>";
echo "<tr>";
echo "<td>$domain_id</td>";
echo "</tr>";
echo "<tr>";
echo "<td>$domain</td>";
echo "</tr>";
echo "<tr>";
echo "<td>$keyword_id</td>";
echo "</tr>";
echo "<tr>";
echo "<td>$keyword</td>";
echo "</tr>";
echo "<tr>";
echo "<td>$link_id</td>";
echo "</tr>";
echo "</table>";
}
?>
Alles anzeigen
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.