Newsgroup: it.comp.www.php
Titolo: blocco ciclio

Da una pagina In htm richiamo uno script php con questa istruzione:
<!-- INIZIO CODICE CIRCUITO -->
<script type='text/javascript'
src='
http://www.miosito.com/serv-promo/perderepeso.php
'></script>
<!-- FINE CODICE -->
Lo script denominato perderepeso.php è il seguente e provvede a visualizzare
degli annunci presenti in un DB. Tutto funziona bene se è presente un solo
record che soddisfa la condizione. Ma se sono presenti 2 o più record nella
pagina In HTM non viene visualizzato nulla. Mentre lanciando direttamente lo
script in PHP vengono visualizati tutti i record. Sembra che il ciclo non
funziona richiamandolo dalla pagina in html.
Eppure l'istruzione
document.write ("<?php print "<br><br>".($testo) ?>");
Credo sia stata inserita correttamente.
Dov'è l'errore ?
Allego lo script:
<? include("top_foot.inc.php"); include("config.inc.php");
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file
config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel
file
config.inc.php");
$query = "SELECT cognome , indirizzo , cap , citta , provincia , telefono ,
email , abbonamento , modo , testoannuncio , bollettino , databoll ,
contatore , id FROM servpromo WHERE agenzia='diete'";
$result = mysql_query($query, $db);
while ($row = mysql_fetch_array($result))
{
$id=$row[id];
$annuncio=substr($row[testoannuncio],0,130);
$link="
http://www.miosito.com/serv-promo/annuncio.php?id=
".$id;
$testo="<a href=$link>$annuncio</a><br>";
?>
document.write ("<?php print "<br><br>".($testo) ?>");
<?
}
mysql_close($db);
?>

 Credo sia stata inserita correttamente.
[..]
"credo" non e' una parola da pronunciare quando si fa il debugging di una
applicazione.. controlla se il codice javascript generato e' corretto
oppure no.. se non lo e' procedi a ritroso fino ad individuare l'errore..
e comunque non postare due volte lo stesso quesito a cosi' breve distanza..
-- 
www.iuz-lab.info
 - 
www.php-faq.org

il codice javascript generato e' corretto. Che faccio ?
"iuz" <us...@host.network> ha scritto nel messaggio
news:fe3b51$gta$1...@nnrp.linuxfan.it...


 }
Qui stai usando javascript, ma sei ancora dentro il ciclo while di PHP.
Prova a creare la stringa in javascript al termine del ciclo while e
poi a stamparla a video. 
Qualcosa del genere:
$testo = '';
while ($row = mysql_fetch_array($result)) {
  $annuncio = substr($row['testoannuncio'], 0, 130);
  $link = '
http://www.miosito.com/serv-promo/annuncio.php?id='.$row['id']
;
  $testo .= '<a href="'.$link.'">'.$annuncio.'</a><br>';
}
echo 'document.write("<br><br>'.$testo.'")';
?>
Potresti anche fare a meno delle variabili $link e $annuncio.
Ciao.
-- 
Federico

 ha scritto nel messaggio
news:1knt2jumvy7zc.1gl43vddtfbxt$.dlg@40tude.net...


 contatore , id FROM servpromo WHERE agenzia='diete'";
Non c'entra con il problema corrente, ma se usi solo i campi
testoannuncio e id non occorre recuperare anche gli altri. Per il resto
fai qualche controllo sugli errori.
$query = 'select testoannuncio, id
          from servpromo where agenzia = "diete"';
$result = mysql_query($query, $db);
if (is_resource($result)) {
    if (mysql_num_rows($result) > 0) {
        $testo = '';
        while ($row = mysql_fetch_array($result)) {
	    $annuncio = substr($row['testoannuncio'], 0, 130);
	    $link = '
http://www.miosito.com/serv-promo/annuncio.php?id='.$row['id']
;
            $testo .= '<a href="'.$link.'">'.$annuncio.'</a><br>';
        }
        echo 'document.write("<br><br>'.$testo.'");';
    } else {
        echo 'document.write("nessun annuncio trovato");';
    }
} else {
    echo 'document.write("'.mysql_error().'");';
}
mysql_close($db);
?>
HTH
-- 
Federico

Credo sia stata inserita correttamente.
Magari potresti scriverla in questo modo che mi pare piu' lineare:
while ($row = mysql_fetch_array($result))
{
	$id=$row['id'];
	$annuncio = AddSlashes(substr($row['testoannuncio'],0,130));
	print <<<HERE
	document.write('<br /><br />');
	document.write('<a
href="
http://www.miosito.com/serv-promo/annuncio.php?id=$id
">');
	document.write('$annuncio');
	document.write('</a><br />');
HERE;
}
mysql_close($db);
...e poi guarda cos'hai nel sorgente della pagina.
Leonardo
-- 
 What do you make, so fair and bright;
 What do you build with sails for flight;
 What do you weave with wool so white?

 ha scritto nel messaggio
news:14bj7oqmncrbv$.xpdb8b46nio2$.dlg@40tude.net...


 Dite che è qui il problema ?
Mah, se il file perdererepeso.php restituisce javascript direi di no. Ho
appena provato e non ho avuto problemi. 
-- 
Federico

 ha scritto nel messaggio
news:tegj9bfoklcq.1n...@40tude.net...


Che faccio ?
Guarda il sorgente. Se e' corretto, deve funzionare: per definizione :-)


 ha scritto nel messaggio
news:1plfg3986i39rk5us...@4ax.com...


 nulla neanche un record e non dà errori.
Molto probabilmente è una domanda inutile, ma il browser ha javascript
abilitato, vero?
In che punto della pagina HTML includi il file? Se provi a includere il
file php in un'altra pagina html che contiene solo ed esclusivamente
quel codice javascript, lo vedi? Se invece del file php provi a
includere un file html che contiene un semplice
document.write("ciao");, lo vedi?
-- 
Federico

 Federico

 ha scritto nel messaggio
news:1ju1kulxmdk05$.1eulpd5ggfr26$.dlg@40tude.net...


 Si lo vedo
Allora Javascript è attivo.
-- 
Federico

 Quando lancio la pagina HTM che non visualiza i record.
Se ci fai doppio clic sopra cosa succede?
Probabilmente hai degli errori Javascript che ti impediscono la
visualizzazione del file php. Prova a chiedere su
it.comp.lang.javascript riportando il codice Javascript che usi nella
pagina HTML (o meglio ancora il link alla pagina che ti dà l'errore) e
l'errore restituito.
Ciao.
-- 
Federico

 ha scritto nel messaggio
news:1rd46so14tndz.13yq8q5qrzwx3$.dlg@40tude.net...


 Questo  un errore di java o php ?
Questo e` un errore javaSCRIPT, non java.
E Explorer non e` il massimo per farne il debug. Quasi sicuramente alla 
riga 3 non ci sara` nemmeno del codice javascript.
Devi usare Firefox con Firebug.
Bye.

Chiamandolo dalla pagina htm non visualizza nulla.
Ehu... scusami: intendevo dire "il sorgente HTML". Casomai postalo, anche.


 ha scritto nel messaggio
news:5muvucF...@mid.individual.net...

Io possiedo Portable firefox 2.0.0.5 dove trovo firebug ?
mi sembra inutile postale il sorgente html visto che inserendo solo la riga
javascript non visualizza nulla.

 riga javascript non visualizza nulla.
Piu` che altro, sarebbe inutile postarlo qui. Visto che e` javascript, 
dovresti chiedere sul newsgroup di javascript.
Bye.

 ha scritto nel messaggio
news:5muvucF...@mid.individual.net...

Ecco cosa restituisce la console di ferebug
unterminated string literal
document.write('Sono Lucia e sono una distributrice incaricata della
societa.\n
Se nello script php nella riga che preleva l'annuncio accorcio la lunghezza
tutto funziona bene.
Esempio:
$annuncio = AddSlashes(substr($row['testoannuncio'],0,30));
Ma a me serve prelevare almeno 130 caratteri.
Allego lo script php completo, credo che ormai siamo vicini alla soluzione:
<? include("top_foot.inc.php"); include("config.inc.php");
$db = mysql_connect($db_host, $db_user, $db_password);
if ($db == FALSE)
die ("Errore nella connessione. Verificare i parametri nel file
config.inc.php");
mysql_select_db($db_name, $db)
or die ("Errore nella selezione del database. Verificare i parametri nel
file
config.inc.php");
$query = 'select testoannuncio, id from servpromo where agenzia = "diete"';
$result = mysql_query($query, $db);
while ($row = mysql_fetch_array($result))
{
$id=$row['id'];
$annuncio = AddSlashes(substr($row['testoannuncio'],0,130));
print <<<HERE
document.write('<br /><br />');
document.write('<a
href="
http://www.miosito.com/serv-promo/annuncio.php?id=$id
">');
document.write('$annuncio');
document.write('</a><br />');
HERE;
}
mysql_close($db);
?>

 societa.\n
Non è che dopo la parola società c'è l'apice (societa') usato come
accento? Se così fosse devi farne l'escape come ti aveva già suggerito
Alessandro in un suo precedente post.
-- 
Federico

 come ti aveva già suggerito Alessandro in un suo precedente post.
Chiedo scusa. Era Leonardo, non Alessandro.
-- 
Federico

societa.\n
Okay. Oltre ad AddSlashes, aggiungici nl2br:
	nl2br(AddSlashes(...))
