Query Anomala

$selvideo =  "select * from video where titolo = '$title' AND idvideo != '$idvideo'";


$queryvideo = mysql_query ($selvideo,$connes)
                or die ("<span class='red'>Non riesco ad eseguire la richiesta della SELECT torna indietro.</span>");

$valvideo = mysql_fetch_array ($queryvideo);
$idvid = $valvideo ["idvideo"];

Non mi valorizza la variabile $idvid come mai? Il codice mi sembra corretto? :giveup: :lamo: :wallbash:

inviato 10 anni fa
EKELON77
X 0 X

La query potrebbe non aver restituito nessun risultato e quindi la mysql_fetch_array restituisce "false"

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Come posso capire se è un problema della select o della versione PHP visto che questi problemi me li sta dando da quando sono passato alla 5 con register_globals su OFF, altri script dove faccio mysql_fetch_array funziona perfettamente, mi puoi dare una mano?  :angel:

risposto 10 anni fa
EKELON77
X 0 X

Per l'ennesima volta: il register_globals su ON fa si che il PHP crei automaticamente delle variabili con i valodi provenienti "dall'esterno dello script", ovvero da GET (l'url) da POST (i form) dai COOKIE e altra roba.

!!!!! NIENTE DI PIU' !!!!!

Se uno script usa queste variabili create automaticamente allora con il register_globals a OFF ovviamente non funziona più, perché quelle variabili in questo contesto non esistono.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

 $idvid è inetrna ed OK se regiser_gloabals = OFF non può essere creata allora per farla esistere e valorizzarla? 

come devo fare? :'(

risposto 10 anni fa
EKELON77
X 0 X

$idvid è inetrna ed OK se regiser_gloabals = OFF non può essere creata allora per farla esistere e valorizzarla? 

come devo fare? :'(

non ho capito  :dunno:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Forse non mi sono espresso correttamente e mi scuso per questo, cmq. mettendo che queste variabili vengano create automaticamente dal register_gloabals come posso crearle al mio comando per poterle utilizzare?

E' possibile che sia soltanto un problema del register ma forse anche di una versione PHP succesiva o magari installata male?

Questo codice funziona bene:

<?

if (($nominat != '') and ($cd=="6a4c2e0g1")){

include "connessione.php";

$count = mysql_query ("select count(idvideo) from video");

$conta = mysql_fetch_row($count);

//echo "numero totale di records ";

$tot_records = $conta[0];

//echo "risultati per pagina (secondo parametro di LIMIT) ";

$per_page = 20;

//echo "numero totale di pagine ";

$tot_pages = ceil($tot_records / $per_page);

//echo "pagina corrente ";

//$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];

$current_page = (!$HTTP_GET_VARS["page"]) ? 1 : (int)$HTTP_GET_VARS["page"];

//echo "primo parametro di LIMIT ";

$primo = ($current_page - 1) * $per_page;

//echo "primo parametro di ogni pagina ";

$trovaprimo = $conta[0] - $primo;

$selvideo =  "select * from video order by titolo limit $primo, $per_page";

$queryvideo = mysql_query ($selvideo,$connes)

                or die ("Non riesco ad eseguire la richiesta, torna indietro");

$valvideo = mysql_fetch_array ($queryvideo);

$idvideo     = $valvideo ["idvideo"];

$titolo      = $valvideo ["titolo"];

$supportodvd      = $valvideo ["supportodvd"];

$supportovhs      = $valvideo ["supportovhs"];

?>

Mi sembra identico a quello postato in precedenza all'inizio del topic non vedo differenze per quanto riguarda mysql_fetch_array     O0

risposto 10 anni fa
EKELON77
X 0 X

mysql_fetch_array agisce sulla query effettuata in precedenza, ovvero:

$selvideo =  "select * from video order by titolo limit $primo, $per_page";

che è funzione delle variabili $primo e $per_page

Se guardi da dove provengono, noterai che $per_page = 20 quindi non viene dall'esterno dello script, mentre $primo viene da:

$primo = ($current_page - 1) * $per_page;

quindi dipende da $per_page (sempre uguale a 20) e da $current_page, che a sua volta viene valorizzato da:

$current_page = (!$HTTP_GET_VARS["page"]) ? 1 : (int)$HTTP_GET_VARS["page"];

che si può scrivere anche (e meglio):

$current_page = (!$_GET['page']) ? 1 : (int)$_GET['page'];

Nota quindi l'uso di $_GET, ovvero dell'array superglobale che contiene le variabili provenienti dall'URL. L'uso di $_GET rende lo script funzionante, indipendentemente dal register_global

Ecco perché questo script funziona!

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

 :excl: <?

include "connessione.php";

$idvideo=$_POST["idvideo"];

$title=$_POST["title"];

$selvideo =  "select * from video where titolo = '$title' AND idvideo != '$idvideo'";

$queryvideo = mysql_query ($selvideo,$connes)

                or die ("<span class='red'>Non riesco ad eseguire la richiesta della SELECT torna indietro.</span>");

$valvideo = mysql_fetch_array ($queryvideo);

$idvid = $valvideo ["idvideo"];

if (isset ($idvid)){

echo "Il tuo numero è: $idvid";

}else{

echo"Nessuna definizione";

}

Anche io utilizzo 2 valori esterni con l'array superglobale ed è quello in $_POST

$idvideo=$_POST["idvideo"];
$title=$_POST["title"];

come posso agire sulle variabili esterne per far funzionare la mai query?

Questa una query in output fatta con l'echo

select * from video where titolo = 'SHARK TALE' AND idvideo != '1'

Nessuna definizione:excl:  :bye: O0

risposto 10 anni fa
EKELON77
X 0 X

la query è completa quindi se non restituisce risultati non è per colpa del register_global, ma forse nella tabella non ci sono record che corrispondono alle condizioni della SELECT. Hai provato a lanciare la query da phpMyAdmin (o MySQL query browser)?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Prova a mettere:

$queryvideo = mysql_query ($selvideo,$connes)
                or die ("<span class='red'>Non riesco ad eseguire la richiesta della SELECT torna indietro.</span>");
$righe = mysql_num_rows ($queryvideo);
if ($righe == 0) { echo "non ci sono risultati!"; }
else {
//fetcharray ecc.
}

Bisogna sempre controllare i risultati di una query prima di gestirla.

risposto 10 anni fa
LonelyWolf
X 0 X
<?ini_set('error_reporting',E_ALL)?>
<?
include "sessione.php";

function refresh($url,$t)
{
 echo "<META HTTP-EQUIV=REFRESH CONTENT=\"$t;  URL=$url\">";
}

?>
<html>
<head>
<title>Modifica</title>
<link rel="stylesheet" href="stile.css" type="text/css">
</head>
<body bgcolor="#FFFFFF">
<?
include "connessione.php";


$idvideo=$_POST["idvideo"];
$title=$_POST["title"];

$selvideo =  "select * from video where titolo = '$title' AND idvideo != $idvideo";

echo $selvideo;

$queryvideo = mysql_query ($selvideo,$connes)
                or die ("<span class='red'>Non riesco ad eseguire la richiesta della SELECT torna indietro.</span>");


$valvideo = mysql_fetch_array ($queryvideo);
$idvid = $valvideo ["idvideo"];

if (isset ($idvid)){
echo "<BR/>Il tuo numero è: $idvid";
}else{
echo"<BR/>Nessuna definizione";
}

$title2  = str_replace("\'", "", $title);

$immagine = $_POST["immagine"];
$delimg = $_POST["delimg"];
$fotoold = $_POST["fotoold"];

if ($idvid == ''){

    if ($delimg == 'Si') {

    $img= "";

    } else {

    $posinizimg = strrpos($img, "\'")+1;
    $posfinimg = strlen($img);
    $lunghezzaimg = $posfinimg - $posinizimg;
    $img= substr($img, $posinizimg, $lunghezzaimg);

    if ($img != ''){ $img= "images/locandine/".$img; copy($immagine,$img); }

    else { $img= $fotoold; }

    }

    $title=$_POST["title"];
    $genere=$_POST["genere"];
    $trama=$_POST["trama"];
    $regia=$_POST["regia"];
    $produz=$_POST["produz"];
    $nazio=$_POST["nazio"];
    $anno=$_POST["anno"];
    $durata=$_POST["durata"];
    $eta=$_POST["eta"];
    $cast1=$_POST["cast1"];
    $cast2=$_POST["cast2"];
    $cast3=$_POST["cast3"];
    $cast4=$_POST["cast4"];
    $cast5=$_POST["cast5"];
    $cast6=$_POST["cast6"];
    $sotto=$_POST["sotto"];
    $suppdvd=$_POST["suppdvd"];
    $suppvhs=$_POST["suppvhs"];


    $modvideo =  "update video
                  set titolo = '$title', genere = '$genere', trama = '$trama', foto = '$img', regia = '$regia', produz = '$produz', naz = '$nazio', anno = '$anno', durata = '$durata', eta = '$eta', cast1 = '$cast1', cast2 = '$cast2', cast3 = '$cast3', cast4 = '$cast4', cast5 = '$cast5', cast6 = '$cast6', sottotitoli = '$sotto', supportodvd = '$suppdvd', supportovhs = '$suppvhs'
               where idvideo = $idvideo";

    $querymodvideo = mysql_query ($modvideo,$connes)
                     or die ("<span class='red'>Non riesco ad eseguire la richiesta dell'UPDATE torna indietro.</span>");

    ?>

    <table width="500">
        <tr>
          <td width="40%"></td>
          <td width="60%" align = "center">
             <? echo "<br><br><b><span class='red'><font color=\"#D50000\"> Sto modificando il Titolo. ATTENDERE.... </font></b></span>"; ?>
           </td>
        </tr>
    </table>
<?
mysql_close ($connes);
if (isset($_GET["msg_mod"])) {
   $msg = $_GET["msg_mod"];
}else {
   $msg = "Il film è stato modificato";
   $msg = urlencode($msg); // non ci possono essere spazi nell'URL
}
refresh("gestarchivio.php?msg_mod=$msg",20);
exit;
} else { ?>
<table width="500">
    <tr>
      <td width="50%"></td>
      <td width="50%" align = "center">
         <?  echo "<br><br><b><span class='red'><font color=\"#D50000\"> ATTENDERE.... </font></b></span>"; ?>
      </td>
    </tr>
</table>
<?
mysql_close ($connes);
if (isset($_GET["msg_mod"])) {
      $msg = $_GET["msg_mod"];
}
else {
     $msg = "Il nome del film che hai scelto è già presente";
     $msg = urlencode($msg); // non ci possono essere spazi nell'URL
}
refresh("gestarchivio.php?msg_mod=$msg",10);
exit;
}
?>
</body>
</html>

Ho psotato l'intero codice ho capito che entra nell'if ma non entra nel ramo dell'else come mai, in quale condizione si dovrebbe vericare? E' un :angel: chi risponde.

risposto 10 anni fa
EKELON77
X 0 X

Di quale if stai parlando?

E ancora non controlli se la query restituisce delle righe.

risposto 10 anni fa
LonelyWolf
X 0 X
$valvideo = mysql_fetch_array ($queryvideo);
$idvid = $valvideo ["idvideo"];

if (isset ($idvid)){
echo "<BR/>Il tuo numero è: $idvid";
}else{
echo"<BR/>Nessuna definizione";
}

$title2  = str_replace("\'", "", $title);

$immagine = $_POST["immagine"];
$delimg = $_POST["delimg"];
$fotoold = $_POST["fotoold"];

if ($idvid == ''){

Dove è che non controllo se la query restituisce delle righe,mi puoi indicare la riga?

P.S.: Sto utilizzando MySQL 5.x non 4.x potrebbe essere un problema?

risposto 10 anni fa
EKELON77
X 0 X

subito dopo mysql_query controlla quante righe ha restituito, se >0  ci sono risultati, altrimenti no, come ti ho scritto in un paio di post precedenti.

Edit:

Un'altra cosa, mi sembra di aver capito che $idvideo è una specie di codice dell'utente, ma nella query iniziale cerchi un titolo di un video non appartente all'utente che sta cercando, è corretto?

risposto 10 anni fa
LonelyWolf
modificato 10 anni fa
X 0 X

subito dopo mysql_query controlla quante righe ha restituito, se >0  ci sono risultati, altrimenti no, come ti ho scritto in un paio di post precedenti.

Edit:

Un'altra cosa, mi sembra di aver capito che $idvideo è una specie di codice dell'utente, ma nella query iniziale cerchi un titolo di un video non appartente all'utente che sta cercando, è corretto?

Si è corretto per certi versi xchè se != $idvid prende il valore valorizzato dal radiobutton entra

nell' if ($idvid == ''){ infatti $idvid è vuoto ed esegue l'update come hai visto nel post precedente dove ho scritto l'intero codice la cosa strana è che non entra nel blocco del ELSE e non capisco perchè?

} else { ?>
<table width="500">
    <tr>
      <td width="50%"></td>
      <td width="50%" align = "center">
         <?  echo "<br><br><b><span class='red'><font color=\"#D50000\"> ATTENDERE.... </font></b></span>"; ?>
      </td>
    </tr>
</table>
<?
mysql_close ($connes);
if (isset($_GET["msg_mod"])) {
      $msg = $_GET["msg_mod"];
}
else {
     $msg = "Il nome del film che hai scelto è già presente";
     $msg = urlencode($msg); // non ci possono essere spazi nell'URL
}
refresh("gestarchivio.php?msg_mod=$msg",10);
exit;
}
?>
</body>
</html>
risposto 10 anni fa
EKELON77
X 0 X

Rileggendo il codice del post precedente, vedo che se $idvid è vuoto fa l'update altrimenti dovrebbe entrare nell'else e mostrare attendere fino al refresh.

Dato che il problema è il valore di $idvid metti temporaneamente un echo $idvid prima dell'if e fai delle prove così vedi esattamente quali valori arrivano.

risposto 10 anni fa
LonelyWolf
X 0 X

Mi ritorna nessuna variabile definita oppure variabile vuota. O0

risposto 10 anni fa
EKELON77
X 0 X

Allora sta lì il problema, come viene passata quella variabile?

Vuota non è non definita e quel non definita che crea problemi, dato che se è vuota dovrebbe entrare nell'else.

Fammi sapere come va!

risposto 10 anni fa
LonelyWolf
X 0 X

Mi sono espresso male per testare la variabile ho utilizzato i metodi isset e empty, se utilizzo ISSET mi dice che la variabile non è definita invece se utilizzo empty mi dice che il "Numero della Variable è: e poi il vuoto non mi stampa il valore contenuto nella variabile.

Grazie Ancora.

Ciao LW 

risposto 10 anni fa
EKELON77
X 0 X

Mi sono espresso male per testare la variabile ho utilizzato i metodi isset e empty, se utilizzo ISSET mi dice che la variabile non è definita invece se utilizzo empty mi dice che il "Numero della Variable è: e poi il vuoto non mi stampa il valore contenuto nella variabile.

Grazie Ancora.

Ciao LW 

Ringrazio tutti per la disponibilità cmq. per il momento anche se la query è corretta credo che sia il caso che abbandoni il linguaggio per motivi di tempo e conoscenze.  :bye: O0

risposto 10 anni fa
EKELON77
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili