[PHP] Evitare la visualizzazione del carattere di nuova linea \r\n

  • Creatore Discussione Creatore Discussione elpirata
  • Data di inizio Data di inizio

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Un saluto a tutti,
cortesemente mi dareste una mano a capire come fare per evitare che nel database venga registrato il carattere di \r\n

In sostanza ho questa query:

PHP:
if (isset($_POST['submit'])) {

/* RECUPERO I DATI DAL FORM INSERIMENTO*/
$veicolo = filter_input(INPUT_POST, 'veicolo', FILTER_SANITIZE_STRING);
$cliente = filter_input(INPUT_POST, 'cliente', FILTER_SANITIZE_STRING);
$telefono = filter_input(INPUT_POST, 'telefono', FILTER_SANITIZE_STRING);
$note = filter_input(INPUT_POST, 'note', FILTER_SANITIZE_STRING);

$data = mysqli_real_escape_string($mysqli, $_POST['data']);
$ora = mysqli_real_escape_string($mysqli, $_POST['ora']);
$gestore = mysqli_real_escape_string($mysqli, $_POST['gestore']);
$stato = mysqli_real_escape_string($mysqli, $_POST['stato']);

/* SETTO I MAIUSCOLI */
$veicolo = strtoupper($veicolo);
$cliente = strtoupper($cliente);
$note = strtoupper($note);

/* FILTRO LE ALTRE VARIABILI */
$data = trim(strip_tags(stripslashes($data)));
$ora = trim(strip_tags(stripslashes($ora)));
$telefono = trim(strip_tags(stripslashes($telefono)));
$gestore = trim(strip_tags(stripslashes(strtoupper($gestore))));
$stato_pren = trim(strip_tags(stripslashes(strtoupper($stato_pren))));
/* FINE FILTRI e CONVERSIONI SULLE VARIABILI POST */

/* QUERY DI INSERIMENTO SENZA UPPER, L'UPPER E' DEMANDATO AL COMANDO FOREACH */
$sq1 = "INSERT INTO appuntamenti (idappuntamento, cliente, gestore, veicolo, data, ora, stato, telefono, note) VALUES (NULL, '$cliente', '$gestore', '$veicolo', STR_TO_DATE('$data', '%d/%m/%Y'), '$ora', '$stato', '$telefono', '$note')";
$rs1 = $mysqli->query($sq1);

quando registro i dati e poi vado a visualizzarli li vedo così:

MONTAGGIO PARABOLA + SMONTAGGIO DEF. OCCHHIO\r\nSERIALE XX252\r\n
 
ciao
li vuoi far sparire o far funzionare?
ti schematizzo i due casi
PHP:
$stringa="pinco\r\npallo";
$cosa   = array("\r\n", "\n", "\r");
$con = ' ';//con spazio o altro
echo str_replace($cosa, $con, $stringa);

/*output
pinco pallo
*/

PHP:
$stringa="pinco\r\npallo";
echo nl2br($stringa);//\r\n "\n \r -> <br />
//se nl2br($stringa, false); \r\n "\n \r -> <br>

/*output
pinco
pallo
*/
 
Buongiorno Borgo Italia,
ho provato a fare in questo modo:

PHP:
$note = filter_input(INPUT_POST, 'note', FILTER_SANITIZE_STRING);
$note = nl2br($note);
$note = strtoupper($note);

ma dopo registrato visualizzo sempre gli "a capo" (e non vorrei visualizzarli)

in sostanza in fase di visualizzazione escono sempre le scritte
\r\n
 
ciao
allora prova con l'altro metodo
PHP:
$stringa="pinco\r\npallo";
[PHP]$cosa   = array("\\r\\n", "\\n", "\\r");
$con = ' <br />';//con spazio o altro
echo str_replace($cosa, $con, $stringa);[/PHP]
eventualmente se non funzione prova a duplicare lo slash
 
Borgo Italia,
in sostanza io ho un file inserisci.php che passa i campi post a salva.php e poi li recupero con visualizza.php
e non riesco a capire dove fare l'escape del carattere newline :(

Nell'inserisci ho una text area
HTML:
<tr>
<td><b>Note</b></td>
<td><textarea maxlength="90" name="note" placeholder="Max 90 caratteri" maxlength="90"></textarea></td>
</tr>
</table>
</fieldset>

<input type="submit" name="submit" class="bottone" value="Registra Appuntamento">
<div class="clear"></div>
</form>

che recupero da salva.php

PHP:
<?php

if (isset($_POST['submit'])) {

/* RECUPERO I DATI DAL FORM INSERIMENTO*/
$note = filter_input(INPUT_POST, 'note', FILTER_SANITIZE_STRING);

/* SETTO I MAIUSCOLI */
$note = strtoupper($note);

/* QUERY DI INSERIMENTO SENZA UPPER, L'UPPER E' DEMANDATO AL COMANDO FOREACH */
$sq1 = "INSERT INTO appuntamenti (idappuntamento, note) VALUES (NULL, '$note')";
$rs1 = $mysqli->query($sq1);

if (!$rs1) {
echo "<p style='margin-top: 40px;text-align:center;'>Ho trovato un errore nell'esecuzione della <b>QUERY</b></p>";
die("Errore nella query $sq1: " . mysqli_error());

}else{

/* Redirect alla pagina principale */
$messaggio = "<div class='success'>Appuntamento registrato con successo! Attendi..</div>";
echo "<meta http-equiv='refresh' content='2;url=index.php?page=lista_appuntamenti_oggi&tipo=tutti&data=oggi'>";

 }
}

?>

<? echo $messaggio; ?>

PHP:
<?php

... eseguo la query per recuperare il campo note dal database ...


echo "<div class = 'container-ricerca-nulla'>";
echo "<div class ='row'><p class='btn btn-danger center-button'>Nessun appuntamento presente</p></div>";
echo "</div>";

}else{
    
echo "<div class ='container-appuntamento'>";
echo "<table class='table table-responsive table-striped'>";
echo "<tr>";
echo "<th>Note</th>";
echo "<th>Aggiorna</th>";
echo "</tr>";

while ($row = $res->fetch_array(MYSQLI_ASSOC)) {
$idappuntamento = mysqli_real_escape_string($mysqli, $row['idappuntamento']);
$note = mysqli_real_escape_string($mysqli, $row['note']);

/* FILTRI e CONVERSIONI SULLE VARIABILI POST */
$note = trim(strip_tags(stripslashes($note)));

/* FINE FILTRI e CONVERSIONI SULLE VARIABILI POST */

if ($stato == 'ACCETTAZIONE') { $classe = 'accettazione'; }
if ($stato == 'LAVORAZIONE') { $classe = 'lavorazione'; }
if ($stato == 'TERMINATO') { $classe = 'terminato'; }
?>

<tr>
<td><? echo $note = nl2br($note); ?></td>
<td><? echo "<a href='index.php?page=aggiorna_appuntamento&idappuntamento=$idappuntamento' target='_blank'><img src='images/edit.png' alt=''></a>"; ?></td>
</tr>

<?
 }
echo "</table>";
echo "</div>";
}
?>
 

Discussioni simili