Pagina 5 di 6 PrimoPrimo ... 3456 UltimoUltimo
Visualizzazione risultati 121 fino 150 di 167
Like Tree7Likes

Discussione: Codifica caratteri

  1. #121
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,288

    Predefinito

    Foerse dipende dall'inserimento dell'id come valore. In effetti, ripensandoici con mysqli normalmente non serve metterlo.

    Provi levando l'id dalla query record:
    Codice PHP:
    $query="INSERT IGNORE INTO guestbook (Name, Email, Comments, Location, DateSent, IPAddress ) VALUES ('?, ?, ?, ?, ?, ?')";
    //..............................
    $stmt2->bind_param("ssssss", $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    Le 2 righe di codice non sono consegutive, quindi vanno sostituite separatamente.

    Cordiali saluti.

  2. #122
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Ho provato ma purtroppo non cambia, dà sempre quel
    string(47) "Column count doesn't match value count at row 1"

    Ci sfugge qualcosa... forse qui, parla di "num_rows"
    Codice PHP:
    $risultati=$mysqli->query("SELECT * FROM guestbook");

    //$num=mysql_numrows($risultati);
    $num=$risultati->num_rows;
    $i=0;
    $valmax=0;
    while (
    $i < $num) {
    //$valore=mysql_result($risultati,$i,"Id");
    $valore=mysqli_result($risultati,$i,"Id");
    if (
    $valore>$valmax) {
    $valmax=$valore;
    }
    $i++;
    }

    $ultimo=$valmax+1;
    Grazie, cordiali saluti

  3. #123
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,288

    Predefinito

    Scusi la risposta tardiva.

    Quella parte serve per calcolare l'ultimo id.

    Cordiali saluti.

  4. #124
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Nessun problema, si figuri.
    Cordiali saluti

  5. #125
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,288

    Predefinito

    provi con queste modifiche:
    Codice PHP:
    $stmt2->bind_param("issssss", '', $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    // oppure
    $stmt2->bind_param("issssss", null, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    Cordiali saluti.

  6. #126
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Niente da fare. Il risultato è sempre lo stesso:
    array(6) {
    ["fullname"]=>
    string(8) " poppino"
    ["email"]=>
    string(17) "pippone@libero.it"
    ["comments"]=>
    string(4) "prov"
    ["location"]=>
    string(3) " ge"
    ["anti_spam_code"]=>
    string(6) "721940"
    ["Submit"]=>
    string(5) "Invia"
    }
    string(47) "Column count doesn't match value count at row 1"



    Grazie per aver firmato il Libro

    Graçie pe avéi firmòu o Libbro
    ...


    Secondo me l'errore è prima da qualche parte.

    Cordiali saluti

  7. #127
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    @paolin può condividere l'intero codice originale di quella determinata pagina php, non le prometto nulla ma eventualmente se trovo la soluzione la informo.

  8. #128
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Darbula grazie molte per l'interessamento, a prescindere dal risultato.
    Ecco il codice php originale e funzionante, però usa mysql deprecato
    Codice PHP:
    <?php

    function detect_cyr_utf8($content)
    {
    return
    preg_match('/&#10[78]\d/', mb_encode_numericentity($content, array(0x0, 0x2FFFF, 0, 0xFFFF), 'UTF-8'));
    }



    @
    session_start(); // start session if not started yet
    if ($_SESSION['AntiSpamImage'] != $_REQUEST['anti_spam_code']) {
    // set antispam string to something random, in order to avoid reusing it once again
    $_SESSION['AntiSpamImage'] = rand(1,9999999);

    ?>
    <br>&nbsp;<img src='imm/stop.gif'><br><strong style='font-family: arial,times new roman; color:#B00000; font-size:16px'><br>&nbsp;codice non corrispondente!</strong><br/><font face='arial' size='4'><small>&nbsp;se il codice era corretto controlla di avere i cookie abilitati,<br>&nbsp;aggiorna il codice numerico e riprova</small><br><br><a href='http://paolin.altervista.org/sign-form.php' onclick='http://paolin.altervista.org/sign-form.php' title='Torna inder&ecirc; - Go back'><B>&lt;&lt; Ritorna Indietro</B></a></font>
    <?php

    }
    else {
    // set antispam string to something random, in order to avoid reusing it once again
    $_SESSION['AntiSpamImage'] = rand(1,9999999);





    $nome=$_POST["fullname"];
    $aaemail=$_POST["email"];
    $commento=htmlspecialchars ($_POST["comments"], ENT_QUOTES);
    $localita=$_POST["location"];
    $indirizzoip=$_SERVER['REMOTE_ADDR'];
    //$tempo=getdate("d/m/Y H:i:s"));
    //$tempo=getdate();
    //$tempo=getTimestamp();
    $tempo = date("Y-m-d H:i:s");
    //$tempo = timestamp($current_date);


    if (stristr($aaemail, 'smith'))
    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br><strong style='font-family: arial,times new roman; color:#B00000; font-size:16px'><br>&nbsp;Smith, hai finito di rompere il cazzo!</strong><br/><br><br><a href='http://paolin.altervista.org/sign-form.php' onclick='http://paolin.altervista.org/sign-form.php' title='Torna inder&ecirc; - Go back'><B>&lt;&lt; Ritorna Indietro</B></a>
    <?php
    }
    else
    {

    if (empty(
    $commento))
    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br><strong style='font-family: arial,times new roman; color:#B00000; font-size:16px'><br>&nbsp;Non hai inserito il commento!</strong><br/><br><br><a href='http://paolin.altervista.org/sign-form.php' onclick='http://paolin.altervista.org/sign-form.php' title='Torna inder&ecirc; - Go back'><B>&lt;&lt; Ritorna Indietro</B></a>
    <?php
    }
    else
    {




    $trovato=0;
    $num_parole=0;
    $stringhe= array('cialis', 'viagra', 'http','www','penis','girl');

    while ((
    $num_parole < count($stringhe)) and ($trovato==0))
    {
    If (
    stristr($commento, $stringhe[$num_parole])) $trovato=1;
    $num_parole++;
    }

    if (
    $trovato==1)

    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br><strong style='font-family: arial,times new roman; color:#B00000; font-size:16px'><br>&nbsp;Caratteri o parole non ammesse!</strong><br/><br><br><a href='http://paolin.altervista.org/sign-form.php' onclick='http://paolin.altervista.org/sign-form.php' title='Torna inder&ecirc; - Go back'><B>&lt;&lt; Ritorna Indietro</B></a>
    <?php
    }
    else
    {



    if (
    detect_cyr_utf8($commento))



    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br><strong style='font-family: arial,times new roman; color:#B00000; font-size:16px'><br>&nbsp;Parole russe non ammesse!</strong><br/><br><br><a href='http://paolin.altervista.org/sign-form.php' onclick='http://paolin.altervista.org/sign-form.php' title='Torna inder&ecirc; - Go back'><B>&lt;&lt; Ritorna Indietro</B></a>
    <?php
    }
    else
    {
    ?>
    <?php
    // imposto charset utf8
    $conn = mysql_connect("localhost", "xxxxxx", "my_xxxxxx");
    $db = mysql_select_db("world");

    if (!
    mysql_set_charset('utf8', $conn)) {
    echo
    "Error: Unable to set the character set.\n";
    exit;
    }
    ?>

    <?php


    $db_host
    = "localhost";
    $db_user = "xxxxxx";
    $db_name = "my_xxxxxx";

    $db = mysql_connect($db_host, $db_user);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione.");

    $res = mysql_select_db($db_name);
    if (
    $res == FALSE)
    die (
    "Errore nella selezione del DB.");


    // query per vedere se c'è già un commento uguale
    $query="SELECT * FROM guestbook WHERE Email='$aaemail' AND Comments='$commento'";

    $result = mysql_query($query);
    $numero = mysql_num_rows($result);

    if (
    $numero>0){

    // messaggio di errore

    ?>
    <br>&nbsp;<img src='imm/stop.gif'><br><font face='arial' color='#cc0000'><B>&nbsp;E che cavolo fai!!! Ripeti?<br>&nbsp;E c&ouml;se belin ti f&aelig;!!! Torna?<br>&nbsp;What accident you do!!! Do you repeat?<br><br><A href='sign-form.php' title='Torna inder&ecirc; - Go back'>&nbsp;&lt;&lt; Ritorna indietro</A></B></font>

    <?php

    }
    else

    $query="SELECT * FROM guestbook";
    $risultati=mysql_query($query);

    $num=mysql_numrows($risultati);
    $i=0;
    $valmax=0;
    while (
    $i < $num) {
    $valore=mysql_result($risultati,$i,"Id");
    if (
    $valore>$valmax) {
    $valmax=$valore;
    }
    $i++;
    }

    $ultimo=$valmax+1;
    //$ultimo=mysql_numrows($risultati)+1;


    // aggiungo record
    $query="INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES ('$ultimo','$nome', '$aaemail', '$commento', '$localita', '$tempo', '$indirizzoip')";
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }
    // chiudo la connessione a MySQL
    mysql_close();


    ?>



    <p align="center"><font face="arial, Helvetica, sans-serif" size="4" color="#3366FF"><B>Grazie per aver firmato il Libro</B>
    ... </P>

    <?php
    }
    }
    }
    }
    }


    ?>

  9. #129
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Ciao @Paolin grazie per aver condiviso.
    Assicurati che la query insert contenga esattamente 7 parametri.
    Codice PHP:
    $query="INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES ('?, ?, ?, ?, ?, ?, ?')";
    Salva il valore in una variabile
    Codice PHP:
    $var = $stmt2->bind_param("issssss", $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    var_dump($var, $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    In phpmyadmin verifica che la tabella guestbook abbia esattamente 7 colonne Id, Name, Email, Comments, Location, DateSent, IPAddress.
    Ultima modifica di darbula : 25-06-2020 alle ore 17.59.04

  10. #130
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Grazie darbula per l'aiuto. Il codice da te inviato, immagino lo devo inserire nel codice php già modificato (mysqli) e NON nell'originale (mysql) postato ieri.

    Ecco come l'ho inserito: (posto tutto il php)
    Codice PHP:
    <?php
    function detect_cyr_utf8($content)
    {
    return
    preg_match('/&#10[78]\d/', mb_encode_numericentity($content, array(0x0, 0x2FFFF, 0, 0xFFFF), 'UTF-8'));
    }

    function
    mysqli_result($result,$row=0,$field=0){

    $numrows = mysqli_num_rows($result);

    if (
    $numrows && $row <= ($numrows-1) && $row >=0){

    mysqli_data_seek($result,$row);
    $resrow = (is_numeric($field)) ? mysqli_fetch_row($result) : mysqli_fetch_assoc($result);

    if (isset(
    $resrow[$field])){return $resrow[$field];}
    }
    return
    false;
    }

    error_reporting(E_ALL);

    @
    session_start(); // start session if not started yet
    if ($_SESSION['AntiSpamImage'] != $_REQUEST['anti_spam_code']) {
    // set antispam string to something random, in order to avoid reusing it once again
    $_SESSION['AntiSpamImage'] = rand(1,9999999);

    ?>
    <br>&nbsp;<img src='imm/stop.gif'><br>...
    <?php

    }
    else {
    // set antispam string to something random, in order to avoid reusing it once again
    $_SESSION['AntiSpamImage'] = rand(1,9999999);


    $nome=$_POST["fullname"];
    $aaemail=$_POST["email"];
    //$commento=htmlspecialchars ($_POST["comments"], ENT_QUOTES);
    $commento=$_POST["comments"]; // l'uso di htmlspecialchars crea caratteri che spesso nei browser vengono visualizzati male
    $localita=$_POST["location"];
    $indirizzoip=$_SERVER['REMOTE_ADDR'];
    //$tempo=getdate("d/m/Y H:i:s")); // non commntato da GraphOGLRisorse
    //$tempo=getdate(); // non commntato da GraphOGLRisorse
    //$tempo=getTimestamp(); // non commntato da GraphOGLRisorse
    $tempo = date("Y-m-d H:i:s");
    //$tempo = timestamp($current_date); // non commntato da GraphOGLRisorse


    if (stristr($aaemail, 'smith'))
    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br>...
    <?php
    }
    else
    {

    if (empty(
    $commento))
    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br>...
    <?php
    }
    else
    {


    $trovato=0;
    $num_parole=0;
    $stringhe= array('cialis', 'viagra', 'http','www','penis','girl');

    while ((
    $num_parole < count($stringhe)) and ($trovato==0))
    {
    If (
    stristr($commento, $stringhe[$num_parole])) $trovato=1;
    $num_parole++;
    }

    if (
    $trovato==1)

    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br>...
    <?php
    }
    else
    {

    if (
    detect_cyr_utf8($commento))
    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br>...
    <?php
    }
    else
    {
    ?>
    <?php
    $db_host
    = "localhost";
    $db_user = "paolin";
    $db_name = "my_paolin";

    //$db = mysql_connect($db_host, $db_user);
    $mysqli = mysqli_connect($db_host, $db_user, $db_name);
    if (
    $mysqli == FALSE)
    die (
    "Errore nella connessione.");

    // imposto charset utf8
    if (!mysqli_set_charset($mysqli, 'utf8')) {
    die (
    "Error: Unable to set the character set.\n");
    exit;
    }

    //$res = mysql_select_db($db_name);
    $res = mysqli_select_db($mysqli, $db_name);
    if (
    $res == FALSE)
    die (
    "Errore nella selezione del DB.");


    // query per vedere se c'è già un commento uguale

    //$query="SELECT * FROM guestbook WHERE Email='$aaemail' AND Comments='$commento'";
    //$result = mysql_query($query);
    //$result = mysqli_query($mysqli,"SELECT * FROM guestbook WHERE Email='$aaemail' AND Comments='$commento'");
    $stmt = $mysqli->prepare("SELECT * FROM guestbook WHERE Email=? AND Comments=?");
    $stmt->bind_param("ss", $aaemail, $commento);
    //$result = $stmt->execute();
    $result = $stmt->execute() ? $stmt->get_result() : false;
    //$numero = mysql_num_rows($result);
    $stmt->close();
    if(
    $result) {$numero = mysqli_num_rows($result);}else {$numero = 0;}
    //$stmt->close();

    if ($numero>0){
    // messaggio di errore
    ?>
    <br>&nbsp;<img src='imm/stop.gif'><br>...

    <?php
    }
    //else

    //$query="SELECT * FROM guestbook";
    //$risultati=mysql_query($query);
    $risultati=mysqli_query($mysqli,"SELECT * FROM guestbook");

    $num=mysqli_num_rows($risultati);
    $i=0;
    $valmax=0;
    while (
    $i < $num) {
    //$valore=mysql_result($risultati,$i,"Id");
    $valore=mysqli_result($risultati,$i,"Id");
    if (
    $valore>$valmax) {
    $valmax=$valore;
    }
    $i++;
    }

    $ultimo=$valmax+1;
    //$ultimo=mysql_numrows($risultati)+1; // non commntato da GraphOGLRisorse

    // aggiungo record
    // $query="INSERT IGNORE INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES ('$ultimo','$nome', '$aaemail', '$commento', '$localita', '$tempo', '$indirizzoip')";
    // $query="INSERT IGNORE INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES ('".$ultimo."','".$nome."', '".$aaemail."', '".$commento."', '".$localita."', '".$tempo."', '".$indirizzoip."')";
    $query="INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES ('?, ?, ?, ?, ?, ?, ?')";

    $var = $stmt2->bind_param("issssss", $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    var_dump($var, $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    $result = $stmt2->execute();
    //$result = mysql_query($query);
    //$result = mysqli_query($mysqli, $query);

    // controllo l'esito
    if (!$result) {
    //die("Errore nella query $query: " . mysql_error());
    die("Errore nella query $query: " . mysqli_error($mysqli));
    }
    // chiudo la connessione a MySQLi
    //mysql_close();
    mysqli_close($mysqli);


    // verifica funzionamento
    if($result){
    if(
    $stmt2->num_rows > 0) {
    echo
    "Righe generate: ".$stmt->affected_rows2."<br />";
    echo
    "Ultimo ID inserito: ".$stmt->insert_id2 ."<br />";
    }
    }
    ?>


    <p align="center"><font face="arial, Helvetica, sans-serif" size="4" color="#3366FF"><B>Grazie per aver firmato il Libro</B>...


    <?php
    }
    }
    }
    }
    }


    ?>
    Mi dà

    Notice: Undefined variable: stmt2 in /membri/paolin/sign-invio-darbula.php on line 211

    Fatal error: Call to a member function bind_param() on null in /membri/paolin/sign-invio-darbula.php on line 211

    Line 211 c'è
    Codice PHP:
    $var = $stmt2->bind_param("issssss", $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    Riguardo la tabella ha 7 colonne denominate esattamente
    1 ID int(11) No Nessuno Modifica Modifica Elimina Elimina
    Più
    2 Name varchar(30) utf8_general_ci Sì NULL Modifica Modifica Elimina Elimina
    Più
    3 Email varchar(40) utf8_general_ci Sì NULL Modifica Modifica Elimina Elimina
    Più
    4 Comments varchar(255) utf8_general_ci Sì NULL Modifica Modifica Elimina Elimina
    Più
    5 Location varchar(40) utf8_general_ci Sì NULL Modifica Modifica Elimina Elimina
    Più
    6 DateSent timestamp Sì NULL Modifica Modifica Elimina Elimina
    Più
    7 IPAddress varchar(15) utf8_general_ci
    Ultima modifica di paolin : 26-06-2020 alle ore 01.05.03

  11. #131
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Ciao paolin figurati, $stmt2 non è definito
    Codice PHP:
    $query = "INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES ('?, ?, ?, ?, ?, ?, ?')";

    if(
    $stmt2 = $mysqli->prepare($query)) {
    $var = $stmt2->bind_param("issssss", $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    var_dump($var, $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    $result = $stmt2->execute();

    $stmt2->store_result();
    printf("%d Row deleted.\n", $mysqli->affected_rows);
    $stmt2->close();
    }
    Modifica la parte codice php finale, prima del testo html però non dovrai avere la chiusura bind dal momento che la stai utilizzando.
    Codice PHP:
    $stmt2-close();
    Potresti spostarla dopo insert_id2.
    Codice PHP:
    if($result){
    if(
    $stmt2->num_rows > 0) {
    echo
    "Righe generate: ".$stmt2->affected_rows2."<br />";
    echo
    "Ultimo ID inserito: ".$stmt2->insert_id2 ."<br />";
    }
    }
    ?>
    il manuale php non elenca INSERT a limite togli questo codice.
    Ultima modifica di darbula : 26-06-2020 alle ore 22.40.24

  12. #132
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,288

    Predefinito

    Salve darbula,
    quella parte alla fine, a cui si riferisce, l'avevo fatta mettere io come verifica, anche se non dovea stare dopo la chiusua.

    Quella parte paolin, la può tolgliere o lascarla commentata per eventuali vericifche, comunque non è determinante per il funzionameto.

    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 26-06-2020 alle ore 02.36.52

  13. #133
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Ho messo il codice così (sperando d'aver capito giusto)
    Codice PHP:
    <?php $query = "INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES ('?, ?, ?, ?, ?, ?, ?')";

    if(
    $stmt2 = $mysqli->prepare($query)) {
    $var = $stmt2->bind_param("issssss", $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    var_dump($var, $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    $result = $stmt2->execute();

    $stmt2->store_result();
    printf("%d Row deleted.\n", $mysqli->affected_rows);

    }

    // controllo l'esito
    if (!$result) {
    //die("Errore nella query $query: " . mysql_error());
    die("Errore nella query $query: " . mysqli_error($mysqli));
    }
    // chiudo la connessione a MySQLi
    //mysql_close();
    mysqli_close($mysqli);



    ?>


    <p align="center"><font face="arial, Helvetica, sans-serif" size="4" color="#3366FF"><B>Grazie per aver firmato il Libro</B>...


    <?php
    $stmt2
    ->close();

    }
    }
    }
    }
    }


    ?>
    mi dà
    Grazie per aver firmato il Libro...
    Fatal error: Call to a member function close() on boolean in /membri/paolin/sign-invio-darbula.php on line 239

    (line 239 c'è
    Codice PHP:
    $stmt2->close();
    Invece mettendo la chiusura prima
    Codice PHP:
    <?php $query = "INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES ('?, ?, ?, ?, ?, ?, ?')";

    if(
    $stmt2 = $mysqli->prepare($query)) {
    $var = $stmt2->bind_param("issssss", $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    var_dump($var, $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    $result = $stmt2->execute();

    $stmt2->store_result();
    printf("%d Row deleted.\n", $mysqli->affected_rows);
    $stmt2->close();
    }

    // controllo l'esito
    if (!$result) {
    //die("Errore nella query $query: " . mysql_error());
    die("Errore nella query $query: " . mysqli_error($mysqli));
    }
    // chiudo la connessione a MySQLi
    //mysql_close();
    mysqli_close($mysqli);



    ?>


    <p align="center"><font face="arial, Helvetica, sans-serif" size="4" color="#3366FF"><B>Grazie per aver firmato il Libro</B>...


    <?php
    }
    }
    }
    }
    }


    ?>
    mi dà
    Grazie per aver firmato il Libro...
    Ma naturalmente NON inserisce nulla nella tabella.
    Scusate se non ho capito bene, ma ho un po' di difficoltà col php

  14. #134
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Ciao, probabilmente prepare avrà fallito... dovrebbe stampare il var_dump e anche quante row hai inserito.
    Non hai bisogno di aprire nuovamente il file php <?php poiché è il continuo di $ultimo, togli l'apertura.
    Ho capito l'errore, quando effettui la query INSERT rimuovi i singoli apici altrimenti mysql non capisce siano dei segnaposto i ?.
    Ultima modifica di darbula : 27-06-2020 alle ore 02.00.56

  15. #135
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Ciao, ho tolto il <?php e la relativa chiusura prima, però ora mi dice
    Parse error: syntax error, unexpected '<' in /membri/paolin/sign-invio-darbula.php on line 235
    mi sa che il <?php vada lasciato; ho anche rimosso i singoli apici.
    Posto il codice onde evitare fraintendimenti
    Codice PHP:
    $query = "INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES (?, ?, ?, ?, ?, ?, ?)";

    if(
    $stmt2 = $mysqli->prepare($query)) {
    $var = $stmt2->bind_param("issssss", $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    var_dump($var, $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    $result = $stmt2->execute();

    $stmt2->store_result();
    printf("%d Row deleted.\n", $mysqli->affected_rows);
    $stmt2->close();
    }

    // controllo l'esito
    if (!$result) {
    //die("Errore nella query $query: " . mysql_error());
    die("Errore nella query $query: " . mysqli_error($mysqli));
    }
    // chiudo la connessione a MySQLi
    //mysql_close();
    mysqli_close($mysqli);




    <
    p align="center"><font face="arial, Helvetica, sans-serif" size="4" color="#3366FF"><B>Grazie per aver firmato il Libro</B>...</p>



    }
    }
    }
    }
    }


    ?>
    Ho poi provato a rimettere il ?> prima di <p align... e il <?php dopo </p>
    e mi dice:
    bool(true) int(1) string(7) " cavolo" string(17) "cavoloo@libero.it" string(7) "provva" string(1) " " string(19) "2020-06-27 22:48:45" string(12) "93.34.84.247" -1 Row deleted. Errore nella query INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES (?, ?, ?, ?, ?, ?, ?):

    Grazie
    Ultima modifica di paolin : 27-06-2020 alle ore 22.52.49

  16. #136
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,288

    Predefinito

    darbula faceva riferimento di togliere <?php solo quello di apertura che stava affianco alla query edi chiusura precedente.

    qui la ciusura e l'apertura serve perchè c'e il codice html
    Codice:
    ?>
    
    
            <p align="center"><font face="arial, Helvetica, sans-serif" size="4" color="#3366FF"><B>Grazie per aver firmato il Libro</B>...
    
    
    <?php
    In alternativa può usare echo.
    Codice:
    echo '<p align="center"><font face="arial, Helvetica, sans-serif" size="4" color="#3366FF"><B>Grazie per aver firmato il Libro</B>...'
    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 27-06-2020 alle ore 23.05.41
    darbula likes this.

  17. #137
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Intanto il conteggio di $ultimo sarà sbagliato non credo che inizialmente sia 0+1=1 ma soprattutto la variabile $result risulta falsa (quella in execute per $stmt2)... uhm aggiorno a breve con il codice da provare in phpmyadmin.
    Codice:
    USE my_paolin;
    SET @s ='INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES (?, ?, ?, ?, ?, ?, ?)';
    PREPARE stmt FROM @s;
    SET @a = 1;
    SET @b = 'cavolo';
    SET @c = 'cavolo@libero.it';
    SET @d = 'prova';
    SET @e = ' ';
    SET @f = '2020-06-27 22:48:45';
    SET @g = '93.34.84.247';
    EXECUTE stmt USING @a, @b, @c, @d, @e, @f, @g;
    DEALLOCATE PREPARE stmt;
    Puoi provare questa query in phpmyadmin esattamente in alto dove leggi SQL? Magari al posto di 1 utilizza l'ultimo +1 dell'attuale id.
    Credo sia meglio creare il codice di sana pianta poiché manca mysqli_error($mysqli) però $result è falsa.
    Ultima modifica di darbula : 28-06-2020 alle ore 01.43.53

  18. #138
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    GraphOGLRisorse Mi scusi ma non capisco dove dovrei togliere <?php e ?>
    se può, mi scriva il pezzo di codice dove dovrei togliere.
    Cordiali saluti

  19. #139
    GraphOGLRisorse non è connesso AlterGuru 2500
    Data registrazione
    14-02-2015
    Messaggi
    4,288

    Predefinito

    Ho poi provato a rimettere il ?> prima di <p align... e il <?php dopo </p>
    Quelli vanno bene, li lasci.

    Solo questi ?> e <?php qui andavano tolti:
    Codice:
    ?>
    <?php $query = "INSERT INTO guestbook (.....
    Cordiali saluti.
    Ultima modifica di GraphOGLRisorse : 28-06-2020 alle ore 01.25.56

  20. #140
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Ho provato il codice in Phpmyadmin - non l'avevo mai fatto prima -
    All'interno della tabella guestbook ho aperto la finestra SQL
    ho inserito nello spazio bianco
    USE my_paolin;
    SET @s ='INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES (?, ?, ?, ?, ?, ?, ?)';
    PREPARE stmt FROM @s;
    SET @a = 564;
    SET @b = 'cavolo';
    SET @c = 'cavolo@libero.it';
    SET @d = 'prova';
    SET @e = ' ';
    SET @f = '2020-06-27 22:48:45';
    SET @g = '93.34.84.247';
    EXECUTE stmt USING @a, @b, @c, @d, @e, @f, @g;
    DEALLOCATE PREPARE stmt;

    e cliccato su esegui in basso a destra
    (l'ultimo ID inserito è 563)

    Messaggio di MySQL: Documentazione

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USE my_paolin' at line 2


    Ho provato poi con 565, mi esce
    USE my_paolin;# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    SET @s ='INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES (?, ?, ?, ?, ?, ?, ?)';# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    PREPARE stmt FROM @s;# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    SET @a = 565;# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    SET @b = 'cavolo';# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    SET @c = 'cavolo@libero.it';# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    SET @d = 'prova';# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    SET @e = ' ';# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    SET @f = '2020-06-27 22:48:45';# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    SET @g = '93.34.84.247';# MySQL ha restituito un insieme vuoto (i.e. zero righe).

    EXECUTE stmt USING @a, @b, @c, @d, @e, @f, @g;# 1 riga modificata.

    DEALLOCATE PREPARE stmt;# MySQL[...]


    FUNZIONA! Da phpadmin riesco a inserire nella tabella.
    Ultima modifica di paolin : 28-06-2020 alle ore 01.56.48

  21. #141
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    GraphOGLRisorse ho capito ora: io ho postato sul forum solo una parte di codice nel post #133 e quindi risulta il <?php accanto a query, ma nel mio file non c'è, perché prima c'è dell'altro codice e quindi il <?php è molto prima. Spero di essermi spiegato
    Cordiali saluti

  22. #142
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Dovresti adesso controllare l'ultimo id inserito... se presente la query funziona :) quindi ci sarà confusione nel codice php creato.
    Puoi anche cancellare questo dato in mostra e seleziona elimina solo per l'ultimo Id.
    Ultima modifica di darbula : 28-06-2020 alle ore 02.09.11

  23. #143
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Da phpmyadmin in Mostra sono presenti gli ultimi ID inseriti (ne ho inseriti 3)

    ID Decrescente
    Name
    Email
    Comments
    Location
    DateSent
    IPAddress

    566
    cavolino
    cavolino@libero.it
    prova2
    2020-06-27 22:48:45
    93.34.84.247

    565
    cavolo
    cavolo@libero.it
    prova
    2020-06-27 22:48:45
    93.34.84.247

    Direi che funziona!

  24. #144
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Ok ho bisogno di tempo per modificare lo script php, intanto buonaserata.

  25. #145
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Tutto il tempo che ti serve. Nessuna premura. GRAZIE MILLE!!!
    Buonanotte.

  26. #146
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Puoi provare?
    Codice PHP:
    <?php
    function detect_cyr_utf8($content)
    {
    return
    preg_match('/&#10[78]\d/', mb_encode_numericentity($content, array(0x0, 0x2FFFF, 0, 0xFFFF), 'UTF-8'));
    }

    function
    mysqli_result($result,$row=0,$field=0)
    {

    $numrows = $result->num_rows;

    if (
    $numrows && $row <= ($numrows-1) && $row >=0){
    $result->data_seek(0);
    $result->data_seek($row);
    $resrow = (is_numeric($field)) ? mysqli_fetch_row($result) : mysqli_fetch_assoc($result);

    if (isset(
    $resrow[$field])){return $resrow[$field];}
    }
    return
    false;
    }


    error_reporting(E_ALL);

    @
    session_start(); // start session if not started yet
    if (isset($_SESSION['AntiSpamImage'],$_REQUEST['anti_spam_code']) and $_SESSION['AntiSpamImage'] != $_REQUEST['anti_spam_code']) {
    // set antispam string to something random, in order to avoid reusing it once again
    $_SESSION['AntiSpamImage'] = rand(1,9999999);

    ?>
    <br>&nbsp;<img src='imm/stop.gif'><br>...
    <?php

    }
    else {
    // set antispam string to something random, in order to avoid reusing it once again
    $_SESSION['AntiSpamImage'] = rand(1,9999999);


    $nome=$_POST["fullname"];
    $aaemail=$_POST["email"];
    $commento=$_POST["comments"]; // l'uso di htmlspecialchars crea caratteri che spesso nei browser vengono visualizzati male
    $localita=$_POST["location"];
    $indirizzoip=$_SERVER['REMOTE_ADDR'];
    $tempo = date("Y-m-d H:i:s");


    if (
    stristr($aaemail, 'smith'))
    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br>...
    <?php
    }
    else
    {

    if (empty(
    $commento))
    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br>...
    <?php
    }
    else
    {


    $trovato=1;
    $stringhe= array('cialis', 'viagra', 'http','www','penis','girl');
    $num_stringhe = count($stringhe);

    while (
    $num_stringhe)
    {
    If (
    stristr($commento, $stringhe[--$num_stringhe]))
    $num_stringhe = $trovato = 0;
    }

    if (
    $trovato==0)

    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br>...
    <?php
    }
    else
    {

    if (
    detect_cyr_utf8($commento))
    {
    ?>
    &nbsp;<img src='imm/stop.gif'><br>...
    <?php
    }
    else
    {
    ?>
    <?php
    $db_host
    = "localhost";
    $db_user = "paolin";
    $db_pass = "";
    $db_name = "my_paolin";

    //$db = mysql_connect($db_host, $db_user);
    if(!($mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name)))
    die(
    'Connect Error (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);

    // imposto charset utf8
    if (!mysqli_set_charset($mysqli, 'utf8'))
    die (
    "Error: Unable to set the character set.\n");

    //$res = mysql_select_db($db_name);
    if(!($res = mysqli_select_db($mysqli, $db_name)))
    die (
    "Errore nella selezione del DB.");


    // query per vedere se c'è già un commento uguale
    $stmt = $mysqli->prepare("SELECT * FROM guestbook WHERE Email=? AND Comments=?");
    $stmt->bind_param("ss", $aaemail, $commento);
    $result = $stmt->execute() ? $stmt->get_result() : false;
    $stmt->store_result();
    if(
    $result) {$numero = $stmt->num_rows;}else {$numero = 0;}
    $stmt->free_result();
    if(
    $stmt->more_results())
    $stmt->next_result();
    $stmt->close();

    if (
    $numero>0){
    // messaggio di errore
    ?>
    <br>&nbsp;<img src='imm/stop.gif'><br>...

    <?php
    }
    else
    {
    $risultati=$mysqli->query("SELECT * FROM guestbook");

    $num=$risultati->num_rows;
    $i=0;
    $valmax=0;
    while (
    $i < $num) {
    $valore=mysqli_result($risultati,$i,"Id");
    if (
    $valore>$valmax) {
    $valmax=$valore;
    }
    $i++;
    }
    $risultati->free();
    if(
    $mysqli->more_results())
    $mysqli->next_result();

    $ultimo=$valmax+1;

    $query="INSERT INTO guestbook (Id, Name, Email, Comments, Location, DateSent, IPAddress ) VALUES (?, ?, ?, ?, ?, ?, ?)";


    if(
    $stmt2 = $mysqli->prepare($query)) {
    $var = $stmt2->bind_param("issssss", $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip);
    var_dump($var, $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip, $valore, $num);
    $result = $stmt2->execute();
    $stmt2->store_result();
    printf("%d Row inserite.\n", $mysqli->affected_rows);
    $stmt2->free_result();
    if(
    $stmt2->more_results())
    $stmt2->next_result();
    $stmt2->close();
    }
    }
    $mysqli->close();

    ?>


    <p align="center"><font face="arial, Helvetica, sans-serif" size="4" color="#3366FF"><B>Grazie per aver firmato il Libro</B>...


    <?php
    }
    }
    }
    }
    }


    ?>
    Se funziona dovresti togliere error_reporting, l'involucro $var, var_dump e printf con tutto il contenuto racchiuso dentro parentesi.
    Ci sarebbe anche da validare la variabile $_POST e modificare da while a ultimo row poiché deve recuperare solo l'ultimo Id.
    EDIT: ho aggiunto il reset per il loop del while.
    Ultima modifica di darbula : 29-06-2020 alle ore 14.47.34

  27. #147
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Ciao, ho provato ma purtroppo mi dice:
    bool(true) int(1) string(7) " ioooo3" string(18) "provapro@libero.it" string(6) "provaa" string(3) " ge" string(19) "2020-06-29 00:15:27" string(12) "93.34.84.247" -1 Row inserite.
    Grazie per aver firmato il Libro...


    e non inserisce nulla.

  28. #148
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Per qualche motivo per te $ultimo vale 1 ho già un sospetto ma mi occorre conoscere almeno il $num..
    Vediamo aggiungi come ultima posizione $num compreso di virgola al tuo var_dump.. editata il messaggio precedente lo leggerò.
    Oltre a queste indicazioni prova il codice precedente che è stato aggiornato.
    Ultima modifica di darbula : 29-06-2020 alle ore 03.49.21

  29. #149
    paolin non è connesso Utente
    Data registrazione
    13-02-2014
    Messaggi
    127

    Predefinito

    Ciao, ho provato ma purtroppo mi dice:
    bool(true) int(1) string(7) " ioooo3" string(18) "provapro@libero.it" string(6) "provaa" string(3) " ge" string(19) "2020-06-29 00:15:27" string(12) "93.34.84.247" -1 Row inserite.
    Grazie per aver firmato il Libro...
    Ho aggiunto $num
    Codice PHP:
    var_dump($var, $ultimo, $nome, $aaemail, $commento, $localita, $tempo, $indirizzoip, $num);
    ecco il risultato
    bool(true) int(1) string(5) "iooo4" string(18) "provalui@libero.it" string(7) "provaaa" string(3) " ge" string(19) "2020-06-29 23:42:03" string(12) "93.34.84.247" int(544) -1 Row inserite.
    Grazie per aver firmato il Libro...


    Col codice precedente aggiornato, ecco il risultato
    bool(true) int(1) string(6) " iooo5" string(18) "provalei@libero.it" string(7) "provaa2" string(3) " ge" string(19) "2020-06-29 23:50:30" string(12) "93.34.84.247" bool(false) int(544) -1 Row inserite.
    Grazie per aver firmato il Libro...


    Spero ti dica qualcosa...
    Ciao e grazie

  30. #150
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Si mi sta indicando che c'è un problema alla funzione mysqli_result
    Codice PHP:
    function mysqli_result($result,$row=0,$field=0)
    {

    $numrows = $result->num_rows;

    if (
    $numrows && $row <= ($numrows-1) && $row >=0){
    $result->data_seek(0);
    $result->data_seek($row);
    $resrow = (is_numeric($field)) ? mysqli_fetch_row($result) : mysqli_fetch_assoc($result);

    if (isset(
    $resrow[$field])){return $resrow[$field];}
    }
    return
    false;
    }
    Cambia il return false con return NULL; posta il var_dump.
    Sto a pensare perché non funziona mysqli_fetch_assoc($result).. a me con 330 row funziona.
    Può darsi non hai almeno una colonna Id per un row.
    Ultima modifica di darbula : 30-06-2020 alle ore 00.29.00

Pagina 5 di 6 PrimoPrimo ... 3456 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •