[PHP/REQUETE] Ou mettre le DELETE?

Résolu/Fermé
Ebyss Messages postés 7 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 29 juin 2007 - 29 juin 2007 à 10:31
Ebyss Messages postés 7 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 29 juin 2007 - 29 juin 2007 à 16:07
Bonjour, me voila un peu désesperé.
Je vous explique mon soucis qui doit etre minime mais je bloque.

J'ai un ftp qui sera rempli que de photo, sous forme de dossier/sous dossier.

-J'ai une fonction qui me permet de lister.
-J'ai 2 listes déroulantes qui permettent de choisir dans quel répertoire on va "lister"
De la, pas de problème, j appuie sur le bouton "recherche" et j ai mes dossiers qui sont affichés dans une table sur la meme page.

(l'image /// le btn supprimer /// info de l image)

Le problème,
Et je souhaiterai que lorsque je clique sur le bouton supprimer une requete soit envoyer sur ma BD afin de la supprimer.

La requete à insérer..

$sql=DELETE FROM images WHERE url_images='$nom';
$sqk=mysql_query($sql, $connexion) or die ('erreur dans la requete sql');
mysql_close($connexion);

Je pensais au debut la mettre sur le Onclick mais cette fonction se passe du cote client donc ..
Faire un appel vers un autre fichier? mais je ne serai plus sur ma page..
Utiliser un formulaire? j ai test en vain..

J'en appelle a vous au grand programmeur !
Merci d'avance, Ebyss.



Un bout du code.

<?php
require("connect.php);

lister($nom_repertoire, $tab_image, $i, $subfolders);

// on trie le tableau par ordre alphabétique
array_multisort($tab_image, SORT_ASC);

// affichage des images (en 60 * 60 ici)
// affichage des photos sur 2 colonnes
for ($j = 0; $j < $i; $j++)
{
if($j % 1 == 0)
echo "\r\n\r\n\t<tr align=\"center\">";

// image1
$path = $tab_image[$j]; // chemin de l'image1
$image = '<img src="' . $path . '" width="90" height="90" border="0">';
$nom = $tab_image[$j]; // nom de l'image1
$infos_image = @getImageSize($path);


//dimension fenetre zoom image1
$typ1 = $infos_image[0] + 40;
$typ2 = $infos_image[1] + 40;

// affichage de l'image
echo "\r\n\r\n\t\t<td><a href=\"#\" onClick=\"window.open('$path', 'new', 'width=$typ1, height=$typ2, toolbar=no, location=no,directories=no, status=no, menubar=no,scrollbars=yes, copyhistory=no, resizable=yes')\">$image</a></td>";

// affiche le lien supprimer
echo "\r\n\r\n\t\t<td><a href=\"$_SERVER[PHP_SELF]?page=rep_photos&delete=1&path=$path&nom=$nom\"
$tete=$nom
onClick=\"if (confirm('Etes-vous sûr de vouloir supprimer $nom_image ?') == true) return true; else return false; \">
<img src = 'supprimer.jpg'/></a></td>";


// Affiche le nom de l'image & taille
echo "\r\n\r\n\t\t<td align='center' bgcolor='#cccccc'>$f2 $tab_image[$j]<br /> $infos_image[0]*$infos_image[1] $ff</td>";


if($j % 2 != 0)
echo "\r\n\t</tr>";
}
?>
A voir également:

14 réponses

Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
29 juin 2007 à 10:50
Salut,

Effectivement tu ne peux pas lancer ta requete coté client, par contre tu peux passer par une autre page.

Par exemple :

Dans ton lien supprimer
href=\"$_SERVER[PHP_SELF]?page=rep_photos&delete=1&path=$path&nom=$nom\" 

tu peux faire quelques chose du style :
href=\"effacer.php?path=$path&nom=$nom\" 


Et créer une page effacer.php qui contiendra par exemple


<?php
require("connect.php); 
$nom = $_GET['path']; // ou autre ca depend du contenu de url_image
$sql="DELETE FROM images WHERE url_images='$nom';"
$sqk=mysql_query($sql, $connexion);
mysql_close($connexion); 
if($sqk){
 echo 'La photo a été effacée';
}
else
{
echo 'Il y a eu une erreur ';
}
?>
<a href="ta_page_principale.php">Retourner à la liste des photos</a>

C'est un exemple il manque des vérifications.

0
Si tu veux faire ca de manière dynamique, tu peux utiliser AJAX (javascript) qui te permet d'éxécuter "dynamiquement" du PHP.

Sinon, pour faire plus simple, tu rappelles ta page, comme le fais ton lien, avec des paramètres "delete=1&path=$path&nom=$nom". Suffit de faire un test sur $_GET['delete'] puis de supprimer $_GET['path']
0
pourquoi ne pas la faire en forme de formulaire et au lieu d 'orienter ton formulaire versr une nouvelle page tu l'oriente vers la meme page?
et apres tu met ta requete.

tu met ta requete au départ avec une petite condition lui indiquant qu elle aille executer la requete que lorsque la variable est initialisé

C'est vrai y aura la page qui sera rechargé.

mais la conception est facile a faire et ca marche ;)
0
un petit
<form action="la_meme_page" method="post">
<input type="hidden" name="path" value="<?=$path?>" />
<input type="submit" name="supprimer" value="supprimer" onClick=\"if (confirm('Etes-vous sûr de vouloir supprimer $nom_image ?') == true) return true; else return false; \" />
</form>

pour le formulaire,

et au début de la même page,

if (isset($_POST['path'])
{
tu deletes $_POST['path'] ....
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ebyss Messages postés 7 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 29 juin 2007
29 juin 2007 à 11:22
Quelle vivacité, Je ne pensais pas avoir une réponse aussi rapidement, quelle agréable surprise. Merci à tous !

L'idée de recharger la page m'intéresse d'avantage que de passer par une autre page. Deja que le pannel d'administration est assez lourd.

Neanmoin dans mon fichier j'ai deja un <form> (Avec les 2listes déroulantes & le bouton rechercher)

Il ne va pas avoir un conflit ou autre à ce niveau?

Je parle, je parle pour vous répondre tellement je suis surpris, mais je vais aller tester cela.
Merci et je vous tiends au courant.
0
il faut tu nous montre ton code de ton formulaire et a quoi il sert ce formulaire

De plus moi j ai une page ou j ai 3 form (pke qu on click sur une liste déroulante ca va chercher une autre liste etc etc) permettant d'orienter l 'utilisateur en étape .

exemple :
<html>
<head><title>Administration</title></head>
<body>
<form name="formulaire" action="test.php?page=admin" method="post">
<select name="moderation">
<option value="societe">SOCIETE</option>
<option value="sdis">SDIS</option>
<option value="eau">EAU/ASSAINISSEMENT</option>
<option value="collectivite">COLLECTIVITE LOCALE</option>
<option value="logiciel">NOS LOGICIELS</option>
<option value="contact">CONTACT</option>
</select>
<input type="submit" value="valider" />
</form>

<?php
	/*récupération information du premier formulaire name=formulaire*/
	if(isset($_POST['moderation']))
	{
		echo("<form name=\"formulaire2\" action=\"test.php?page=admin\" method=\"post\">");
		switch ($_POST['moderation'])
		{
			case 'societe' :
			echo("<select name=\"partie\">
			<option value=\"description\">description</option>
			<option value=\"ressources\">ressources</option>
			<option value=\"metier\">métiers</option>
			</select>");
			break;
		        case 'sdis' :
			echo("<select name=\"partie\">
			<option value=\"solutionSDIS\">solution</option>
			<option value=\"explicationSDIS\">info SDIS</option>
			<option value=\"referencesSDIS\">references</option>
			<option value=\"faqSDIS\">faq</option>
			</select>");
                        break;
//etc etc
}
}
</form>
/*récupération information du second formulaire*/
if(isset($_POST['partie']))
{
  switch($_POST['partie'])
   {
        /*SOCIETE*/
	case 'description' :
	include(".\modifDesc.php");
	break;
	case 'ressources' :
	include(".\modifRessources.php");
	break;
etc etc 

et ainsi de suite, ca ne pause absolutment aucun probleme ^^ ;)
0
tu peux avoir un nombre illimité de formulaires dans ta page, il n'y a aucun problème ...
0
Ebyss Messages postés 7 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 29 juin 2007
29 juin 2007 à 11:49
Je t ai mis le code. apres edite car trop gros.


<body>
SUPPRESSION DES PHOTOGRAPHIES

<form action="formdelete.php" method="post">
Selection du repertoire:
<select name="rep">
<option value="rien"></option>
<option value="nature_morte">Nature Morte</option>
<option value="mode">Mode</option>
<option value="beaute">Beauté</option>
<option value="retouche">Retouche</option>
<option value="reportage">Reportage</option>
<option value="3d">3d</option>
</select>

<p>Choisir la sous catégorie pour Nature Morte:
<select name="sousrep">
<option value"rien"></option>
<option value="automobile">Automobile</option>
<option value="culinaire">Culinaire</option>
<option value="deco">Déco</option>
<option value="packshot">Packshot</option>
<option value="textile">Textile</option>
</select></p>

<input type="submit" value="Rechercher" />
<br /><br />
<a href="administration.php"><h2>Retour sur l'administration</h2></a>
</form>
<br />
<br />
<br />

<?php
voir premier post..
?>
</body>
</html>
0
Ca pausera jamais de probleme maintenant il faut qu'il y en ai l'utilité mais surtout que ca ne casse pas le reste du code ainsi que la navigation
tiens un exemple de page avec plusieurs formulaire et nomme le test.php
<html>
<head><title>Administration</title></head>
<body>
<form name="formulaire" action="test.php" method="post">
<select name="moderation">
<option value="societe">SOCIETE</option>
<option value="sdis">SDIS</option>
<option value="eau">EAU/ASSAINISSEMENT</option>
<option value="collectivite">COLLECTIVITE LOCALE</option>
<option value="logiciel">NOS LOGICIELS</option>
<option value="contact">CONTACT</option>
</select>
<input type="submit" value="valider" />
</form>

<?php
	/*récupération information du premier formulaire name=formulaire*/
	if(isset($_POST['moderation']))
	{
		echo("<form name=\"formulaire2\" action=\"test.php\" method=\"post\">");
		switch ($_POST['moderation'])
		{
			case 'societe' :
				echo("<select name=\"partie\">
				<option value=\"description\">description</option>
				<option value=\"ressources\">ressources</option>
				<option value=\"metier\">métiers</option>
				</select>");
				break;
			case 'sdis' :
				echo("<select name=\"partie\">
				<option value=\"solutionSDIS\">solution</option>
				<option value=\"explicationSDIS\">info SDIS</option>
				<option value=\"referencesSDIS\">references</option>
				<option value=\"faqSDIS\">faq</option>
				</select>");
				break;
			case 'eau':
				echo("<select name=\"partie\">
				<option value=\"sfEAU\">savoir-faire</option>
				<option value=\"solutionEAU\">solution</option>
				<option value=\"referencesEAU\">references</option>
				<option value=\"referencesEAUinternationale\">references Internationale</option>
				<option value=\"faqEAU\">faq</option>
				</select>");
				break;
			case 'collectivite' :
				echo("<select name=\"partie\">
				<option value=\"sfCO\">savoir-faire</option>
				<option value=\"solutionCO\">solution</option>
				<option value=\"referencesCO\">references</option>
				<option value=\"faqCO\">faq</option>
				</select>");
				break;
			case 'logiciel' :
				echo("<select name=\"partie\">
				<option value=\"produits\">Tous les produits</option>
				<option value=\"produitsEau\">eau</option>
				<option value=\"produitsSdis\">sdis</option>
				<option value=\"produitsCollectivite\">collectivités</option>
				</select>");
				break;
			case 'contact' :
				include(".\modifContact.php");
				break;
		}
		echo("<input type=\"submit\" value=\"valider\">");
		echo("</form>");
	}
?>
<?
/*récupération information du second formulaire*/
if(isset($_POST['partie']))
{
	switch($_POST['partie'])
	{
		/*SOCIETE*/
	case 'description' :
		include(".\modifDesc.php");
		break;
	case 'ressources' :
		include(".\modifRessources.php");
		break;
	case 'metier' :
		include(".\modifMetier.php");
		break;
		/*SDIS*/
	case 'solutionSDIS' :
		include(".\modifSdisPrin.php");
		break;
	case 'explicationSDIS' :
		include(".\modifSdisExpl.php");
		break;
	case 'referencesSDIS' :
		include(".\modifRefSdis.php");
		break;
	case 'ressources' :
		$faq="sdis";
		include(".\modifFaq.php");
		break;
		/*EAU/ASSAINISSEMENT*/
	case 'sfEAU' :
		include(".\modifEau.php");
		break;
	case 'solutionEAU' :
		echo("<form name=\"formulaire3\" action=\"test.php\" method=\"post\">");
		echo("<select name=\"solution\">
		<option value=\"GestionC\">Gestion-Clientele</option>
		<option value=\"GestionR\">Gestion Réseau</option>
		<option value=\"GestionU\">Gestion Urbaine</option>
		<option value=\"DISCT\">DICT</option>
		</select>"); 
		echo("<input type=\"submit\" value=\"valider\">");
		echo("</form>");
		break;
	case 'referencesEAU' :
		include(".\modifEauRef.php");
		break;
	case 'referencesEAUinternationale' :
		include(".\modifEauRefCarte.php");
		break;
	case 'faqEAU' :
		include(".\modifFaq.php");
		break;
		/*COLLECTIVITE LOCALE*/
	case 'sfCO' :
		include(".\modifMetier.php");
		break;
	case 'solutionCO' :
		echo("<form name=\"formulaire3\" action=\"test.php\" method=\"post\">");
		echo("<select name=\"solution\">
		<option value=\"Gestion\">Gestion</option>
		<option value=\"ServiceTechnique\">Services Technique</option>
		</select>");
		echo("<input type=\"submit\" value=\"valider\">");
		echo("</form>");
		break;
	case 'referencesCO' :
		include(".\modifMetier.php");
		break;
	case 'faqCO' :
		include(".\modifRessources.php");
		break;
		/*PRODUITS*/
	case 'produits' :
		include(".\modifProd.php");
		break;
	case 'produitsEau' :
		$categorie='eau';
		include(".\modifProd.php");
		break;
	case 'produitsSdis' :
		$categorie='sdis';
		include(".\modifProd.php");
		break;
	case 'produitsCollectivite' :
		$categorie='coll';
		include(".\modifProd.php");
		break;
	}
}
?>
<?
/*récupération information de la sous partie solution*/
if(isset($_POST['solution']))
{
	/*SOLUTION  EAU*/
	switch($_POST['solution'])
	{
		case 'DICT' :
			include(".\modifDesc.php");
			break;
		case 'GestionU' :
			include(".\modifRessources.php");
			break;
		case 'GestionC' :
			echo("<a href=\"test.php?page=modif&cat=watErp\">WatErp</a><br />");
			echo("<a href=\"test.php?page=modif&cat=CCS\">Centre Service Client</a>");
			break;
		case 'GestionR' :
			echo("<a href=\"test.php?page=modif&cat=geoAep\">GeoAep</a><br />");
			echo("<a href=\"test.php?page=modif&cat=geoAsst\">GéoAssainissement</a>");
			break;
			/*SOLUTION COLLECTIVITEES LOCALE*/
		case 'Gestion' :
			echo("<form name=\"formulaire4\" action=\"test.php\" method=\"post\">");
			echo("<select name=\"gestionColl\">
			<option value=\"epic\">Epic</option>
			<option value=\"Mairie\">Mairie</option>
			</select>");
			echo("<input type=\"submit\" value=\"valider\">");
			echo("</form>");
			break;
		case 'ServiceTechnique' :
			echo("<a href=\"test.php?page=modif&cat=urbaine\">Urbaine</a><br />");
			echo("<a href=\"test.php?page=modif&cat=carto\">Cartographie</a><br />");
			echo("<a href=\"test.php?page=modif&cat=sig\">Sig</a>");
			break;
	}

}
if(isset($_POST['gestionColl']))
{
	if($_POST['gestionColl']=='epic')
	{
		echo("<a href=\"test.php?page=modifEpic&cat=sal\">Gestion des Salaires des Epic</a><br />");
		echo("<a href=\"test.php?page=modifEpic&cat=fac\">Facturation des Epic</a><br />");
		echo("<a href=\"test.php?page=modifEpic&cat=comp\">Comptabilité des Epic</a><br />");
	}
	else
	{
		include(".\modifRessources.php");
	}
}
?>
</body>
</html>


Tu n'auras pas les autres pages appellé qui s'afficheront mais ca peut te donner des idées sur l'utilité de plusieurs formulaire dans une page.
Ce code est loin d'etre totalement fini, il faut que je debug deux trois petites betise, et que j 'ameliore sa navigation
0
Ebyss Messages postés 7 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 29 juin 2007
29 juin 2007 à 12:50
Je ne savaiis que la perte des cheuveux peut etre du au php.

En fait je ne vois pas pourquoi mettre un second formulaire, je t explique vu que j'utilise une bouclie pour afficher la photo/l'image supprimer/ l'info de la photo (chemin+taille)
Je ne vois pas comment tester le path puisque forcement il y en aura un ou plusieurs vu que c est une boucle.
J'ai tenté de rechercher ca sur le net en vain.

Ou je n ai pas compris le sens de la fonction!?

Car en fait je veux en meme temps supprimer L'image sur le ftp et le tuple/ligne de ma table
0
Hors de la boucle (même avant)

if (isset($_POST['path']) && isset($_POST['nom']))
{
je supprime dans le ftp $_POST['path'] et le tuple $_POST['nom']
}


Dans la boucle, donc pour chaque photo :

<form action='la page actuelle' method='post'>
<input type='hidden' name='nom' value='$nom' />
<input type='hidden' name='path' value='$path' />
<input type='submit' name='supprimer' value='supprimer' />
</form>

Pour chaque image tu auras un formulaire, représenté par un bouton (les champs hidden étant cachés), qui enverra le nom et le path de l'image correspondante, que tu récupéreras au rechargement dans la première partie du code que j'ai donné.

C'est plus clair ?
0
Ebyss Messages postés 7 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 29 juin 2007
29 juin 2007 à 13:22
Bon ca marche enfin. ce qui nous tue pas, nous rend plus fort ..

En fait j ai fait ca au debut de ma page en suivant tes conseils Ben . (je n avais pas vu ton dernier message #11) et encore merci à Bowbow13 !.

<?php
require("connect.php");
if(isset($_GET['delete']))
{

$nom=$_GET['path'];
require("connect.php");
$sql="DELETE FROM images WHERE img_url='$nom';";
$sqk=mysql_query($sql, $connexion);
mysql_close($connexion);
}
?>

et ma boucle qui me montre la photo + img delete+info de la photo

Je l 'ai mis en <form>
ce qui nous donne

echo "<form action='formdelete.php' method='post'>";

// affichage de l'image
echo "\r\n\r\n\t\t<td><a href=\"#\" onClick=\"window.open('$path', 'new', 'width=$typ1, height=$typ2, toolbar=no, location=no,directories=no, status=no, menubar=no,scrollbars=yes, copyhistory=no, resizable=yes')\">$image</a></td>";

// affiche le lien supprimer
echo "\r\n\r\n\t\t<td><a href=\"$_SERVER[PHP_SELF]?page=rep_photos&delete=1&path=$path&nom=$nom\"
onClick=\"if (confirm('Etes-vous sûr de vouloir supprimer $nom_image ?') == true) return true; else return false; \">
<img src = 'supprimer.jpg'/></a></td>";


// Affiche le nom de l'image & taille
echo "\r\n\r\n\t\t<td align='center' bgcolor='#cccccc'>$f2 $tab_image[$j]<br /> $infos_image[0]*$infos_image[1] $ff</td>";
echo "</form>" ;

if($j % 2 != 0)
echo "\r\n\t</tr>";
?>

voila. Je ne sais pas si c est une bonne méthode? j'attends vos reponses pour modifier si besoin, et je mettrai le post en probleme resolu.
Je vous remercie encore énormement pour cette aide, vraiment géniale et surtout extrémement rapide.

Bon maintenant que ceci est résolu, va falloir que j'intègre du code pour creer un fichier xml pour le reprendre sous flash :).

Encore merci !
Ebyss.
0
euh
ben, tu t embete tu fais
tu ouvre ton formulaire au dessus de la boucle, dans la boucle tu met un :
dans la boucle il faut un repaire du style $passage qui s'incremente de un a chaque passage
<input type="radio" name="etat$passage" value="valide" />
<input type="radio" name ="etat$passage" value ="supprimer" />

et sortie de la boucle tu ferme ton formulaire et apres tu traite tout en stock par :


boucle(for c mieux)
{
$etat="etat$pass";//$passs s incremente de un(variable du for)
if($_POST["$etat"]=='valide')
{
alors tu incremente ta BDD
}
else
{
tu supprime la photo
}
}
et voila un formulaire, un bouton de validation et un traitement en stock des données.

Pour la boucle for tu calcule la valeur maximale lorsque ta requete sql s'execute pour savoir le nombre de photo. et c'est bon

ps: si ca peut encore t'aider Ebyss, cette méthode reprend l'idée de ben, mais simplifie car traite toutes les actions d'un coup (ex: si tu a 4 photo a supprimer et 8 a garder une seule validation permet de faire tout)
0
Ebyss Messages postés 7 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 29 juin 2007
29 juin 2007 à 14:45
oki merci je vais tenter d arranger ca !
0
tiens si tu veux un exemple :
<html>
<body>
<?
//initialisation de la variable qui va compter
$num=0;
//CONNECTION A LA BASE DE DONNEE
if($connectDB)
{
	/*indice pour recuperer la variable du formulaire requete1.php*/
	$result = @mysql_query("SELECT * FROM `inscriptclient` ORDER BY 'date'");
	if(!$result)
	{
		echo("La base de donnée est actuellement vide");
	}
	else
	{
		/*récupération du nombre de paragraphe à partir de la base de donnée*/
		echo("<form action=\"moderation.php\" method=\"post\" name=\"moderation\">");
		echo("<table width=\"100%\">");
		while($affiche = mysql_fetch_row($result))
		{
//RECUPERATION DES INFORMATION QUI VONT ETRE AFFICHER
			/*formulaire et affichage des informations des inscriptions*/
			$choix="choix$num"; //nom du input
			echo("<tr><td><input type=\"radio\" name=\"choix$num\" value=\"valide\" /> valider</td><td><input type=\"radio\" name=\"$choix\" value=\"supprime\"/>supprimer</td><td align=\"center\"><b>L'inscription $num</b></td></tr>");
//MON FORMULAIRE QUI VA ETRE AFFICHER
			$num++;
		}
		echo("</table>");
		echo("<input type=\"submit\" name=\"validation\" value=\"valider\"/>");
		echo("</form");
	}
	/*Boucle de récupération des valeurs du formulaire mais probleme dedans au niveau des passages*/
	for($passage=0;$passage<$num;$passage++)
	{
		$nbDroit=0;
		$choix="choix$passage";
		$nb=$passage+1;
		//debugage
		echo("Vous avez eu $nb choix a faire<br><br>");
		if(isset($_POST["$choix"]))
		{
				if($_POST["$choix"]=="valide")
				{
//J'INCREMENTE DANS LA BASE DE DONNE
				}
				else
				{
//JE SUPPRIME DE MA BASE DE DONNE
				}
			}
		}
	}
}
?>
</body>
</html>


Voici un exemple de code....... tres tres tres tres tres alleger, ca va t aider a comprendre et ca va te faire une idée de ce que tu dois faire si l idee t interesse
0
Ebyss Messages postés 7 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 29 juin 2007
29 juin 2007 à 16:07
merci !
0