Help...Warning: Invalid argument

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Help...Warning: Invalid argument

par Ryle » 12 avr. 2006, 19:32

Ben je peux d'ors et déjà le faire sur le code que tu as donné plus haut, il suffit juste de remplacer le foreach et la checkbox :
<?php 
require_once("../../phplib/connect.php"); 
require_once("../../phplib/requete.class.php"); 

// Modif du foreach :
if(isSet($_POST['suppr'])) { // si la variable est passée 
  foreach($_POST['suppr'] as $value) { // pour chaque valeur 
    $req1 = "SELECT id_membre, num FROM tem_photos WHERE nom='$value'"; 
    $result1 = mysql_query($req1) or die(mysql_error()); 
    while($row = mysql_fetch_assoc($result1)) { 
      if($row['num'] == 1) unlink("../../photosmembres/vignettes/".$row['id_membre'].".jpg"); 
    } // fin while 

    $req2 = "DELETE FROM tem_photos WHERE nom='$value'"; 
    $result1 = mysql_query($req2) or die(mysql_error()); 
    unlink("../../photosmembres/grandes/$value"); 
  }// fin foreach 
}// fin if 

if (isset($_GET['page'])) $page = $_GET['page']; 
else $page = 1; 

$nbparpage = 50; 
$min = (($page-1)*$nbparpage); 
$max = $min+$nbparpage; 

$sql = "SELECT nom FROM tem_photos LIMIT $min, $max"; 
$result = mysql_query($sql) or die(mysql_error()); 
$c = 0; 
$data = array(); 
while($row = mysql_fetch_assoc($result)) { 
  $data[$c] = $row['nom']; 
  $c++; 
} 
$nbresult = mysql_num_rows($result); 
mysql_free_result($result); 

?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Document sans nom</title> 
</head> 

<body> 
<?php if($page>1) { ?> 
<a href="photos.php?page=<?php echo ($page-1); ?>">Page précédente</a> - 
<?php } ?> 
<a href="photos.php?page=<?php echo ($page+1); ?>">Page suivante</a> 
<form method="post" action="photos.php"> 

<table><tr> 
<?php 
for ($i=0; $i<$nbresult; $i++) { 
  echo "<td>"; 
  echo "<img src='../../photosmembres/grandes/".$data[$i]."'><br/>"; 
  // Modif de l'input :
  echo "<input type='checkbox' name='suppr[]' value='".$data[$i]."' />";  
  echo "</td>\n"; 
  if($i%5==0 && $i!=0) 
    echo ("</tr><tr>"); 
} 
?> 
</tr></table> 
<input type="submit" value="Supprimer ces photos"/> 
</form> 
</body> 
</html> 
Tu n'as plus qu'à tester et nous dire si cela te convient :)

par artémis » 12 avr. 2006, 18:22

merci pr ton code! :)
si je t'envoi ma page serais tu prets a m'aider en m'insérent ton code au bon endroit?
merci d'avance!

par Ryle » 12 avr. 2006, 17:40

Il te faut faire un mix des deux... cela dit pourquoi utiliser un tableau associatif quand on fait un foreach sur un tableau à une dimension ?

Donc à changer au niveau du code html : donner le même nom à tous tes input et modifier leur valeur :
echo "<input type='checkbox' name='suppr[]' value='".$data[$i]."' />"; 
Et au niveau de ton foreach :
if($_POST['suppr']) { // si la variable est passée
  foreach($_POST['suppr'] as $value) { // pour chaque valeur
    $req1 = "SELECT id_membre, num FROM tem_photos WHERE nom='$value'"; 
    $result1 = mysql_query($req1) or die(mysql_error()); 
    while($row = mysql_fetch_assoc($result1)) { 
      if($row['num'] == 1) unlink("../../photosmembres/vignettes/".$row['id_membre'].".jpg"); 
    } // fin while

    $req2 = "DELETE FROM tem_photos WHERE nom='$value'"; 
    $result1 = mysql_query($req2) or die(mysql_error()); 
    unlink("../../photosmembres/grandes/$value"); 
  }// fin foreach
}// fin if

par Invité » 12 avr. 2006, 17:20

bin voilà j'ai essayé le premier code mais rien de nouveau
je viens ensuite de réessayer le second et s'affiche une erreure...
je ne sais plus trop quoi faire :(
voilà du travail rémunéré et fait par un soit disant programmeur....
génial après un mois je me rends compte que de plus en plus de choses bug...
d'ou vous comprendrez mon incompétance...lol
mais j'ai qd meme la volonté de faire fonctionner mon site!

par Erazer » 12 avr. 2006, 16:44

ben je sais qu'il est possible de faire une création automatique de variables à partir de la récupértion des informations d'un formulaire (configuration sous apache ?) mais je sais pas si ça s'applique aux données POST, GET, les deux, etc...
Hermès:
register_globals , tu parles de ceci?


artémis, essaie de faire ceci
foreach($_POST['suppr] as $key=>$value) 
mais je ne serais trop de conseiller de bien vérifier ce que contient la variable avant de générer ta requête.

par Hermès » 12 avr. 2006, 16:38

ben je sais qu'il est possible de faire une création automatique de variables à partir de la récupértion des informations d'un formulaire (configuration sous apache ?) mais je sais pas si ça s'applique aux données POST, GET, les deux, etc...

par artémis » 12 avr. 2006, 16:37

oki mlerci je vais essayer :wink:

par Erazer » 12 avr. 2006, 16:36

Bien vu Hermès, ce n'est pas si ça se trouve, c'est bien ça l'erreur :)

par Hermès » 12 avr. 2006, 16:18

fais un
echo "<pre>"; print_r($suppr); echo "</pre>";
au début de ton code (juste avant le foreach) et montre-nous ce que ça donne.
Ca se trouve c'est une mauvaise récupération de $suppr...

par artémis » 12 avr. 2006, 16:02

merci pr ton code mai ca affiche toujours la meme erreure :s

par Erazer » 12 avr. 2006, 14:59

echo "<input type='checkbox' name='suppr[".$data[$i]."]' value='' />"; 
par
echo "<input type='checkbox' name='suppr[]' value='".$data[$i]."' />"; 

par artémis » 12 avr. 2006, 14:53

voilà enfait sur un autre forum on m'a conseillé de mettre ce bout de code pr ma ligne 6:
if($tableau && is_array($tableau)) {
foreach($tableau as $cle => $value) {}
}
j'ai essayé mais ce ne fonctionne qd même pas...

voici le code de ma page (on ne sait jamais...)
<?php
require_once("../../phplib/connect.php");
require_once("../../phplib/requete.class.php");

if (!empty($_POST)) {
foreach($suppr as $key=>$value) {
$req1 = "SELECT id_membre, num FROM tem_photos WHERE nom='$key'";
$result1 = mysql_query($req1) or die(mysql_error());
while($row = mysql_fetch_assoc($result1)) {
if($row['num'] == 1) unlink("../../photosmembres/vignettes/".$row['id_membre'].".jpg");
}

$req2 = "DELETE FROM tem_photos WHERE nom='$key'";
$result1 = mysql_query($req2) or die(mysql_error());
unlink("../../photosmembres/grandes/$key");
}
}

if (isset($_GET['page'])) $page = $_GET['page'];
else $page = 1;

$nbparpage = 50;
$min = (($page-1)*$nbparpage);
$max = $min+$nbparpage;

$sql = "SELECT nom FROM tem_photos LIMIT $min, $max";
$result = mysql_query($sql) or die(mysql_error());
$c = 0;
$data = array();
while($row = mysql_fetch_assoc($result)) {
$data[$c] = $row['nom'];
$c++;
}
$nbresult = mysql_num_rows($result);
mysql_free_result($result);

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans nom</title>
</head>

<body>
<?php if($page>1) { ?>
<a href="photos.php?page=<?php echo ($page-1); ?>">Page précédente</a> - 
<?php } ?>
<a href="photos.php?page=<?php echo ($page+1); ?>">Page suivante</a>
<form method="post" action="photos.php">

<table><tr>
<?php
for ($i=0; $i<$nbresult; $i++) {
echo "<td>";
echo "<img src='../../photosmembres/grandes/".$data[$i]."'><br/>";
echo "<input type='checkbox' name='suppr[".$data[$i]."]' value='' />";
echo "</td>\n";
if($i%5==0 && $i!=0) echo ("</tr><tr>");
}
?>
</tr></table>
<input type="submit" value="Supprimer ces photos"/>
</form>
</body>
</html>
merci d'avance :wink:

par Erazer » 12 avr. 2006, 13:59

la variable $suppr doit être un tableau :)

vu ton erreur, ça n'est pas le cas :)

Help....

par artémis » 12 avr. 2006, 13:56

Bjr jpaul, c'est athena... ca te dis qqch :wink:
tu sais quoi plus j'avance ds le site plus je remarque des bug...
la programation php a été faite par un programmeur "proffessionel" soit disant.... et plus les jours avancent plus les erreures apparaissent....
est il possible qu'il ai laisser des codent permetant de faire tout buguer? et de rendre le site inutilisable?

par jpaul » 12 avr. 2006, 13:35

Excepté le fait que je mets un espace de chaque côté du => ta syntaxe est ce que j'aurais pu coder, ça a l'air correct.
Es-tu sûr que la variable $suppr est bien un tableau ?